Lese-Ansicht

Ubuntu 24.04

Ubuntu 24.04 alias Noble Numbat alias Snubuntu ist fertig. Im Vergleich zur letzten LTS-Version gibt es einen neuen Installer, der nach einigen Kinderkrankheiten (Version 23.04) inzwischen gut funktioniert. Ansonsten kombiniert Ubuntu ein Kernsystem aus Debian-Paketen mit Anwendungsprogramme in Form von Snap-Paketen. Für die einfache Anwendung bezahlen Sie mit vergeudeten Ressourcen (Disk Space + RAM).

Der Ubuntu-Desktop mit Gnome 46

Installation

Das neue Installationsprogramm hat bei meinen Tests gut funktioniert, inklusive LVM + Verschlüsselung. Einfluss auf die Partitionierung können Sie dabei allerdings nicht nehmen. (Das Installationsprogramm erzeugt eine EFI-, eine Boot- und eine LVM-Partition, darin ein großes Logical Volume.) Zusammen mit der Installation erledigt der Installaer gleich ein komplettes Update, was ein wenig Geduld erfordert.

Standardmäßig führt das Programm eine Minimalinstallation durch — ohne Gimp, Thunderbird, Audio-Player usw. Mit der Option Vollständige Option verhält sich der Installer ähnlich wie in der Vergangenheit. Ein wenig absurd ist, dass dann einige Programme als Debian-Pakete installiert werden, während Ubuntu sonst ja bei Anwendungsprogrammen voll auf das eigene Snap-Format setzt. Wenn Sie Ubuntu installieren, entscheiden Sie sich auch für Snap. Insofern ist es konsequenter, eine Minimalinstallation durchzuführen und später die entsprechenden Snaps im App Center selbst zu installieren.

Neuer Minimalismus beim Installationsumfang
Zusammenfassung einer LVM-Installation mit Verschlüsselung
Experimentelle Optionen zeigen, wohin die Reise beim Installer geht

Snaps + Ubuntu = Snubuntu

Auf das Lamentieren über Snaps verzichte ich dieses Mal. Wer will, kann diesbezüglich meine älteren Ubuntu-Tests nachlesen. Für Version 24.04 hat Andreas Proschofsky in derstandard.at alles gesagt, was dazu zu sagen ist. Der größte Vorteil von Snaps für Canonical besteht darin, dass sich der Wartungsaufwand für Desktop-Programme massiv verringert: Die gleichen Snap-Pakete kommen in diversen Ubuntu-Versionen zum Einsatz.

Das App Center kann sich selbst nicht aktualisieren. Sie bekommen App-Center-Updates aber früher oder später als Hintergrund-Updates.

Netplan 1.0

Mit Ubuntu 24.04 hat Netplan den Sprung zu Version 1.0 gemacht. Größere Änderungen gab es keine mehr, die Versionsnummer ist eher ein Ausdruck dafür, dass Canonical die Software nun als stabil betrachtet. Wie bereits seit Ubuntu 23.10 ist Netplan das Backend zum NetworkManager. Netzwerkverbindungen werden nicht in /etc/NetworkManager/system-connections/ gespeichert wie auf den meisten anderen Distributionen, sondern als /etc/netplan/90-NM-*.yaml-Dateien (siehe auch meinen Bericht zu Ubuntu 23.10).

HEIC-Unterstützung

Ubuntu 24.04 kommt out-of-the-box mit HEIC/HEIF-Dateien zurecht, also mit am iPhone aufgenommenen Fotos. Vor einem dreiviertel Jahr hatte ich noch über entsprechende Probleme berichtet. Im Forum wurde damals kritisiert, dass meine Erwartungshaltung zu hoch sei. Aber, siehe da: Es geht!

Versionsnummern

Basis              Programmierung    Server
---------------    ---------------   --------------
Kernel      6.8    bash        5.2   Apache     2.4
glibc      2.39    docker.io  24.0   CUPS       2.4
Gnome        46    gcc        13.2   MariaDB  10.11
X-Server   21.1    git        2.43   MySQL      8.0
Wayland    1.34    Java         21   OpenSSH    9.6
Mesa       24.0    PHP         8.3   qemu/KVM   8.2
Systemd     255    Python     3.12   Postfix    3.8
NetworkMan 1.46                      Samba     4.19
GRUB       2.12

Bewertung

Seit ich Ubuntu auf dem Desktop kaum mehr nutze, habe ich mehr Distanz gewonnen. So fällt mein Urteil etwas milder aus ;-)

Für Einsteiger ist Ubuntu eine feine Sache: In den meisten Fällen funktioniert Ubuntu ganz einfach. Das gilt sowohl für die Unterstützung der meisten Hardware (auch relativ moderne Geräte) als auch für die Installation von Programmen, die außerhalb der Linux-Welt entwickelt werden (VSCode, Android Studio, Spotify etc.). Was will man mehr? Ubuntu sieht zudem in der Default-Konfiguration optisch sehr ansprechend aus, aus meiner persönlichen Perspektive deutlich besser als die meisten anderen Distributionen. Ich bin auch ein Fan der ständig sichtbaren seitlichen Task-Leiste. Schließlich zählt Canonical zu den wenigen Firmen, die noch Geld in die Linux-Desktop-Weiterentwicklung investieren; dafür muss man dankbar sein.

Alle, die einen Widerwillen gegenüber Snap verspüren, sollten nicht über Ubuntu/Canonical schimpfen, sondern sich für eine der vielen Alternativen entscheiden: Arch Linux, Debian, Fedora oder Linux Mint. Wer nicht immer die neueste Version braucht und sich primär Langzeit-Support wünscht, kann auch AlmaLinux oder Rocky Linux in Erwägung ziehen.

Quellen/Links

Tests

  •  

📚 »Raspberry Pi« (8. Aufl.) ist erschienen

Unser Handbuch zum Raspberry Pi ist soeben in der 8. Auflage erschienen:

Umfang: 1045 Seiten
Ausstattung: Farbdruck, Hard-Cover, Fadenbindung
ISBN: 978-3-8362-9666-3
Preis: Euro 44,90 (in D inkl. MWSt.)
Autoren: Michael Kofler, Christoph Scherbeck und Charly Kühnast

pi-cover

Umfassendes Raspberry-Pi-Know-how!

  • Linux mit dem Raspberry Pi.
  • Der Raspberry Pi als Multimedia-Center und Spiele-Konsole
  • Programmierung: Einführung, Grundlagen und fortgeschrittene Techniken, Schwerpunkt Python, außerdem bash, PHP, C, Wolfram Language.
  • Elektronik und Komponenten: von LEDs zu Schrittmotoren, jede Art von Sensoren (Ultraschall, Wasserstand etc.), Bussysteme, Erweiterungen (Gertboard & Co.).
  • Projekte: Home Automation, RFID-Reader, Stromzähler auslesen, WLAN- und TOR-Router, Luftraumüberwachung, NAS etc.
  • Raspberry Pi Pico: MicroPython-Programmiertechniken, CO2-Ampel, Ultraschall-Entfernungsmessung
  • Mit Geleitwort von Eben Upton

