Konfigurieren des MQTT-Collectors
Der MQTT-Collector wird üblicherweise in die Gesamtkonfiguration von SOLECTRUS integriert, d.h. die bestehenden Dateien compose.yaml
und .env
sind zu erweitern.
compose.yaml
services:
mqtt-collector:
image: ghcr.io/solectrus/mqtt-collector:latest
environment:
- TZ
- INFLUX_SCHEMA
- INFLUX_HOST
- INFLUX_TOKEN
- INFLUX_ORG
- INFLUX_BUCKET
- INFLUX_PORT
- MQTT_HOST
- MQTT_PORT
- MQTT_SSL
- MQTT_USERNAME
- MQTT_PASSWORD
- MAPPING_0_TOPIC
- MAPPING_0_JSON_KEY
- MAPPING_0_JSON_PATH
- MAPPING_0_JSON_FORMULA
- MAPPING_0_MEASUREMENT
- MAPPING_0_MEASUREMENT_POSITIVE
- MAPPING_0_MEASUREMENT_NEGATIVE
- MAPPING_0_FIELD
- MAPPING_0_FIELD_POSITIVE
- MAPPING_0_FIELD_NEGATIVE
- MAPPING_0_TYPE
- MAPPING_0_MIN
- MAPPING_0_MAX
- ... # weitere Mappings bei Bedarf
logging:
options:
max-size: 10m
max-file: '3'
restart: unless-stopped
depends_on:
influxdb:
condition: service_healthy
links:
- influxdb
labels:
- com.centurylinklabs.watchtower.scope=solectrus
influxdb:
# ...
watchtower:
# ...
Umgebungsvariablen
MQTT_HOST
Hostname des MQTT-Brokers. Dies kann die IP-Adresse des lokal erreichbaren ioBroker sein, aber auch die Domain eines extern erreichbaren Brokers. Darf kein http://
oder https://
enthalten!
MQTT_PORT
Port des MQTT-Brokers. Meist ist das 1883
.
MQTT_SSL
Wenn der MQTT-Broker über TLS abgesichert ist, muss dieser Wert auf true
gesetzt werden. Bei einem lokalen ioBroker ist das üblicherweise nicht der Fall, die Angabe kann dann entfallen oder auf false
gesetzt werden.
MQTT_USERNAME
Falls erforderlich: Benutzername für den Zugriff auf den MQTT-Broker.
MQTT_PASSWORD
Falls erforderlich: Passwort für den Zugriff auf den MQTT-Broker.
INFLUX_HOST
Hostname des InfluxDB-Servers. Im Normalfall, wenn InfluxDB im gleichen Docker-Netzwerk läuft, ist das der Name des Containers (z.B. influxdb
). Es kann aber auch ein externer InfluxDB-Server sein, z.B. influxdb.example.com
.
INFLUX_SCHEMA
Schema für die Verbindung zu InfluxDB. Bei Verwendung einer externen InfluxDB, die über TLS abgesichert ist, muss dieser Wert auf https
gesetzt werden.
Standardwert: http
INFLUX_PORT
Port für die Verbindung zu InfluxDB.
Optional, Standard ist 8086
Bei Verwendung einer externen, per TLS abgesicherten InfluxDB kann z.B. 443
eingestellt werden.
INFLUX_TOKEN
Token für den Zugriff auf InfluxDB. Dieser Token muss in InfluxDB erstellt werden und die Berechtigung haben, Daten in den angegebenen Bucket zu schreiben.
INFLUX_ORG
Organisation in InfluxDB, in der die Messwerte gespeichert werden sollen.
INFLUX_BUCKET
Bucket in InfluxDB, in der die Messwerte gespeichert werden sollen.
Topics
Für jedes Topic, das der MQTT-Collector abonnieren soll, muss ein Mapping definiert werden. Ein Mapping besteht aus mehreren Umgebungsvariablen, die mit dem Präfix MAPPING_X_
beginnen, wobei X
eine eindeutige Zahl sein muss.
Es stehen folgende Variablen zur Verfügung:
MAPPING_X_TOPIC
MAPPING_X_JSON_KEY
MAPPING_X_JSON_PATH
MAPPING_X_JSON_FORMULA
MAPPING_X_MEASUREMENT
MAPPING_X_MEASUREMENT_POSITIVE
MAPPING_X_MEASUREMENT_NEGATIVE
MAPPING_X_FIELD
MAPPING_X_FIELD_POSITIVE
MAPPING_X_FIELD_NEGATIVE
MAPPING_X_TYPE
MAPPING_X_MIN
MAPPING_X_MAX
Eine ausführliche Beschreibung eines Mappings findet sich auf der folgenden Seite:
Abonnieren von Topics.
Es ist unbedingt darauf zu achten, dass die definierten Variablen alle auch in der compose.yaml
aufgeführt sind. Andernfalls sind sie für den MQTT-Collector nicht erreichbar.