Konfiguration 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
Abschnitt betitelt „compose.yaml“In der compose.yaml wird ein neuer Service namens shelly-collector hinzugefügt. Dieser sollte so aussehen:
services: # ... shelly-collector: image: ghcr.io/solectrus/shelly-collector:latest environment: - TZ - SHELLY_HOST - SHELLY_PASSWORD - SHELLY_CLOUD_SERVER - SHELLY_AUTH_KEY - SHELLY_DEVICE_ID - SHELLY_INTERVAL - SHELLY_INVERT_POWER - INFLUX_HOST - INFLUX_SCHEMA - INFLUX_PORT - INFLUX_TOKEN=${INFLUX_TOKEN_WRITE} - INFLUX_ORG - INFLUX_BUCKET - INFLUX_MEASUREMENT=${INFLUX_MEASUREMENT_SHELLY} - INFLUX_MODE - INFLUX_POWER_DATA_TYPE logging: driver: 'json-file' options: max-size: 10m max-file: '3' restart: unless-stopped depends_on: influxdb: condition: service_healthy links: - influxdb labels: - com.centurylinklabs.watchtower.scope=solectrus # ...Umgebungsvariablen (.env)
Abschnitt betitelt „Umgebungsvariablen (.env)“SHELLY_HOST
Abschnitt betitelt „SHELLY_HOST“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_HOST=192.168.178.5SHELLY_PASSWORD
Abschnitt betitelt „SHELLY_PASSWORD“Optionales Passwort des Shelly. Dieses wird nur benötigt, wenn der Zugriff auf den Shelly durch ein Passwort geschützt ist. Das Passwort wird in der Regel im Web-Interface des Shelly unter Settings / Device Settings / Authentication festgelegt.
SHELLY_PASSWORD=my-shelly-passwordSHELLY_CLOUD_SERVER
Abschnitt betitelt „SHELLY_CLOUD_SERVER“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_CLOUD_SERVER=https://shelly-42-eu.shelly.cloudSHELLY_AUTH_KEY
Abschnitt betitelt „SHELLY_AUTH_KEY“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_AUTH_KEY=ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890SHELLY_DEVICE_ID
Abschnitt betitelt „SHELLY_DEVICE_ID“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_DEVICE_ID=12345abcdef0SHELLY_INTERVAL
Abschnitt betitelt „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.
SHELLY_INTERVAL=10SHELLY_INVERT_POWER
Abschnitt betitelt „SHELLY_INVERT_POWER“Das Vorzeichen der Leistung wird umgedreht, d.h. negative Werte werden zu positiven und umgekehrt. Dies ist nützlich, wenn der Shelly eine Stromerzeugung überwacht, z.B. bei einem Balkonkraftwerk.
SHELLY_INVERT_POWER=trueINFLUX_HOST
Abschnitt betitelt „INFLUX_HOST“Hostname des InfluxDB-Servers. Im Normalfall, wenn InfluxDB im gleichen Docker-Netzwerk läuft, ist das der Name des Docker-Services (z.B. influxdb). Es kann aber auch ein externer InfluxDB-Server sein, z.B. influxdb.example.com.
INFLUX_HOST=influxdbINFLUX_SCHEMA
Abschnitt betitelt „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.
INFLUX_SCHEMA=httpsINFLUX_PORT
Abschnitt betitelt „INFLUX_PORT“Port für die Verbindung zu InfluxDB. Bei Verwendung einer externen, per TLS abgesicherten InfluxDB kann z.B. 443 eingestellt werden.
INFLUX_PORT=443INFLUX_TOKEN
Abschnitt betitelt „INFLUX_TOKEN“Token für den Zugriff auf InfluxDB. Dieser Token muss die Berechtigung haben, Daten in den angegebenen Bucket zu schreiben.
Das Token kann manuell in InfluxDB erstellt werden, alternativ kann aber auch das INFLUX_ADMIN_TOKEN verwendet werden.
INFLUX_TOKEN=my-super-secret-admin-tokenINFLUX_ORG
Abschnitt betitelt „INFLUX_ORG“Organisation in InfluxDB, in der die Messwerte gespeichert werden sollen.
INFLUX_ORG=solectrusINFLUX_BUCKET
Abschnitt betitelt „INFLUX_BUCKET“Bucket in InfluxDB, in der die Messwerte gespeichert werden sollen.
INFLUX_BUCKET=solectrusINFLUX_MEASUREMENT
Abschnitt betitelt „INFLUX_MEASUREMENT“Name des Measurements in InfluxDB, das die Messwerte aufnehmen soll.
INFLUX_MEASUREMENT=HeatpumpWenn man mehrere Shelly verwendet, müssen mehrere Collectoren eingerichtet werden, die jeweils ein eigenes Measurement verwenden, um die Messwerte sauber zu trennen. Mehr dazu in im Kapitel Zusätzliche Shelly.
INFLUX_MODE
Abschnitt betitelt „INFLUX_MODE“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.
INFLUX_MODE=essentialINFLUX_POWER_DATA_TYPE
Abschnitt betitelt „INFLUX_POWER_DATA_TYPE“Datentyp für Leistungswerte in InfluxDB (Float oder Integer). Wenn dieser auf “Integer” gesetzt ist, werden alle Leistungswerte (power, power_a, power_b, power_c) als Ganzzahlen gespeichert. Dies ist nützlich bei der Migration von Systemen, die diese Werte zuvor als Ganzzahlen gespeichert haben, da InfluxDB keine Änderung des Datentyps eines Feldes erlaubt.
INFLUX_POWER_DATA_TYPE=IntegerZeitzone gemäß Liste
TZ=Europe/Berlin