Highlights der 8. Auflage

  • aktualisiert im Hinblick auf die neuen Modelle Raspberry Pi 5, Raspberry Pi Zero 2 und Raspberry Pico W
  • berücksichtigt Raspberry Pi OS »Bookworm«
  • PCIe-SSD statt SD-Karte
  • PXE-Boot
  • GPIO Reloaded: Neue Bibliotheken zur GPIO-Programmierung in der Bash, in Python und in C
  • Webserver auf dem Pico W realisieren
  • Home Assistant

Mehr Details zum Buch finden Sie hier.

  •  

Sprachmodelle (LLMs) lokal ausführen

ChatGPT, Copilot & Co. verwenden Large Language Models (LLMs). Diese werden auf leistungsstarken Servern ausgeführt und als Cloud-Services angeboten. Das funktioniert wunderbar. Aber nicht jeder will Daten, Text und Code ständig in die Cloud hochladen. Kann man also — mit »gewöhnlicher« Hardware — LLMs auch lokal ausführen?

Tatsächlich ist das verblüffend einfach. Das Tool der Wahl heißt Ollama. Was Docker für Container ist, ist Ollama für LLMs!

Ollama kann ziemlich mühelos unter Linux, macOS und Windows installiert werden. Unter Windows und macOS starten Sie Ollama als Hintergrunddienst mit einer winzigen grafischen Oberfläche (im Prinzip nur ein Icon, das den Status anzeigt). Unter Linux richten Sie den Dienst mit systemctl ein:

systemctl enable --now ollama
Ollama läuft im Terminal, kann aber auch per API genutzt werden (z.B. zur Realisierung einer Web-Schnittstelle).

Ollama anwenden

Jetzt können Sie Ollama mit dem gleichnamigen Kommando im Terminal ausführen. Mit ollama run <llmname> installieren Sie eines der öffentlich verfügbaren Sprachmodelle (mehr dazu im nächsten Abschnitt) und können dann im Textmodus Kommandos ausführen:

ollama run llama2

>>> I need a regex to verify a date in US format. Can you help?

Of course! To match a date in the format of "MM/DD/YYYY" (month-day-year) 
or "MM/DD/YYYY HH:MM AM/PM", you can use the following regular expression:

\b(\d{1,2}/\d{1,2}/\d{4})|(\d{1,2}/\d{1,2}/\d{4} \d{0,2})?\b

Here's a breakdown of how this regex works:

* \b: Matches a word boundary (the start or end of a word) to ensure 
  we're matching the entire date field.

* (\d{1,2}/\d{1,2}/\d{4}): Matches the month/day/year format. The 
  (\d{1,2}) captures the month and day as individual digits (0-2 
  digits for the month and 1-2 digits for the day). The / separates 
  the date components.

* |: Or, used to match the alternative format.

* (\d{1,2}/\d{1,2}/\d{4} \d{0,2})?: Matches the month/day/year with 
  time format. The (\d{1,2}) captures the month and day as individual 
  digits (0-2 digits for the month and 1-2 digits for the day). The / 
  separates the date components. The \d{0,2} matches the time component 
  (0-2 digits representing the hour and minute).

* \b: Matches a word boundary to ensure we're matching the entire date field again.

Note that this regex will match both US and international dates in the 
"MM/DD/YYYY" format, as well as dates in the "MM/DD/YYYY HH:MM AM/PM" 
format. If you need a more specific format (e.g., only US dates), 
feel free to modify the regex accordingly.

Manche Sprachmodelle können auch Deutsch (nochmals llama2), wenngleich die sprachliche Qualität mitunter nur mittelmäßig ist.

>>> Was ist der Dopplereffekt?

Der Dopplereffekt ist ein physikalischer Effekt, der durch die Beugung von
Lichtwellen verursacht wird, wenn diese durch eine mediummässige Materie
passt. In einer bestimmten Umgebung oder Situation kann das Licht, das durch
eine bestimmte Fläche oder ein Objekt passt, sich "verlangsamen" und eine
Dopplereffekthelligkeit erzeugen.

Der Dopplereffekt ist ein spezifischer Effekt, der auf der Beugung von
Lichtwellen basiert. Wenn Licht durch ein Medium passt, wird es durch die Faser
des Mediums beugt und umgestaltet. Die Intensität des Lichts, das durch ein
Medium passt, kann sich durch den Dopplereffekt ändern.

Im Alltag können wir den Dopplereffekt beispielsweise bei der Anähnlichkeit von
Objekten in einer Ferne sehen. Wenn ein Auto oder eine andere Objekte in der
Ferne auf uns zukommt, wird es durch die Luft des Raumes beugt und erscheint
größer und weiter weg, als es tatsächlich ist.

Der Dopplereffekt kann auch in anderen Bereichen wie der Optik, Elektrotechnik
oder Medizin verwendet werden. Zum Beispiel können Dopplereffekte in der
Medizin verwendet werden, um die Blutungen in einem Körperteil zu bestimmen.

Es gibt verschiedene Arten von Dopplereffekten, darunter:

* LichtDopplereffekt: Der Effekt, den das Licht erzeugt, wenn es durch ein
  Medium passt.
* ZeitDopplereffekt: Der Effekt, den die Zeit erzeugt, wenn sie durch ein
  Objekt oder eine bestimmte Umgebung verändert wird.
* Räumliche Dopplereffekte: Der Effekt, den die räumliche Position von Objekten
  oder der Standort eines Beobachters auf die Erscheinung des Dopplereffekts
  ausübt.

Insgesamt ist der Dopplereffekt ein interessanter und wichtiger
physikalischerEffekt, der in vielen Bereichen der Wissenschaft und Technologie
Verwendung findet.

Ollama stellt seine Funktionen über eine REST-API zur Verfügung und kann somit lokal auch durch eigene Scripts und Editor-Plugins (z.B. Continue für VSCode) genutzt werden. Natürlich gibt es auch Module/Bibliotheken für diverse Sprachen, z.B. für Python.

Öffentliche Sprachmodelle

Die bekanntesten Sprachmodelle sind zur Zeit GPT-3.5 und GPT-4. Sie wurden von der Firma openAI entwickelt und sind die Basis für ChatGPT. Leider sind die aktellen GPT-Versionen nicht öffentlich erhältlich.

Zum Glück gibt es aber eine Menge anderer Sprachmodelle, die wie Open-Source-Software kostenlos heruntergeladen und von Ollama ausgeführt werden können. Gut geeignet für erste Experimente sind llama2, gemma und mistral. Einen Überblick über wichtige, Ollama-kompatible LLMs finden Sie hier:

https://ollama.com/library

Noch viel mehr LLMs finden Sie auf HuggingFace, einer öffentlichen Plattform für KI-Forscher und -Anwender:

https://huggingface.co/models

