Hardware

Nachdem ich schon länger mit einem eigenen kleinen Server geliebäugelt habe, hat sich mit dem Aufzeichnen der verschiedenen Temperaturen der Wärmepumpe eine konkrete Anwendung ergeben.

In der Auswahl stand auch ein Rasperry-Pi. Für diesen habe ich aber kein Gehäuse für mit Festplatte/SSD gefunden. Der Prozessor war mir etwas schwach. Er hat nur 1 LAN-Schnittstelle. Die Verfügbarkeit bzw. Preis entsprach auch nicht meinen Vorstellungen.

Damals wurde ich auf den Intel N100 Prozessor aufmerksam. Damit gab es Mini-PCs die meinen Wünschen entsprachen. Letztlich habe ich mich doch für ein Gerät mit dem kleineren Bruder N95 entschieden:

ACE Magician N95-Prozessor, 16GB Ram, 512GB SSD.

Damit hat der Mini-Server mehr Arbeitsspeicher und SSD-Kapazität als mein Desktop-PC! Und das ganze in einem winzigen Gehäuse. Abmessungen: 8,9 x 8,9 x 4,3 cm bei ca. 200 gr. Gewicht.

Auch der geringe Stromverbrauch hat mich beeindruckt. Mit Debian-Linux, ohne Monitor, ohne Maus, ohne Tastatur verbraucht er nur 5 Watt! Mit dem bei Kauf installierten Windows 11 war es zwischen 5 und 14 W im Leerlauf. Da war noch Maus, Tastatur und Monitor angesteckt. Den Windows-Key habe ich vor der Debian-Installation ausgelesen und gesichert. Das Windows habe ich überschrieben.

Docker

Die verschiedenen Dienste des Servers wollte ich unter Docker laufen lassen. Ich war neugierig auf Docker und es ist Stand der Technik.

Dumpf hatte ich noch in Erinnerung, das es Zeitreihendatenbanken gibt. Eine solche ist genau das richtige für die anfallenden Temperaturwerte. Im Internet habe ich ein fertiges Projekt mit Docker, MQTT-Broker (Mosquito), MQTT-Bridge, Zeitreihendatenbank (Influx) und grafischer Auswertung (Grafana) gefunden: https://github.com/iothon/docker-compose-mqtt-influxdb-grafana

Dieses habe ich installiert. Nach Problemen damit, habe ich neuere Versionen der jeweiligen Dienste installiert.

Influx ist jetzt Version 2.15. Vorher was es Version 1.x. Es ändert sich die Datenbankstruktur (z.B. Buckets statt Databases) und die Abfrage-Syntax (Flux statt SQL-Dialekt).

Grafana

Grafana ist jetzt Version 8.2.6. Die vorher benutzte Version 5.x kann nicht mit Influx 2.x.

Probleme mit Datasource für Influx in Grafana. Es ist keine Verbindung zu Influx möglich.
Neu nach Angaben aus dem Internet konfiguriert:
Query Language: Flux
Access: Server
Auth: Basic auth
Basic Auth Details: <Admin-Username> / <Passwort>
Custom Http-Headers: Authorization=<API-Token> Organization=<Org-Id>
Token=<Token>
Damit funktioniert der Zugang.

Um Datenreihen aus Influx anzuzeigen, lege ich diese im Influx-GUI an, lasse mir den Abfragecode anzeigen und kopiere diesen nach Grafana.

MQTT-Bridge

Die Bridge dient dazu MQTT-Telegramme in Influx abzuspeichern. Da die Ursprungsversion nur 1 einfaches MQTT-Topic verarbeitete und für Influx 1.x ausgelegt war, musste ich dieses stark überarbeiten. Da das Bridge-Script in Python geschrieben war, fiel mir das relativ leicht.

In der aktuellen Version wird die Umsetzung per Config-File gesteuert. Dort sind auch die Zugangsdaten zum MQTT-Broker und zu Influx hinterlegt. Es ist möglich die Namen aus dem MQTT-Telegramm zu ersetzen und Tags hinzuzufügen.

Server-Monitoring

Um den Server selber zu überwachen, habe ich mir ein passendes Projekt im Internet gesucht und dieses überarbeitet. Das Python-Script und fragt in regelmäßigen Abständen CPU-Auslastung, Festplattenbelegung und bisherige Laufzeit des Servers ab. Diese Werte werden per MQTT gesendet sowie nach Influx geschrieben. Da es die Werte des Servers selber benötigt läuft es nicht in Docker sondern wird regelmäßig per Cron-Dienst gestartet.

Energie-Monitoring

Auch die Werte der PV-Anlage sowie des neuen digitalen Stromzählers (nicht der vom EVU, das ist momentan noch ein alter analoger Drehscheibenzähler) sollten abfragbar sein.

Vom Wechselrichter-Hersteller Fronius kamen bereits wöchentlich Berichte im CSV-Format. Diese waren mir viel zu mager. Der PV- Installateur hat mir diese eingerichtet und gesagt mehr ginge nicht.

Ich habe einfach mal im Internet gesucht und bin tatsächlich fündig geworden. Meinen Wechselrichter kann ich per HTTP-API abfragen. Die genauen Pfade und Parameter habe ich in einer PDF-Datei gefunden. Es sind neben den Werten aus der PV-Anlage auch die Werte aus dem Zähler abfragbar.

Mit diesem Wissen habe ich nach dem Vorbild der MQTT-Bridge einen weiteren Docker-Dienst erzeugt. Darin arbeitet ein Python-Script und fragt in regelmäßigen den Wechselrichter ab. Ein Auszug der mir wichtigen Werte werden per MQTT gesendet und in Influx gespeichert.