Konfigurationsdatei
Für den Betrieb des LxLogger wird eine Konfigurationsdatei im TOML-Format benötigt. Sie enthält im Wesentlichen die Angaben zu deinem Loxone Miniserver und genau ein Ausgabeziel (Sink) – die Datenbank, in die geschrieben wird.
Anlegen der Konfiguration
Abschnitt betitelt „Anlegen der Konfiguration“Lege die Konfiguration auf Basis der mitgelieferten, vollständig kommentierten
Vorlage an. Bei der Linux-Paketinstallation (deb/rpm) liegt sie direkt neben der
Konfiguration unter /etc/lxlogger/lxlogger.toml.example:
sudo cp /etc/lxlogger/lxlogger.toml.example /etc/lxlogger/lxlogger.tomlsudo nano /etc/lxlogger/lxlogger.tomlLxLogger sucht die Konfigurationsdatei in dieser Reihenfolge:
- der mit
--config <pfad>angegebene Pfad $HOME/.lxlogger.toml./.lxlogger.toml(aktuelles Verzeichnis)/etc/lxlogger/lxlogger.toml(üblich beim Dienstbetrieb)/usr/lib/lxlogger/.lxlogger.toml(Pfad aus Version 1.1.x, veraltet – mit Hinweis im Log)
Jeder Wert lässt sich zusätzlich über eine Umgebungsvariable LXL_<SEKTION>_<KEY>
überschreiben (z. B. LXL_MINISERVER_HOST=192.168.1.77).
Beispiel
Abschnitt betitelt „Beispiel“Eine minimale Konfiguration besteht aus [miniserver] und genau einem
[[sinks]]-Eintrag:
[miniserver]host = "192.168.1.77" # Hostname oder IP des Miniservers# port = 80 # HTTP-Port (Default: 80)username = "lxlogger" # Login-Benutzerpassword = "CHANGE-ME" # Login-Passwort# timezone = "Europe/Berlin" # Zeitzone des Miniservers für den Import (Default: Zeitzone des Hosts)
[[sinks]]kind = "influxdb_v2"url = "http://localhost:8086" # Basis-URL des InfluxDB-v2-Serversorg = "mein-haus" # Organisationbucket = "lxlogger" # Ziel-Buckettoken = "CHANGE-ME-TOKEN" # API-TokenZeitzone des Miniservers
Abschnitt betitelt „Zeitzone des Miniservers“Der Miniserver speichert seine Statistiken in Ortszeit, ohne Angabe der Zeitzone.
Mit timezone legst du fest, in welcher Zeitzone der
Datenimport sie liest:
[miniserver]timezone = "Europe/Berlin"- Wert: ein IANA-Name, z. B.
Europe/Berlin,Europe/ViennaoderEurope/Zurich. Ein unbekannter Name ist ein Konfigurationsfehler. - Umgebungsvariable:
LXL_MINISERVER_TIMEZONE. Sie hat Vorrang vor dem Wert in der Datei. - Standard: die Zeitzone des Systems, auf dem der LxLogger läuft. Das
Docker-Image setzt
LXL_MINISERVER_TIMEZONE=Europe/Berlin.
Die Zeitzonendaten sind im LxLogger enthalten. Die Option funktioniert deshalb auch unter Windows und im Docker-Image. Das laufende Logging betrifft sie nicht.
Das Ausgabeziel ([[sinks]])
Abschnitt betitelt „Das Ausgabeziel ([[sinks]])“Der Sink legt fest, wohin die Daten geschrieben werden. Er besteht aus einem
kind-Tag plus den Feldern, die dieses kind benötigt. Es ist genau ein Sink
erlaubt – ein zweiter [[sinks]]-Eintrag führt zu einem Konfigurationsfehler.
[[sinks]]kind = "influxdb_v2"url = "http://localhost:8086"org = "mein-haus"bucket = "lxlogger"token = "CHANGE-ME-TOKEN"# admin_token = "CHANGE-ME-ADMIN" # optional: legt den Bucket an, falls er noch nicht existiert[[sinks]]kind = "influxdb_v1"url = "http://localhost:8086"username = "admin" # optional (v1.8 läuft oft ohne Authentifizierung)password = "CHANGE-ME" # optionalDer Datenbankname wird nicht konfiguriert, sondern automatisch aus der
Seriennummer deines Miniservers abgeleitet (lxlogger_<seriennummer>) und beim
Start angelegt.
Geheimnisse (Passwörter & Tokens)
Abschnitt betitelt „Geheimnisse (Passwörter & Tokens)“Passwörter und API-Tokens müssen nicht im Klartext in der Konfigurationsdatei stehen. LxLogger löst jedes Geheimnis in dieser Reihenfolge auf:
- Umgebungsvariable (z. B.
LXL_MINISERVER_PASSWORD) - Umgebungsvariable mit
_FILE-Suffix (Pfad zu einer Datei mit dem Wert – ideal für als Datei gemountete Docker-/Kubernetes-Secrets) - OS-Schlüsselbund (macOS Schlüsselbund / Windows-Anmeldeinformationsverwaltung / Linux Secret Service)
- die Konfigurationsdatei (Klartext)
Den OS-Schlüsselbund verwaltest du mit dem Befehl secret:
# Geheimnis interaktiv (ohne Anzeige) hinterlegenlxlogger secret set miniserver.password
# zeigt je Geheimnis die Quelle an – nie den Wert selbstlxlogger secret listStabile Schlüssel sind u. a. miniserver.password, influxdb_v1.password,
influxdb_v2.token und influxdb_v2.admin_token.
Konfiguration prüfen
Abschnitt betitelt „Konfiguration prüfen“Vor dem ersten Start kannst du die Konfiguration und die Erreichbarkeit des Miniservers prüfen:
lxlogger check --config /etc/lxlogger/lxlogger.tomlDer Befehl gibt strukturiert ✓/✗ aus und beendet sich mit Code 0, wenn alles in
Ordnung ist – sonst mit 1.
Weitere Abschnitte
Abschnitt betitelt „Weitere Abschnitte“Die folgenden Abschnitte sind optional und in der mitgelieferten Vorlage ausführlich kommentiert:
[wal]– justiert den lokalen Crash-Puffer (Write-Ahead-Log), der jedes Event zwischenpuffert, bevor es in die Datenbank geschrieben wird. Alle Werte haben sinnvolle Standardwerte; eine Anpassung ist im Normalfall nicht nötig.[backup]– legt mitdestdas Zielverzeichnis für Backup-Archive fest (siehe Backup). Mitftps = truewird das Backup verschlüsselt übertragen,ftps_server_nameüberschreibt bei Bedarf den Namen für die Prüfung des Zertifikats (siehe Verschlüsselte Übertragung (FTPS)).
Messwert-Namensänderung
Abschnitt betitelt „Messwert-Namensänderung“Über den optionalen Abschnitt [grafana] kannst du den Namen der einzelnen
Statistiken (das Measurement) selbst bestimmen. Dazu dient der Wert
msmntNameTmpl. Wird keine eigene Formatierung festgelegt, wird nur der reine
Name der Statistik verwendet.
[grafana]msmntNameTmpl = "[$r|$c] $n.$s"Folgende Variablen stehen zur Verfügung:
| Variable | Beschreibung |
| $n | Der Name der Statistik. |
| $r | Der Raum, der dem Sensor/Gerät in der Loxone Config zugewiesen wurde. |
| $c | Die Kategorie, die dem Sensor/Gerät in der Loxone Config zugewiesen wurde. |
| $s | Der Status des verwendeten Geräts. Am Beispiel einer Intelligenten Raumregelung sind zum Beispiel die folgenden Werte möglich: tempActual, tempTarget, usw. Trennzeichen wie der Punkt werden dabei automatisch gekürzt. |
Beispiel
Abschnitt betitelt „Beispiel“Für einen Temperatursensor mit dem Namen Temperatur in der Kategorie Klima im Raum Badezimmer würde das obige Template die Werte unter dem folgenden Measurement bereitstellen:
[Badezimmer|Klima] Temperatur
Ohne eigene Angabe wären die Werte unter dem Namen
Temperatur
zu finden.