Viele Sprachmodelle stehen in unterschiedlicher Größe zur Verfügung. Die Größe wird in der Anzahl der Parameter gemessen (7b = 7 billions = 7 Milliarden). Die Formel »größer ist besser« gilt dabei nur mit Einschränkungen. Mehr Parameter versprechen eine bessere Qualität, das Modell ist dann aber langsamer in der Ausführung und braucht mehr Platz im Arbeitsspeicher. Die folgende Tabelle gilt für llama2, einem frei verfügbaren Sprachmodell der Firma Meta (Facebook & Co.).

Name.        Parameter     Größe
----------  ----------  --------
llama2           7 Mrd.     4 GB
llama2:13b      13 Mrd.     7 GB
llama2:70b      70 Mrd.    39 GB

Wenn Sie llama2:70b ausführen wollen, sollte Ihr Rechner über 64 GB RAM verfügen.

Update: Quasi zugleich mit diesem Artikel wurde llama3 fertiggestellt (Details und noch mehr Details). Aktuell gibt es zwei Größen, 8b (5 GB) und 80b (40 GB).

Bildverarbeitung

Ollama kann aber auch KI-Modelle zur Bildverarbeitung ausführen, z.B. LLaVA (siehe https://ollama.com/blog/vision-models).

ollama run llava:13b

>>> describe this image: raspap3.jpg 

Added image 'raspap3.jpg' 

The image shows a small, single-board computer like the Raspberry Pi 3, which is 
known for its versatility and uses in various projects. It appears to be connected 
to an external device via what looks like a USB cable with a small, rectangular
module on the end, possibly an adapter or expansion board. This connection
suggests that the device might be used for communication purposes, such as
connecting it to a network using an antenna. The antenna is visible in the
upper part of the image and is connected to the single-board computer by a
cable, indicating that this setup could be used for Wi-Fi or other wireless
connectivity.

The environment seems to be an indoor setting with wooden flooring, providing a
simple and clean background for the electronic components. There's also a label
on the antenna, though it's not clear enough to read in this image. The setup
is likely part of an electronics project or demonstration, given the simplicity
and focus on the connectivity equipment rather than any additional peripherals
or complex arrangements.

Eigentlich eine ganz passable Beschreibung für das folgende Bild!

Auf dem Bild ist ein Raspberry Pi 3B+ mit angeschlossenem USB-WLAN-Adapter und Netzwerkkabel zu sehen. Der WLAN-Adapter ist über einen der USB-Ports verbunden, während das gelbe Ethernet-Kabel in den LAN-Port eingesteckt ist. Der Raspberry Pi wird zusätzlich über ein schwarzes Micro-USB-Kabel mit Strom versorgt.
Raspberry Pi 3B+ mit USB-WLAN-Adapter

Praktische Erfahrungen, Qualität

Es ist erstaunlich, wie rasch die Qualität kommerzieller KI-Tools — gerade noch als IT-Wunder gefeiert — zur Selbstverständlichkeit wird. Lokale LLMs funktionieren auch gut, können aber in vielerlei Hinsicht (noch) nicht mit den kommerziellen Modellen mithalten. Dafür gibt es mehrere Gründe:

  • Bei kommerziellen Modellen fließt mehr Geld und Mühe in das Fine-Tuning.
  • Auch das Budget für das Trainingsmaterial ist größer.

  • Kommerzielle Modelle sind oft größer und laufen auf besserer Hardware. Das eigene Notebook ist mit der Ausführung (ganz) großer Sprachmodelle überfordert. (Siehe auch den folgenden Abschnitt.)

Wodurch zeichnet sich die geringere Qualität im Vergleich zu ChatGPT oder Copilot aus?

  • Die Antworten sind weniger schlüssig und sprachlich nicht so ausgefeilt.
  • Wenn Sie LLMs zum Coding verwenden, passt der produzierte Code oft weniger gut zur Fragestellung.

  • Die Antworten werden je nach Hardware viel langsamer generiert. Der Rechner läuft dabei heiß.

  • Die meisten von mir getesteten Modelle funktionieren nur dann zufriedenstellend, wenn ich in englischer Sprache mit ihnen kommuniziere.

Die optimale Hardware für Ollama

Als Minimal-Benchmark haben Bernd Öggl und ich das folgende Ollama-Kommando auf diversen Rechnern ausgeführt:

ollama run  llama2 "write a python function to extract email addresses from a string" --verbose

Die Ergebnisse dieses Kommandos sehen immer ziemlich ähnlich aus, aber die erforderliche Wartezeit variiert beträchtlich!

Update: Grafische Darstellung der Geschwindigkeit unter https://kofler.info/mini-benchmark-fuer-die-ausfuehrung-lokaler-sprachmodelle/

Lenovo T16, Linux. 12th Gen Intel i5-1250P cores=12, 32 GiB RAM, Alder Lake-P Integrated Graphics Controller

total duration:       4m7.981004535s
load duration:        979.201µs
prompt eval count:    31 token(s)
prompt eval duration: 3.061771s
prompt eval rate:     10.12 tokens/s
eval count:           478 token(s)
eval duration:        4m4.913456s
eval rate:            1.95 tokens/s

Lenovo P1 (2018), Linux. Intel i8750H 6 cores / 12 threads, 32 GiB RAM, NVIDIA Quadro P1000

Die GPU wurde nicht genutzt.

total duration:       1m48.168754835s
load duration:        204.369µs
prompt eval duration: 146.12ms
prompt eval rate:     0.00 tokens/s
eval count:           629 token(s)
eval duration:        1m48.021933s
eval rate:            5.82 tokens/s 

MacBook Air 2020, M1, 8GiB RAM

total duration:       52.303529042s
load duration:        4.741221334s
prompt eval count:    31 token(s)
prompt eval duration: 331.908ms
prompt eval rate:     93.40 tokens/s
eval count:           567 token(s)
eval duration:        47.211456s
eval rate:            12.01 tokens/s

MacBook Air M2 2023, 24 GB

total duration:       35.853232792s
load duration:        5.297790333s
prompt eval count:    32 token(s)
prompt eval duration: 211.272ms
prompt eval rate:     151.46 tokens/s
eval count:           617 token(s)
eval duration:        30.343375s
eval rate:            20.33 tokens/s

MacBook Pro M3 Pro 2023, 36 GB

total duration:       28.392226667s
load duration:        5.532561667s
prompt eval count:    31 token(s)
prompt eval duration: 119.313ms
prompt eval rate:     259.82 tokens/s
eval count:           667 token(s)
eval duration:        22.740198s
eval rate:            29.33 tokens/s 

Bzw. mit llama3:8b: 26,6 tokens/s.

Windows PC i7 64GB RAM + Nvidia 3070

total duration:       12.9912206s
load duration:        5.2628606s
prompt eval count:    31 token(s)
prompt eval duration: 83.136ms
prompt eval rate:     372.88 tokens/s
eval count:           514 token(s)
eval duration:        7.644094s
eval rate:            67.24 tokens/s 

Linux PC, AMD Ryzen 5 7600 64 GB RAM + Nvidia RTX3090 mit 24 GB RAM

(mit llama3)

total duration:       5.008054596s
load duration:        899.374µs
prompt eval duration: 17.275ms
prompt eval rate:     0.00 tokens/s
eval count:           473 token(s)
eval duration:        4.948306s
eval rate:            95.59 tokens/s

Grundsätzlich kann Ollama GPUs nutzen (siehe auch hier und hier). Im Detail hängt es wie immer vom spezifischen GPU-Modell, von den installierten Treibern usw. ab. Wenn Sie unter Linux mit einer NVIDIA-Grafikkarte arbeiten, müssen Sie CUDA-Treiber installieren und ollama-cuda ausführen. Beachten Sie auch, dass das Sprachmodell im Speicher der Grafikkarte Platz finden muss, damit die GPU genutzt werden kann.

Apple-Rechner mit M1/M2/M3-CPUs sind für Ollama aus zweierlei Gründen ideal: Es gibt keinen Ärger mit Treibern, und der gemeinsame Speicher für CPU/GPU ist vorteilhaft. Die GPUs verfügen über so viel RAM wie der Rechner. Außerdem bleibt der Rechner lautlos, wenn Sie Ollama nicht ununterbrochen mit neuen Abfragen beschäftigen. Allerdings verlangt Apple leider vollkommen absurde Preise für RAM-Erweiterungen.

Zum Schluss noch eine Bitte: Falls Sie Ollama auf Ihrem Rechner installiert haben, posten Sie bitte Ihre Ergebnisse des Kommandos ollama run llama2 "write a python function to extract email addresses from a string" --verbose im Forum!

Quellen/Links

Weitere Links zum Thema GPU/NPU-Nutzung:

  •  

RasAP – Der perfekte Ad-Blocker zuhause

Es gibt unzählige Möglichkeiten, die Web-Werbung zu minimieren. Die c’t hat kürzlich ausführlich zum Thema berichtet, aber die entsprechenden Artikel befinden sich auf heise.de hinter einer Paywall. Und heise.de ist ja mittlerweile auch eine Seite, die gefühlt mindestens so viel Werbung in ihre Texte einbaut wie spiegel.de. Das ist schon eine Leistung … Entsprechend lahm ist der Seitenaufbau im Webbrowser.

Egal, alles, was Sie wissen müssen, um zuhause einigermaßen werbefrei zu surfen, erfahren Sie auch hier — kostenlos und werbefrei :-)

