Konfigurieren des Shelly-Collectors

Der Shelly-Collector wird üblicherweise in die Gesamtkonfiguration von SOLECTRUS integriert, d.h. die bestehenden Dateien compose.yaml und .env sind zu erweitern.

compose.yaml

services:
  shelly-collector:
    image: ghcr.io/solectrus/shelly-collector:latest
    environment:
      - TZ
      - SHELLY_HOST
      - SHELLY_CLOUD_SERVER
      - SHELLY_AUTH_KEY
      - SHELLY_DEVICE_ID
      - SHELLY_INTERVAL
      - INFLUX_HOST
      - INFLUX_SCHEMA
      - INFLUX_PORT
      - INFLUX_TOKEN=${INFLUX_TOKEN_WRITE}
      - INFLUX_ORG
      - INFLUX_BUCKET
      - INFLUX_MEASUREMENT=${INFLUX_MEASUREMENT_SHELLY}
      - INFLUX_MODE
    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:
    # ...

Die beiden Variablen INFLUX_TOKEN und INFLUX_MEASUREMENT werden anders lautenden Umgebungsvariablen entnommen. Dies ermöglicht eine Nutzung von Variablen für verschiedene Container und vermeidet Redundanzen.

Umgebungsvariablen

SHELLY_HOST (nur für lokalen Zugriff, ab Version 0.6.0)

Hostname des Shelly. Dies ist üblicherweise eine IP-Adresse, kann aber auch eine lokale Domain sein. Es darf kein http:// oder https:// enthalten sein!

SHELLY_CLOUD_SERVER (nur für Cloud-Zugriff, ab Version 0.6.0)

Name des Shelly-Cloud-Servers, z.B. https://shelly-42-eu.shelly.cloud

Welcher Server hier einzutragen ist, lässt sich in der Shelly-Cloud unter folgendem Link ablesen: https://control.shelly.cloud, dort unter Settings / User Settings / Authorization cloud key

Der Shelly muss in der Shelly-Cloud registriert sein und die Datenübermittlung in die Cloud muss aktiviert sein.

SHELLY_AUTH_KEY (nur für Cloud-Zugriff, ab Version 0.6.0)

Authentifizierungsschlüssel für den Zugriff auf die Shelly-Cloud. Dieser Schlüssel muss in der Shelly-Cloud erstellt werden und die Berechtigung haben, Daten des angegebenen Geräts abzurufen.

Welcher Schlüssel hier einzutragen ist, lässt sich in der Shelly-Cloud unter folgendem Link ablesen: https://control.shelly.cloud, dort unter Settings / User Settings / Authorization cloud key / Get Key

SHELLY_DEVICE_ID (nur für Cloud-Zugriff, ab Version 0.6.0)

ID des Shelly-Geräts, das abgefragt werden soll. Diese ID kann in der Shelly-Cloud abgelesen werden.

Welche ID hier einzutragen ist, lässt sich in der Shelly-Cloud beim jeweiligen Gerät unter Settings / Device information ablesen.

SHELLY_INTERVAL

Häufigkeit der Abfrage des aktuellen Messwertes (in Sekunden). Es empfiehlt sich eine Abfrage alle 5 Sekunden, um eine gute Auflösung zu erhalten. Bei Nutzung des Cloud-Zugriff ist zu beachten, dass die Shelly-Cloud höchstens einen Request pro Sekunde zulässt. Das ist relevant, wenn man viele Shelly-Geräte abfragen möchte.

Standardwert: 5

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.

INFLUX_MEASUREMENT

Name des Measurements in InfluxDB, das die Messwerte aufnehmen soll.

INFLUX_MODE (ab Version 0.5.0)

Modus, in dem die Messwerte an InfluxDB übertragen werden. Mögliche Werte sind default und essential. Im essential-Modus werden nur dann Messwerte nach InfluxDB geschrieben, wenn ein Verbrauch stattfindet (also nicht 0 ist). Dies spart Speicherplatz und schont die Datenbank. Es eignet sich vor allem für Geräte, die nur selten in Betrieb sind (z.B. Waschmaschine, Geschirrspüler etc).

Beim Abschalten des Geräts wird einmalig ein Wert von 0 Watt geschrieben, um InfluxDB eine präzise Berechnung der Verbrauchsmenge zu ermöglichen.

Im default-Modus wird jeder erhaltene Messwert nach InfluxDB geschrieben.

Beispielhafte .env

Für lokalen Zugriff

SHELLY_HOST=192.168.178.5
SHELLY_INTERVAL=5
INFLUX_MEASUREMENT_SHELLY=heatpump

INFLUX_HOST=influxdb
INFLUX_SCHEMA=http
INFLUX_PORT=8086
INFLUX_TOKEN_WRITE=my-super-secret-admin-token
INFLUX_ORG=solectrus
INFLUX_BUCKET=solectrus
INFLUX_MODE=essential

Für Cloud-Zugriff

SHELLY_CLOUD_SERVER=https://shelly-42-eu.shelly.cloud
SHELLY_AUTH_KEY=ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890
SHELLY_DEVICE_ID=12345abcdef0
SHELLY_INTERVAL=5
INFLUX_MEASUREMENT_SHELLY=heatpump

INFLUX_HOST=influxdb
INFLUX_SCHEMA=http
INFLUX_PORT=8086
INFLUX_TOKEN_WRITE=my-super-secret-admin-token
INFLUX_ORG=solectrus
INFLUX_BUCKET=solectrus
INFLUX_MODE=essential