Zum Inhalt springen

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.

Lege die Konfiguration auf Basis der mitgelieferten, vollständig kommentierten Vorlage an. Bei der Linux-Paketinstallation findest du sie unter /usr/share/doc/lxlogger/example.lxlogger.toml:

Terminal-Fenster
sudo cp /usr/share/doc/lxlogger/example.lxlogger.toml /etc/lxlogger/lxlogger.toml
sudo nano /etc/lxlogger/lxlogger.toml

LxLogger sucht die Konfigurationsdatei in dieser Reihenfolge:

  1. der mit --config <pfad> angegebene Pfad
  2. $HOME/.lxlogger.toml
  3. ./.lxlogger.toml (aktuelles Verzeichnis)
  4. /etc/lxlogger/lxlogger.toml (üblich beim Dienstbetrieb)

Jeder Wert lässt sich zusätzlich über eine Umgebungsvariable LXL_<SEKTION>_<KEY> überschreiben (z. B. LXL_MINISERVER_HOST=192.168.1.77).

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-Benutzer
password = "CHANGE-ME" # Login-Passwort
[[sinks]]
kind = "influxdb_v2"
url = "http://localhost:8086" # Basis-URL des InfluxDB-v2-Servers
org = "mein-haus" # Organisation
bucket = "lxlogger" # Ziel-Bucket
token = "CHANGE-ME-TOKEN" # API-Token

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

Passwörter und API-Tokens müssen nicht im Klartext in der Konfigurationsdatei stehen. LxLogger löst jedes Geheimnis in dieser Reihenfolge auf:

  1. Umgebungsvariable (z. B. LXL_MINISERVER_PASSWORD)
  2. Umgebungsvariable mit _FILE-Suffix (Pfad zu einer Datei mit dem Wert – ideal für als Datei gemountete Docker-/Kubernetes-Secrets)
  3. OS-Schlüsselbund (macOS Schlüsselbund / Windows-Anmeldeinformationsverwaltung / Linux Secret Service)
  4. die Konfigurationsdatei (Klartext)

Den OS-Schlüsselbund verwaltest du mit dem Befehl secret:

Terminal-Fenster
# Geheimnis interaktiv (ohne Anzeige) hinterlegen
lxlogger secret set miniserver.password
# zeigt je Geheimnis die Quelle an – nie den Wert selbst
lxlogger secret list

Stabile Schlüssel sind u. a. miniserver.password, influxdb_v1.password, influxdb_v2.token und influxdb_v2.admin_token.

Vor dem ersten Start kannst du die Konfiguration und die Erreichbarkeit des Miniservers prüfen:

Terminal-Fenster
lxlogger check --config /etc/lxlogger/lxlogger.toml

Der Befehl gibt strukturiert ✓/✗ aus und beendet sich mit Code 0, wenn alles in Ordnung ist – sonst mit 1.

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 das Zielverzeichnis für Backup-Archive fest (siehe Backup).

Ü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:

VariableBeschreibung
$nDer Name der Statistik.
$rDer Raum, der dem Sensor/Gerät in der Loxone Config zugewiesen wurde.
$cDie 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.

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.