Auf dem Bild ist ein Raspberry Pi 3B+ mit angeschlossenem USB-WLAN-Adapter und Netzwerkkabel zu sehen. Der WLAN-Adapter ist über einen der USB-Ports verbunden, während das gelbe Ethernet-Kabel in den LAN-Port eingesteckt ist. Der Raspberry Pi wird zusätzlich über ein schwarzes Micro-USB-Kabel mit Strom versorgt.
Raspberry Pi 3B+ mit USB-WLAN-Adapter

Konzept

Die Idee ist simpel: Parallel zum lokalen Netzwerk zuhause richten Sie mit einem Raspberry Pi ein zweites WLAN ein. Das zweite Netz verwendet nicht nur einen anderen IP-Adressbereich, sondern hat auch einen eigenen Domain Name Server, der alle bekannten Ad-Ausliefer-Sites blockiert. Jeder Zugriff auf eine derartige Seite liefert sofort eine Null-Antwort. Sie glauben gar nicht, wie schnell die Startseite von heise.de, spiegel.de etc. dann lädt!

Alle Geräte im Haushalt haben jetzt die Wahl: sie können im vorhandenen WLAN des Internet-Routers bleiben, oder in das WLAN des Raspberry Pis wechseln. (Bei mir zuhause hat dieses WLAN den eindeutigen Namen/SSID wlan-without-ads.)

Das Bild zeigt ein Netzwerkdiagramm, in dem ein Raspberry Pi verwendet wird, um ein nahezu werbefreies WLAN-Netzwerk zu erstellen. Der Raspberry Pi ist über eine Ethernet-Buchse mit der IP-Adresse 192.168.178.123 an einen WLAN-Router (z.B. FritzBox) angeschlossen. Zusätzlich ist ein USB-WLAN-Adapter mit der IP-Adresse 10.3.141.1 verbunden, der das Netzwerk "wlan-without-ads" bereitstellt. Verschiedene Geräte wie ein Smartphone, Tablet und Notebook sind drahtlos mit diesem Netzwerk verbunden, erkennbar an den gestrichelten Linien und ihren jeweiligen IP-Adressen.
RaspAP auf dem Raspberry Pi spannt ein eigenes (beinahe) werbefreies WLAN auf

Zur Realisierung dieser Idee brauchen Sie einen Raspberry Pi — am besten nicht das neueste Modell: dessen Rechenleistung und Stromverbrauch sind zu höher als notwendig! Ich habe einen Raspberry Pi 3B+ aus dem Keller geholt. Auf dem Pi installieren Sie zuerst Raspbian OS Lite und dann RaspAP. Sie schließen den Pi mit einem Kabel an das lokale Netzwerk an. Der WLAN-Adapter des Raspberry Pis realisiert den Hotspot und spannt das werbefreie lokale Zweit-Netzwerk auf. Die Installation dauert ca. 15 Minuten.

Raspberry Pi OS Lite installieren

Zur Installation der Lite-Version von Raspberry Pi OS laden Sie sich das Programm Raspberry Pi Imager von https://www.raspberrypi.com/software/ herunter und führen es aus. Damit übertragen Sie Raspberry Pi OS Lite auf eine SD-Karte. (Eine SD-Karte mit 8 GiB reicht.) Am besten führen Sie gleich im Imager eine Vorweg-Konfiguration durch und stellen einen Login-Namen, das Passwort und einen Hostnamen ein. Sie können auch gleich den SSH-Server aktivieren — dann können Sie alle weiteren Arbeiten ohne Tastatur und Monitor durchführen. Führen Sie aber keine WLAN-Konfiguration durch!

Mit der SD-Karten nehmen Sie den Raspberry Pi in Betrieb. Der Pi muss per Netzwerkkabel mit dem lokalen Netzwerk verbunden sein. Melden Sie sich an (wahlweise mit Monitor + Tastatur oder per SSH) und führen Sie ein Update durch (sudo apt update und sudo apt full-upgrade).

RaspAP installieren

RaspAP steht für Raspberry Pi Access Point. Sein Setup-Programm installiert eine Weboberfläche, in der Sie unzählige Details und Funktionen Ihres WLAN-Routers einstellen können. Dazu zählen:

  • Verwendung als WLAN-Router oder -Repeater
  • freie Auswahl des WLAN-Adapters
  • frei konfigurierbarer DHCP-Server
  • Ad-Blocking-Funktion
  • VPN-Server (OpenVPN, WireGuard)
  • VPN-Client (ExpressVPN, Mullvad VPN, NordVPN)

An dieser Stelle geht es nur um die Ad-Blocking-Funktionen, die standardmäßig aktiv sind. Zur Installation laden Sie das Setup-Script herunter, kontrollieren kurz mit less, dass das Script wirklich so aussieht, als würde es wie versprochen RaspAP installieren, und führen es schließlich aus.

Die Rückfragen, welche Features installiert werden sollen, können Sie grundsätzlich alle mit [Return] beantworten. Das VPN-Client-Feature ist nur zweckmäßig, wenn Sie über Zugangsdaten zu einem kommerziellen VPN-Dienst verfügen und Ihr Raspberry Pi diesen VPN-Service im WLAN weitergeben soll. (Das ist ein großartiger Weg, z.B. ein TV-Gerät via VPN zu nutzen.)

Welche Funktionen Sie wirklich verwenden, können Sie immer noch später entscheiden. Das folgende Listing ist stark gekürzt. Die Ausführung des Setup-Scripts dauert mehrere Minuten, weil eine Menge Pakete installiert werden.

wget https://install.raspap.com -O raspap-setup.sh
less raspap-setup.sh
bash raspap-setup.sh

The Quick Installer will guide you through a few easy steps
Using GitHub repository: RaspAP/raspap-webgui 3.0.7 branch
Configuration directory: /etc/raspap
lighttpd root: /var/www/html? [Y/n]:
Installing lighttpd directory: /var/www/html
Complete installation with these values? [Y/n]:
Enable HttpOnly for session cookies? [Y/n]:
Enable RaspAP control service (Recommended)? [Y/n]:
Install ad blocking and enable list management? [Y/n]:
Install OpenVPN and enable client configuration? [Y/n]:
Install WireGuard and enable VPN tunnel configuration? [Y/n]:
Enable VPN provider client configuration? [Y/n]: n
The system needs to be rebooted as a final step. Reboot now? [Y/n]

Wenn alles gut geht, gibt es nach dem Neustart des Raspberry Pi ein neues WLAN mit dem Namen raspi-webgui. Das Passwort lautet ChangeMe.

Sobald Sie Ihr Notebook (oder ein anderes Gerät) mit diesem WLAN verbunden haben, öffnen Sie in einem Webbrowser die Seite http://10.3.141.1 (mit http, nicht https!) und melden sich mit den folgenden Daten an:

Username: admin
Passwort: secret

In der Weboberfläche sollten Sie als Erstes zwei Dinge ändern: das Admin-Passwort und das WLAN-Passwort:

  • Zur Veränderung des Admin-Passworts klicken Sie auf das User-Icon rechts oben in der Weboberfläche, geben einmal das voreingestellte Passwort secret und dann zweimal Ihr eigenes Passwort an.
  • Die Eckdaten des WLANs finden Sie im Dialogblatt Hotspot. Das Passwort können Sie im Dialogblatt Security verändern.

Das Bild zeigt die Benutzeroberfläche von RaspAP, einem Konfigurationstool für einen Raspberry Pi Hotspot. Im Fokus stehen die "Basic settings" für den Hotspot, darunter die Auswahl des Interfaces (wlan0), die SSID und der Wireless Mode (802.11g - 2.4 GHz). Außerdem ist der Kanal auf 1 eingestellt und es gibt Buttons zum Speichern der Einstellungen, zum Stoppen und zum Neustarten des Hotspots.
Die Weboberfläche von RaspAP mit den Hotspot-Einstellungen
Das Bild zeigt die Benutzeroberfläche einer Ad-Blocking-Konfiguration in einem Webbrowser. Im Abschnitt "Blocklist settings" ist die Option "Enable blocklists" aktiviert, um DNS-Anfragen für Werbung und Tracking zu blockieren. Es wird angezeigt, dass die Hostnamen- und Domänen-Blocklisten zuletzt vor drei Wochen aktualisiert wurden. Unten gibt es Buttons zum Speichern der Einstellungen und zum Neustarten des Ad-Blockings.
Bei den Ad-Block-Einstellungen sind keine Änderungen erforderlich. Es schadet aber nicht, hin und wieder die Ad-Blocking-Liste zu erneuern.

RaspAP verwendet automatisch den WLAN-Namen (den Service Set Identifier) raspi-webgui. Auf der Einstellungsseite Hotspot können Sie einen anderen Namen einstellen. Ich habe wie gesagt wlan-without-ads verwendet. Danach müssen sich alle Clients neu anmelden. Fertig!

USB-WLAN-Adapter

Leider hat der lokale WLAN-Adapter des Raspberry Pis keine großartige Reichweite. Für’s Wohnzimmer oder eine kleine Wohnung reicht es, für größere Wohnungen oder gar ein Einfamilienhaus aber nicht. Abhilfe schafft ein USB-WLAN-Antenne. Das Problem: Es ist nicht einfach, ein Modell zu finden, das vom Linux-Kernel auf Anhieb unterstützt wird. Ich habe zuhause drei USB-WLAN-Adapter. Zwei haben sich als zu alt erwiesen (kein WPA, inkompatibel mit manchen Client-Geräten etc.); der dritte Adapter (BrosTrend AC650) wird auf Amazon als Raspberry-Pi-kompatibel beworben, womit ich auch schon in die Falle getappt bin. Ja, es gibt einen Treiber, der ist aber nicht im Linux-Kernel inkludiert, sondern muss manuell installiert werden:

https://github.com/ElectricRCAircraftGuy/BrosTrendWifiAdapterSoftware

Immerhin gelang die Installation unter Raspberry Pi OS Lite auf Anhieb mit dem folgenden, auf GitHub dokumentierten Kommando:

sh -c 'busybox wget deb.trendtechcn.com/install \
       -O /tmp/install && sh /tmp/install'

Mit dem nächsten Neustart erkennt Linux den WLAN-Adapter und kann ihn nutzen. Das ändert aber nichts daran, dass mich die Installation von Treibern von dubiosen Seiten unglücklich macht, dass die Treiberinstallation nach jedem Kernel-Update wiederholt werden muss und dass die manuelle Treiberinstallationen bei manchen Linux-Distributionen gar nicht möglich ist (LibreELEC, Home Assistant etc.).

Wenn Sie gute Erfahrungen mit einem USB-WLAN-Adapter gemacht haben, hinterlassen Sie bitte einen kurzen Kommentar!

Sobald RaspAP den WLAN-Adapter kennt, bedarf es nur weniger Mausklicks in der RaspAP-Weboberfläche, um diesen Adapter für den Hotspot zu verwenden.

Alternativ können Sie den internen WLAN-Adapter auch ganz deaktivieren. Dazu bauen Sie in config.txt die folgende Zeile ein und starten den Raspberry Pi dann neu.

# Datei /boot/firmware/config.txt
...
dtoverlay=disable-wifi

Danach kennt Raspberry Pi OS nur noch den USB-WLAN-Adapter, eine Verwechslung ist ausgeschlossen.

Vorteile

Der größte Vorteil von RaspAP als Ad-Blocker ist aus meiner Sicht seine Einfachheit: Der Werbeblocker kann mit minimalem Konfigurationsaufwand von jedem Gerät im Haushalt genutzt werden (Opt-In-Modell). Sollte RaspAP für eine Website zu restriktiv sein, dauert es nur wenige Sekunden, um zurück in das normale WLAN zu wechseln. Bei mir zuhause waren alle Familienmitglieder schnell überzeugt.

Nachteile

  • Der Raspberry Pi muss per Ethernet-Kabel mit dem lokalen Netzwerk verbunden werden.
  • Manche Seiten sind so schlau, dass sie das Fehlen der Werbung bemerken und dann nicht funktionieren. Es ist prinzipbedingt unmöglich, für solche Seiten eine Ausnahmeregel zu definieren. Sie müssen in das normale WLAN wechseln, damit die Seite funktioniert.

  • youtube-Werbung kann nicht geblockt werden, weil Google so schlau ist, die Werbefilme vom eigenen Server und nicht von einem anderen Server zuzuspielen. youtube.com selbst zu blocken würde natürlich helfen und außerdem eine Menge Zeit sparen, schießt aber vielleicht doch über das Ziel hinaus.

  • Mit RaspAP sind Sie in einem eigenen privaten Netz, NICHT im lokalen Netz Ihres Internet-Routers. Sie können daher mit Geräten, die sich im wlan-without-ads befinden, nicht auf andere Geräte zugreifen, die mit Ihrem lokalen Router (FritzBox etc.) verbunden sind. Das betrifft NAS-Geräte, Raspberry Pis mit Home Assistant oder anderen Anwendungen etc.

Keine Werbeeinnahmen mehr für Seitenbetreiber?

Mir ist klar, dass sich viele Seiten zumindest teilweise über Werbung finanzieren. Das wäre aus meiner Sicht voll OK. Aber das Ausmaß ist unerträglich geworden: Mittlerweile blinkt beinahe zwischen jedem Absatz irgendein sinnloses Inserat. Werbefilme vervielfachen das Download-Volumen der Seiten, der Lüfter heult, ich kann mich nicht mehr auf den Text konzentrieren, den ich lese. Es geht einfach nicht mehr.

Viele Seiten bieten mir Pur-Abos an (also Werbeverzicht gegen Bezahlung). Diesbezüglich war https://derstandard.at ein Pionier, und tatsächlich habe ich genau dort schon vor vielen Jahren mein einziges Pur-Abo abgeschlossen. In diesem Fall ist es auch ein Ausdruck meiner Dankbarkeit für gute Berichterstattung. Früher habe ich für die gedruckte Zeitung bezahlt, jetzt eben für die Online-Nutzung.

Mein Budget reicht aber nicht aus, dass ich solche Abos für alle Seiten abschließen kann, die ich gelegentlich besuche: heise.de, golem.de, phoronix, zeit.de, theguardian.com usw. Ganz abgesehen davon, dass das nicht nur teuer wäre, sondern auch administrativ mühsam. Ich verwende diverse Geräte, alle paar Wochen muss ich mich neu anmelden, damit die Seiten wissen, dass ich zahlender Kunde bin. Das ist bei derstandard.at schon mühsam genug. Wenn ich zehn derartige Abos hätte, würde ich alleine an dieser Stelle schon verzweifeln.

Wenn sich Zeitungs- und Online-News-Herausgeber aber zu einem Site-übergreifenden Abrechnungsmodell zusammenschließen könnten (Aufteilung der monatlichen Abo-Gebühr nach Seitenzugriffen), würde ich mir das vielleicht überlegen. Das ist aber sowieso nur ein Wunschtraum.

Aber so, wie es aktuell aussieht, funktioniert nur alles oder nichts. Mit RaspAP kann ich die Werbung nicht für manche Seiten freischalten. Eine Reduktion des Werbeaufkommens auf ein vernünftiges Maß funktioniert auch nicht. Gut, dann schalte ich die Werbung — soweit technisch möglich — eben ganz ab.

  •  

📚 »Datenbanksysteme« (2. Aufl.) ist erschienen

Mein Lehrbuch Datenbanksysteme ist gerade in der 2. Auflage erschienen. Es richtet sich an Studierende, Entwickler und Datenbankanwender. Es erklärt, wie moderne Datenbankmanagementsysteme funktionieren. Es zeigt Ihnen, wie Sie Datenbanken korrekt und effizient entwerfen. Es erläutert den Umgang mit der Structured Query Language (SQL) und gibt einen Überblick über die Administration und Programmierung von Datenbanksystemen.

Cover

Unzählige Übungsaufgaben (mit Lösungen!) helfen Ihnen, das erlernte Wissen zu verfestigen und anzuwenden. Zusammen mit dem Buch erhalten Sie den Online-Zugriff auf mehrere Beispieldatenbanken, sodass Sie SQL-Kommandos ohne die langwierige Installation eines eigenen Datenbank-Servers ausprobieren können. Alternativ können Sie die zum Download angebotenen Beispieldatenbanken natürlich auch lokal installieren.

In das Buch fließt meine bald 30-jährige Erfahrung im Entwurf von Datenbanken, bei der Entwicklung von Datenbankanwendungen, bei der Administration von Datenbankmanagementsystemen (DBMS) sowie aus dem Unterricht ein. Ein besonderer Fokus des Buchs liegt im korrekten Datenbankdesign. Fehler, die in dieser Phase passieren, sind später praktisch nicht mehr zu korrigieren. Das Buch berücksichtigt auch neue Entwicklungen, von NoSQL bis hin zu modernen SQL-Features (Rekursion, Common Table Expressions, Window-Funktionen etc.).

Für die 2. Auflage habe ich den NoSQL-Teil des Buchs ausgebaut und um ein MongoDB-Kapitel ergänzt. Außerdem habe ich diverse Fehler korrigiert und da und dort kleine Ergänzungen und Verbesserungen vorgenommen.

Mehr Details zum Buch finden Sie hier.

Freiexemplar für Lehrpersonal

Wenn Sie auf der Fachhochschule oder Universität eine Datenbank-Vorlesung oder -Übung abhalten: Kontaktieren Sie dozenten@rheinwerk-verlag.de und fordern Sie ein kostenloses Belegexemplar an!

  •  

Fronius Wechselrichter in Home Assistant einbinden

Die letzten Wochen habe ich mich ziemlich intensiv mit Home Assistant auseinandergesetzt. Dabei handelt es sich um eine Open-Source-Software zur Smart-Home-Steuerung. Home Assistant (HA) ist eine spezielle Linux-Distribution, die häufig auf einem Raspberry Pi ausgeführt wird. Dieser Artikel zeigt die nicht ganz unkomplizierte Integration meines Fronius Wechselrichters in das Home-Assistant-Setup. (Die Basisinstallation von HA setze ich voraus.)

Das Bild zeigt eine Benutzeroberfläche des Home Assistant zur Überwachung des Energieverbrauchs und der Solarproduktion. Im oberen Bereich ist ein Balkendiagramm, das den Energieverbrauch über den Tag verteilt darstellt, mit unterschiedlichen Farben für verschiedene Verbrauchsquellen. Rechts daneben befindet sich eine grafische Darstellung der Energieverteilung mit Kreisdiagrammen und Verbindungslinien, die Solarproduktion, Netzbezug und Batteriespeicherung visualisieren. Unterhalb des Energieverbrauchsdiagramms ist ein weiteres Balkendiagramm, das die Solarproduktion in Kilowattstunden über den Tag zeigt. Am unteren Rand sind drei Kreisdiagramme, die zusätzliche Informationen wie eingespeiste Energiemenge, Prozentsatz des Selbstverbrauchs und die Effizienz der Solaranlage anzeigen.
Die Energieansicht nach der erfolgreichen Integration des Fronius Wechselrichters.

Die Abbildung ist wie folgt zu interpretieren: Heute bis 19:00 wurden im Haushalt 8,2 kWh elektrische Energie verbraucht, aber 13,6 kWh el. Energie produziert (siehe die Kreise rechts). 3,7 kWh wurden in das Netz eingespeist, 0,4 kWh von dort bezogen.

Das Diagramm »Energieverbrauch« (also das Balkendiagramm oben): In den Morgen- und Abendstunden hat der Haushalt Strom aus der Batterie bezogen (grün); am Vormittag wurde der Speicher wieder komplett aufgeladen (rot). Am Nachmittag wurde Strom in das Netz eingespeist (violett). PV-Strom, der direkt verbraucht wird, ist gelb gekennzeichnet.

Fronius-Integration

Bevor Sie mit der Integration des Fronius-Wechselrichters in das HA-Setup beginnen, sollten Sie sicherstellen, dass der Wechselrichter, eine fixe IP-Adresse im lokalen Netzwerk hat. Die erforderliche Einstellung nehmen Sie in der Weboberfläche Ihres WLAN-Routers vor.

Außerdem müssen Sie beim Wechselrichter die sogenannte Solar API aktivieren. Über diese REST-API können diverse Daten des Wechselrichters gelesen werden. Zur Aktivierung müssen Sie sich im lokalen Netzwerk in der Weboberfläche des Wechselrichters anmelden. Die relevante Option finden Sie unter Kommunikation / Solar API. Der Dialog warnt vor der Aktivierung, weil die Schnittstelle nicht durch ein Passwort abgesichert ist. Allzugroß sollte die Gefahr nicht sein, weil der Zugang ohnedies nur im lokalen Netzwerk möglich ist und weil die Schnittstelle ausschließlich Lesezugriffe vorsieht. Sie können den Wechselrichter über die Solar API also nicht steuern.

Das Bild zeigt einen Screenshot einer Weboberfläche zur Konfiguration einer Solar API von Fronius. Im oberen Bereich ist ein Hinweis zu sehen, der die Solar API als eine offene JSON-Schnittstelle beschreibt, die standardmäßig deaktiviert ist und aus Sicherheitsgründen nicht ohne Drittanbieter-Anwendung aktiviert werden sollte. Fronius empfiehlt für die Überwachung die Verwendung von Solar.web. Unten befindet sich ein Schalter zum Aktivieren der Kommunikation über die Solar API.
Aktivierung der Solar API in der lokalen Weboberfläche des Fronius-Wechselrichters

Als nächstes öffnen Sie in der HA-Weboberfläche die Seite Einstellungen / Geräte & Dienste und suchen dort nach der Integration Fronius (siehe auch hier). Im ersten Setup-Dialog müssen Sie lediglich die IP-Adresse des Wechselrichters angeben. Im zweiten Dialog werden alle erkannten Komponenten aufgelistet und Sie können diese einem Bereich zuordnen.

Das Bild zeigt eine Benutzeroberfläche, die den erfolgreichen Abschluss einer Konfiguration für SolarNet Inverter anzeigt. Vier Geräte wurden gefunden: "SolarNet (Fronius)", "Kofler Gen24 (Fronius)", "Smart Meter TS 65A-3 (Fronius)" und "BYD Battery-Box Premium HV (BYD)", alle im Bereich "Keller" zugeordnet. Unten rechts befindet sich ein Button mit der Beschriftung "FERTIG".
Setup der Fronius-Integration in der Weboberfläche von Home Assistant

Bei meinen Tests standen anschließend über 60 neue Entitäten (Sensoren) für alle erdenklichen Betriebswerte des Wechselrichters, des damit verbundenen Smartmeters sowie des Stromspeichers zur Auswahl. Viele davon werden automatisch im Default-Dashboard angezeigt und machen dieses vollkommen unübersichtlich.

Energieansicht

Der Zweck der Fronius-Integration ist weniger die Anzeige diverser einzelner Betriebswerte. Vielmehr sollen die Energieflüssen in einer eigenen Energieansicht dargestellt werden. Diese Ansicht wertet die Wechselrichterdaten aus und fasst zusammen, welche Energiemengen im Verlauf eines Tags, einer Woche oder eines Monats wohin fließen. Die Ansicht differenziert zwischen dem Energiebezug aus dem Netz bzw. aus den PV-Modulen und berücksichtigt bei richtiger Konfiguration auch den Stromfluss in den bzw. aus dem integrierten Stromspeicher. Sofern Sie eine Gasheizung mit Mengenmessung verfügen, können Sie auch diese in die Energieansicht integrieren.

Die Konfiguration der Energieansicht hat sich aber als ausgesprochen schwierig erwiesen. Auf Anhieb gelang nur das Setup des Moduls Stromnetz. Damit zeigt die Energieansicht nur an, wie viel Strom Sie aus dem Netz beziehen bzw. welche Mengen Sie dort einspeisen. Die Fronius-Integration stellt die dafür Daten in Form zweier Sensoren direkt zur Verfügung:

  • Aus dem Netz bezogene Energie: sensor.smart_meter_ts_65a_3_bezogene_wirkenergie
  • In das Netz eingespeiste Energie: sensor.smart_meter_ts_65a_3_eingespeiste_wirkenergie

Je nachdem, welchen Wechselrichter und welche dazu passende Integration Sie verwenden, werden die Sensoren bei Ihnen andere Namen haben. In den Auswahllisten zur Stromnetz-Konfiguration können Sie nur Sensoren
auswählen, die Energie ausdrücken. Zulässige Einheiten für derartige Sensoren sind unter anderem Wh (Wattstunden), kWh oder MWh.

Das Bild zeigt die Benutzeroberfläche von Home Assistant mit dem Fokus auf die Energie-Konfiguration. Es sind verschiedene Sektionen wie "Stromnetz", "Sonnenkollektoren", "Batteriespeicher zu Hause", "Gasverbrauch" und "Wasserverbrauch" zu sehen, die jeweils Optionen zum Hinzufügen von Verbrauchsdaten bieten. In der linken Seitenleiste sind weitere Menüpunkte wie "Mein Dashboard", "Energie" und "Einstellungen" sichtbar. Der Benutzername "Michael Kofler" ist unten links zu erkennen.
Konfiguration der Energie-Ansicht in Home Assistant

Code zur Bildung von drei Riemann-Integralen

Eine ebenso einfache Konfiguration der Module Sonnenkollektoren und Batteriespeicher zu Hause scheitert daran, dass die Fronius-Integration zwar aktuelle Leistungswerte für die Produktion durch die PV-Module und den Stromfluss in den bzw. aus dem Wechselrichter zur Verfügung stellt (Einheit jeweils Watt), dass es aber keine kumulierten Werte gibt, welche Energiemengen seit dem Einschalten der Anlage geflossen sind (Einheit Wattstunden oder Kilowattstunden). Im Internet gibt es eine Anleitung, wie dieses Problem behoben werden kann:

https://community.home-assistant.io/t/376329
https://www.home-assistant.io/integrations/integration

Die Grundidee besteht darin, dass Sie eigenen Code in eine YAML-Konfigurationsdatei von Home Assistant einbauen. Gemäß dieser Anweisungen werden mit einem sogenannten Riemann-Integral die Leistungsdaten in Energiemengen umrechnet. Dabei wird regelmäßig die gerade aktuelle Leistung mit der zuletzt vergangenen Zeitspanne multipliziert. Diese Produkte (Energiemengen) werden summiert (method: left). Das Ergebnis sind drei neue Sensoren (Entitäten), deren Name sich aus den title-Attributen im zweiten Teil des Listings ergeben:

  • Batterieladung: sensor.total_battery_energy_charged
  • Batterieentladung: sensor.total_battery_energy_discharged
  • PV-Produktion: sensor.total_photovoltaics_energy

Die Umsetzung der Anleitung hat sich insofern schwierig erwiesen, als die in der ersten Hälfte des Listungs verwendeten Sensoren aus der Fronius-Integration bei meiner Anlage ganz andere Namen hatten als in der Anleitung. Unter den ca. 60 Sensoren war es nicht ganz leicht, die richtigen Namen herauszufinden. Wichtig ist auch die Einstellung device_class: power! Die in einigen Internet-Anleitungen enthaltene Zeile device_class: energy ist falsch.

Der template-Teil des Listings ist notwendig, weil der Sensor solarnet_leistung_von_der_batterie je nach Vorzeichen die Lade- bzw. Entladeleistung enthält und daher getrennt summiert werden muss. Außerdem kommt es vor, dass die Fronius-Integration einzelne Werte gar nicht übermittelt, wenn sie gerade 0 sind (daher die Angabe eines Default-Werts).

Der zweite Teil des Listungs führt die Summenberechnung durch (method: left) und skaliert die Ergebnisse um den Faktor 1000. Aus 1000 Wh wird mit unit_prefix: k also 1 kWh.

Bevor Sie den Code in configuration.yaml einbauen können, müssen Sie einen Editor als Add-on installieren (Einstellungen / Add-ons, Add-on-Store öffnen, dort den File editor auswählen).

# in die Datei /homeassistant/configuration.yaml einbauen
...
template:
  - sensor:
      - name: "Battery Power Charging"
        unit_of_measurement: W
        device_class: power
        state: "{{ max(0, 0 -  states('sensor.solarnet_leistung_von_der_batterie') | float(default=0)) }}"
      - name: "Battery Power Discharging"
        unit_of_measurement: W
        device_class: power
        state: "{{ max(0, states('sensor.solarnet_leistung_von_der_batterie') | float(default=0)) }}"
      - name: "Power Photovoltaics"
        unit_of_measurement: W
        device_class: power
        state: "{{ states('sensor.solarnet_pv_leistung') | float(default=0) }}"

sensor:
    - platform: integration
      source: sensor.battery_power_charging
      name: "Total Battery Energy Charged"
      unique_id: 'myuuid_1234'
      unit_prefix: k
      method: left
    - platform: integration
      source: sensor.battery_power_discharging
      name: "Total Battery Energy Discharged"
      unique_id: 'myuuid_1235'
      unit_prefix: k
      method: left
    - platform: integration
      source: sensor.power_photovoltaics
      name: "Total Photovoltaics Energy"
      unique_id: 'myuuid_1236'
      unit_prefix: k
      method: left
Das Bild zeigt einen geöffneten Code-Editor mit einer YAML-Konfigurationsdatei für Home Assistant. Im Editor ist der Abschnitt für Sensoren zu sehen, der verschiedene Parameter wie "name", "unit_of_measurement" und "state" enthält. Links im Bild ist das Menü von Home Assistant mit Optionen wie "Dashboard", "Energie" und "Medien" sichtbar. Der Screenshot deutet auf die Konfiguration von Smart-Home-Geräten oder Automatisierungen hin.
In »configuration.yaml« müssen etliche Zeilen zusätzlicher Code eingebaut werden.

Damit die neuen Einstellungen wirksam werden, starten Sie den Home Assistant im Dialogblatt Einstellungen / System neu. Anschließend sollte es möglich sein, auch die Module Sonnenkollektoren und Batteriespeicher zu Hause richtig zu konfigurieren. (Bei meinen Experimenten hat es einen ganzen Tag gedauert hat, bis endlich alles zufriedenstellend funktionierte. Zwischenzeitlich habe ich zur Fehlersuche Einstellungen / System / Protokolle genutzt und musste unter Entwicklerwerkzeuge / Statistik zuvor aufgezeichnete Daten von falsch konfigurierten Sensoren wieder löschen.) Der Lohn dieser Art zeigt sich im Bild aus der Artikeleinleitung.

Das Bild zeigt die Benutzeroberfläche der Entwicklerwerkzeuge im Bereich Statistik eines Home Assistant Dashboards. Es sind verschiedene Sensoren mit ihren Statistik-IDs, dem Messwert in Kilowattstunden (kWh) und der Quelle 'recorder' aufgelistet. Alle Einträge zeigen an, dass kein Problem vorliegt.
Unter Entwicklerwerkzeuge/Statistik können Sie sich vergewissern, dass die neuen Sensoren korrekt eingerichtet sind.
Das Bild zeigt eine Benutzeroberfläche mit einer Verlaufskurve für die gesamte geladene Batterieenergie. Die Kurve steigt gegen Ende des Diagramms stark an und zeigt einen Wert von 79,429 kWh. Links im Bild ist ein Menü mit verschiedenen Optionen wie "Logbuch" und "Entwicklerwerkzeuge" zu sehen. Oben im Browserfenster sind mehrere Tabs und die Adressleiste mit einer nicht sicheren Verbindung zu erkennen.
Wenn ein Sensor angeklickt wird, erscheint eine Verlaufskurve.

Quellen/Links

  •  
❌