Senec + Anker Solix 3 + Shelly #4448
Replies: 6 comments 1 reply
-
Um ein BKW zu ergänzen, benötigst du eine kontinuierliche Messung des erzeugten Stroms. Das kann über einen Shelly erfolgen. Wo dieser elektrisch am besten installiert wird, ist individuell verschieden - Hauptsache, es wird wirklich nur der erzeugte Strom des BKW gemessen und nicht irgendetwas anderes. Den Shelly kannst du dann mit dem Shelly-Collector abfragen. In der Doku finden sich weitere Informationen zum Einrichten multipler Erzeuger. Und natürlich kannst du gerne deine Konfiguration hier posten. |
Beta Was this translation helpful? Give feedback.
-
services:
dashboard:
image: ghcr.io/solectrus/solectrus:latest
depends_on:
postgresql:
condition: service_healthy
influxdb:
condition: service_healthy
redis:
condition: service_healthy
links:
- postgresql
- influxdb
- redis
ports:
- 3000:3000
environment:
- TZ
- APP_HOST
- FORCE_SSL
- SECRET_KEY_BASE
- WEB_CONCURRENCY
- INSTALLATION_DATE
- ADMIN_PASSWORD
- FRAME_ANCESTORS
- UI_THEME
- CO2_EMISSION_FACTOR
- DB_HOST=postgresql
- DB_PASSWORD=${POSTGRES_PASSWORD}
- DB_USER=postgres
- REDIS_URL=redis://redis:6379/1
- INFLUX_HOST
- INFLUX_TOKEN=${INFLUX_TOKEN_READ}
- INFLUX_ORG
- INFLUX_BUCKET
- INFLUX_POLL_INTERVAL
- INFLUX_SENSOR_INVERTER_POWER
- INFLUX_SENSOR_INVERTER_POWER_1
- INFLUX_SENSOR_INVERTER_POWER_2
- INFLUX_SENSOR_INVERTER_POWER_3
- INFLUX_SENSOR_INVERTER_POWER_4
- INFLUX_SENSOR_INVERTER_POWER_5
- INFLUX_SENSOR_HOUSE_POWER
- INFLUX_SENSOR_GRID_IMPORT_POWER
- INFLUX_SENSOR_GRID_EXPORT_POWER
- INFLUX_SENSOR_BATTERY_CHARGING_POWER
- INFLUX_SENSOR_BATTERY_DISCHARGING_POWER
- INFLUX_SENSOR_BATTERY_SOC
- INFLUX_SENSOR_WALLBOX_POWER
- INFLUX_SENSOR_WALLBOX_CAR_CONNECTED
- INFLUX_SENSOR_CASE_TEMP
- INFLUX_SENSOR_INVERTER_POWER_FORECAST
- INFLUX_SENSOR_SYSTEM_STATUS
- INFLUX_SENSOR_SYSTEM_STATUS_OK
- INFLUX_SENSOR_GRID_EXPORT_LIMIT
- INFLUX_SENSOR_HEATPUMP_POWER
- INFLUX_EXCLUDE_FROM_HOUSE_POWER
healthcheck:
test:
- CMD-SHELL
- nc -z 127.0.0.1 3000 || exit 1
interval: 30s
timeout: 10s
retries: 5
start_period: 10s
restart: unless-stopped
logging:
options:
max-size: 10m
max-file: '3'
labels:
- com.centurylinklabs.watchtower.scope=solectrus
influxdb:
image: influxdb:2.7-alpine
volumes:
- ${INFLUX_VOLUME_PATH}:/var/lib/influxdb2
environment:
- TZ
- DOCKER_INFLUXDB_INIT_MODE=setup
- DOCKER_INFLUXDB_INIT_USERNAME=${INFLUX_USERNAME}
- DOCKER_INFLUXDB_INIT_PASSWORD=${INFLUX_PASSWORD}
- DOCKER_INFLUXDB_INIT_ORG=${INFLUX_ORG}
- DOCKER_INFLUXDB_INIT_BUCKET=${INFLUX_BUCKET}
- DOCKER_INFLUXDB_INIT_ADMIN_TOKEN=${INFLUX_ADMIN_TOKEN}
command: influxd run --bolt-path /var/lib/influxdb2/influxd.bolt --engine-path /var/lib/influxdb2/engine --store disk
restart: unless-stopped
healthcheck:
test:
- CMD
- influx
- ping
interval: 30s
timeout: 10s
retries: 5
start_period: 30s
logging:
options:
max-size: 10m
max-file: '3'
labels:
- com.centurylinklabs.watchtower.scope=solectrus
postgresql:
image: postgres:16-alpine
environment:
- TZ
- POSTGRES_PASSWORD
volumes:
- ${DB_VOLUME_PATH}:/var/lib/postgresql/data
restart: unless-stopped
healthcheck:
test:
- CMD-SHELL
- pg_isready -U postgres
interval: 10s
timeout: 20s
retries: 5
start_period: 60s
logging:
options:
max-size: 10m
max-file: '3'
labels:
- com.centurylinklabs.watchtower.scope=solectrus
redis:
image: redis:7-alpine
environment:
- TZ
volumes:
- ${REDIS_VOLUME_PATH}:/data
restart: unless-stopped
healthcheck:
test:
- CMD
- redis-cli
- ping
interval: 10s
timeout: 20s
retries: 5
start_period: 60s
logging:
options:
max-size: 10m
max-file: '3'
labels:
- com.centurylinklabs.watchtower.scope=solectrus
senec-collector:
image: ghcr.io/solectrus/senec-collector:latest
environment:
- TZ
- SENEC_ADAPTER
- SENEC_HOST
- SENEC_SCHEMA
- SENEC_INTERVAL
- SENEC_LANGUAGE
- SENEC_USERNAME
- SENEC_PASSWORD
- INFLUX_HOST
- INFLUX_SCHEMA
- INFLUX_PORT
- INFLUX_TOKEN=${INFLUX_TOKEN_WRITE}
- INFLUX_ORG
- INFLUX_BUCKET
- INFLUX_MEASUREMENT=${SENEC_INFLUX_MEASUREMENT}
restart: unless-stopped
logging:
options:
max-size: 10m
max-file: '3'
depends_on:
influxdb:
condition: service_healthy
links:
- influxdb
labels:
- com.centurylinklabs.watchtower.scope=solectrus
forecast-collector:
image: ghcr.io/solectrus/forecast-collector:latest
environment:
- TZ
- FORECAST_PROVIDER
- FORECAST_LATITUDE
- FORECAST_LONGITUDE
- FORECAST_DECLINATION
- FORECAST_AZIMUTH
- FORECAST_KWP
- FORECAST_CONFIGURATIONS
- FORECAST_0_LATITUDE
- FORECAST_0_LONGITUDE
- FORECAST_0_DECLINATION
- FORECAST_0_AZIMUTH
- FORECAST_0_KWP
- FORECAST_0_DAMPING_MORNING
- FORECAST_0_DAMPING_EVENING
- FORECAST_1_LATITUDE
- FORECAST_1_LONGITUDE
- FORECAST_1_DECLINATION
- FORECAST_1_AZIMUTH
- FORECAST_1_KWP
- FORECAST_1_DAMPING_MORNING
- FORECAST_1_DAMPING_EVENING
- FORECAST_2_LATITUDE
- FORECAST_2_LONGITUDE
- FORECAST_2_DECLINATION
- FORECAST_2_AZIMUTH
- FORECAST_2_KWP
- FORECAST_2_DAMPING_MORNING
- FORECAST_2_DAMPING_EVENING
- FORECAST_3_LATITUDE
- FORECAST_3_LONGITUDE
- FORECAST_3_DECLINATION
- FORECAST_3_AZIMUTH
- FORECAST_3_KWP
- FORECAST_3_DAMPING_MORNING
- FORECAST_3_DAMPING_EVENING
- FORECAST_INTERVAL
- FORECAST_SOLAR_APIKEY
- INFLUX_HOST
- INFLUX_PORT
- INFLUX_SCHEMA
- INFLUX_TOKEN=${INFLUX_TOKEN_WRITE}
- INFLUX_ORG
- INFLUX_BUCKET
- INFLUX_MEASUREMENT=${FORECAST_INFLUX_MEASUREMENT}
- FORECAST_DAMPING_MORNING
- FORECAST_DAMPING_EVENING
- FORECAST_HORIZON
- FORECAST_INVERTER
- SOLCAST_APIKEY
- SOLCAST_SITE
- SOLCAST_0_SITE
- SOLCAST_1_SITE
restart: unless-stopped
logging:
options:
max-size: 10m
max-file: '3'
depends_on:
influxdb:
condition: service_healthy
links:
- influxdb
labels:
- com.centurylinklabs.watchtower.scope=solectrus
shelly-collector:
image: ghcr.io/solectrus/shelly-collector:latest
environment:
- TZ
- SHELLY_HOST
- 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
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
watchtower:
image: containrrr/watchtower
environment:
- TZ
volumes:
- /var/run/docker.sock:/var/run/docker.sock
command: --scope solectrus --cleanup
restart: unless-stopped
logging:
options:
max-size: 10m
max-file: '3'
labels:
- com.centurylinklabs.watchtower.scope=solectrus |
Beta Was this translation helpful? Give feedback.
-
##################################################################
### Generic ###
##################################################################
TZ=Europe/Berlin
##################################################################
### Dashboard application ###
##################################################################
# Domain name or IP address of your host
APP_HOST=192.168.178.55
# Date of commissioning of your photovoltaic system
INSTALLATION_DATE=2020-02-26
# Password to login as administrator, required to manage settings like historical prices
ADMIN_PASSWORD=admin
# Interval in seconds for polling the InfluxDB
INFLUX_POLL_INTERVAL=5
# SSL redirect: Use "true" if you want to auto-redirect to https, but ensure that you have a valid SSL certificate
# and a reverse proxy in front of the app!
# In all other cases, the option must be "false"!
FORCE_SSL=false
# Secret token to secure cookies, 128 chars long hexadecimal encoded string
SECRET_KEY_BASE=86ab533501e8dd7267e8693bc152cfd1978c85a2de46de3080b7eb9c957b07e54b2911c56f835442a7610de65a3baca63763b26c76e9434fb4285a7e8500b3c5
# Start web server Puma in single mode (recommended to reduce memory usage)
WEB_CONCURRENCY=0
# Optional: Allow iframe embedding
# FRAME_ANCESTORS=https://my-other-home-automation-software.com
# Password for the PostgreSQL database, used by the app to comunicate internally with the database
# Caution: Do not change this after the first run, otherwise the app will no longer be able to connect to the database!
POSTGRES_PASSWORD=my-secret-db-password
##################################################################
### Sensor mapping ###
##################################################################
# Where to find the data in the InfluxDB
# Each sensor must be mapped to a measurement and a field
# The format is: INFLUX_SENSOR_NAME=MEASUREMENT:FIELD
# Example: INFLUX_SENSOR_INVERTER_POWER=my_pv:inverter_power
INFLUX_SENSOR_INVERTER_POWER=SENEC:inverter_power
INFLUX_SENSOR_INVERTER_POWER_1=SENEC:solar_mpp1_power
INFLUX_SENSOR_INVERTER_POWER_2=SENEC:solar_mpp2_power
INFLUX_SENSOR_INVERTER_POWER_3=SENEC:solar_mpp3_power
# INFLUX_SENSOR_INVERTER_POWER_4=balcony:value
# INFLUX_SENSOR_INVERTER_POWER_5=
INFLUX_SENSOR_HOUSE_POWER=SENEC:house_power
INFLUX_SENSOR_GRID_IMPORT_POWER=SENEC:grid_power_plus
INFLUX_SENSOR_GRID_EXPORT_POWER=SENEC:grid_power_minus
INFLUX_SENSOR_BATTERY_CHARGING_POWER=SENEC:bat_power_plus
INFLUX_SENSOR_BATTERY_DISCHARGING_POWER=SENEC:bat_power_minus
INFLUX_SENSOR_BATTERY_SOC=SENEC:bat_fuel_charge
INFLUX_SENSOR_WALLBOX_POWER=SENEC:wallbox_charge_power
INFLUX_SENSOR_CASE_TEMP=SENEC:case_temp
INFLUX_SENSOR_SYSTEM_STATUS=SENEC:current_state
INFLUX_SENSOR_SYSTEM_STATUS_OK=SENEC:current_state_ok
INFLUX_SENSOR_GRID_EXPORT_LIMIT=SENEC:power_ratio
INFLUX_SENSOR_INVERTER_POWER_FORECAST=forecast:watt
# INFLUX_SENSOR_HEATPUMP_POWER=
# Optional: Exclude sensors from house power calculation
# Default is HEATPUMP_POWER (if defined)
INFLUX_EXCLUDE_FROM_HOUSE_POWER=WALLBOX_POWER
##################################################################
### SENEC Collector ###
##################################################################
# The adapter to use
# Values: local, cloud
SENEC_ADAPTER=local
# The IP address or hostname of your SENEC device
# Available only when using the local adapter
SENEC_HOST=192.168.178.48
# The schema protocol to use
# Available only when using the local adapter
# Values: http, https
SENEC_SCHEMA=https
# The language to use for status strings
# Available only when using the local adapter
# Values: de, en, it
SENEC_LANGUAGE=de
# The credentials for mein-senec.de
# Available only when using the cloud adapter
# [email protected]
# SENEC_PASSWORD=my-senec-password
# The system ID of your SENEC device
# Available only when using the cloud adapter
# Can be empty if there is just one system
# SENEC_SYSTEM_ID=123456
# The interval in seconds for polling
# Minimum for local adapter is 5 seconds
# Minimum for cloud adapter is 30 seconds
SENEC_INTERVAL=5
# Measurement name for InfluxDB
SENEC_INFLUX_MEASUREMENT=SENEC
# Optional: Disable specific fields you do not want to send to InfluxDB.
# This can be useful if you are tracking them from another source.
# Comma separated list of fields, no whitespace. Example:
# SENEC_IGNORE=wallbox_charge_power,grid_power_minus
##################################################################
### Forecast collector ###
##################################################################
FORECAST_PROVIDER=forecast.solar
# Number of planes (if you have more than one). Default is 1. Forecast.solar allows up to 4 planes, Solcast up to 2.
FORECAST_CONFIGURATIONS=1
# Update interval in seconds
FORECAST_INTERVAL=900
# Measurement name for InfluxDB
FORECAST_INFLUX_MEASUREMENT=forecast
### Details for forecast.solar
# API docs: https://doc.forecast.solar/doku.php?id=api:estimate
# Latitude of the plant location
FORECAST_LATITUDE=50.931642
# Longitude of the plant location
FORECAST_LONGITUDE=11.295674
# Plane declination: 0 (horizontal) - 90 (vertical)
FORECAST_DECLINATION=30
# Plane azimuth: -180 ... 180 (-180 = north, -90 = east, 0 = south, 90 = west, 180 = north)
# FORECAST_AZIMUTH=20
# Installed modules power in kilowatt peak (kWp)
FORECAST_KWP=8.58
# Optional damping factors (http://doc.forecast.solar/damping)
# FORECAST_DAMPING_MORNING=0.5
# FORECAST_DAMPING_EVENING=0
#
# Optional configuration for multiple planes
#
# Starting from 0, add params different from the values defined above
# FORECAST_0_DECLINATION=35
# FORECAST_0_AZIMUTH=-180
# FORECAST_0_KWP=5.32
#
# FORECAST_1_DECLINATION=38
# FORECAST_1_AZIMUTH=-90
# FORECAST_1_KWP=5.32
#
# FORECAST_2_DECLINATION=50
# FORECAST_2_AZIMUTH=0
# FORECAST_2_KWP=7.84
#
# FORECAST_3_DECLINATION=50
# FORECAST_3_AZIMUTH=90
# FORECAST_3_KWP=2.58
#
# Available params are:
# - FORECAST_x_LATITUDE
# - FORECAST_x_LONGITUDE
# - FORECAST_x_DECLINATION
# - FORECAST_x_AZIMUTH
# - FORECAST_x_KWP
# - FORECAST_x_DAMPING_MORNING
# - FORECAST_x_DAMPING_EVENING
# Optional API key for registered users of forecast.solar (https://doc.forecast.solar/account_models)
# FORECAST_SOLAR_APIKEY=abc123
### Details for solcast.com
# SOLCAST_APIKEY=secret-solcast-api-key
SOLCAST_SITE=1111-2222-3333-4444
# SOLCAST_0_SITE=1111-2222-3333-4444
# SOLCAST_1_SITE=5555-6666-7777-8888
##################################################################
### InfluxDB time series database ###
##################################################################
# InfluxDB host
INFLUX_HOST=influxdb
# InfluxDB schema (http or https)
INFLUX_SCHEMA=http
# InfluxDB port
INFLUX_PORT=8086
# Credentials for the InfluxDB, don't change after the first run!
INFLUX_ORG=solectrus
INFLUX_USERNAME=admin
INFLUX_PASSWORD=ExAmPl3PA55W0rD
INFLUX_ADMIN_TOKEN=my-super-secret-admin-token
# Set these names before first run, they can't be changed later!
INFLUX_BUCKET=solectrus
# To keep things simple, we use ONE token (INFLUX_ADMIN_TOKEN) for both writing and reading.
# For better security, you can use two separate tokens, created via the InfluxDB frontend.
INFLUX_TOKEN_WRITE=my-super-secret-admin-token
INFLUX_TOKEN_READ=my-super-secret-admin-token
# Volume path for storing the InfluxDB data
INFLUX_VOLUME_PATH=./influxdb
##################################################################
### PostgreSQL database ###
##################################################################
# Volume path for storing the PostgreSQL data
DB_VOLUME_PATH=./postgresql
##################################################################
### Redis in-memory database ###
##################################################################
# Volume path for storing the database snapshot
REDIS_VOLUME_PATH=./redis
##################################################################
### Shelly-Collector ###
##################################################################
# There are two ways to get data from Shelly devices:
# 1. Direct connection to the device
# 2. Using the Shelly cloud
# You can choose one of the two methods by commenting out the other.
# Alternative 1: Direct connection to the device
SHELLY_HOST=192.168.1.1
# Alternative 2: Using the Shelly cloud
# Use the Shelly cloud. Get Server and Auth_Key from
# https://control.shelly.cloud/#/settings/user
# SHELLY_CLOUD_SERVER=https://shelly-42-eu.shelly.cloud
# SHELLY_AUTH_KEY=the-long-auth-key
# SHELLY_DEVICE_ID=12345abcdef0
# Interval in seconds to get data from Shelly
SHELLY_INTERVAL=5
# Optional: Invert power values (useful for feed-in scenarios)
# When enabled, all power measurements will have their sign reversed.
# This is helpful to distinguish between power consumption (positive)
# and power feed-in (negative) in your InfluxDB data.
# SHELLY_INVERT_POWER=true
# Credentials of your InfluxDB installation
INFLUX_HOST=influxdb
INFLUX_SCHEMA=http
INFLUX_PORT=8086
INFLUX_TOKEN=my-super-secret-write-token
INFLUX_ORG=solectrus
# Customize InfluxDB storage
INFLUX_BUCKET=solectrus
INFLUX_MEASUREMENT=shelly
# Optional: Essential mode to reduce data sent to InfluxDB
# When enabled, it minimizes the data sent to InfluxDB
# by skipping consecutive records with zero power values.
# INFLUX_MODE=essential |
Beta Was this translation helpful? Give feedback.
-
Hallo, vielen Dank für die Antwort. Ich hab mal beide Dateien Kopiert, hoffe das die so passen. |
Beta Was this translation helpful? Give feedback.
-
Entscheidend ist das hier in der INFLUX_SENSOR_INVERTER_POWER=SENEC:inverter_power
INFLUX_SENSOR_INVERTER_POWER_1=SENEC:solar_mpp1_power
INFLUX_SENSOR_INVERTER_POWER_2=SENEC:solar_mpp2_power
INFLUX_SENSOR_INVERTER_POWER_3=SENEC:solar_mpp3_power
# INFLUX_SENSOR_INVERTER_POWER_4=balcony:value
# INFLUX_SENSOR_INVERTER_POWER_5= So wird es nicht funktionieren. Die Fields Der Shelly schreibt bei dir ins Measurement Schlussendlich muss Es müsste insgesamt also so aussehen: INFLUX_SENSOR_INVERTER_POWER=
INFLUX_SENSOR_INVERTER_POWER_1=SENEC:mpp1_power
INFLUX_SENSOR_INVERTER_POWER_2=SENEC:mpp2_power
INFLUX_SENSOR_INVERTER_POWER_3=SENEC:mpp3_power
INFLUX_SENSOR_INVERTER_POWER_4=shelly:power
INFLUX_SENSOR_INVERTER_POWER_5= Nicht vergessen: Nach einem Neustart ( Das sollte bei dir dann funktionieren. Allerdings wird der Hausverbrauch zu gering sein, weil das BKW diesen ja reduziert. Auch die SENEC-App wird (völlig unabhängig von SOLECTRUS) einen falschen Hausverbrauch anzeigen. Für SOLECTRUS gibt es dafür eine Lösung: Falls du dazu noch Hilfe benötigst, melde dich nochmal. |
Beta Was this translation helpful? Give feedback.
-
Vielen Dank Die Änderungen habe ich hinterlegt. Heist ich hab jetzt in der compose.yml, ingest eingefügt und dann die Collectoren angepasst aber was muss ich in der .env ändern ?
|
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
Hallo,
ich habe meine vorhandene Senec-Anlage mit einem Balkonkraftwerk von Anker erweitert.
Da ich mich bisher mit Google und lesen durchprobiert habe benötige ich jetzt direkt Hilfe.
kurz der Aufbau:
Senec mit Speicher (V3 Duo) auf dem Hausdach
Anker Solix 3 Pro in der Garage, für Senec mit einem Enfluri 3
die Fragen:
Kommt der Shelly 3EM pro jetzt in die Unterverteilung oder besser in den Hauptzählerschrank?
Darf ich meine compose.yml und .env hier mal zeigen um sicher zugehen das diese auch passen?
Ich hab jetzt nach meinem Verständniss die compose.yml und .env, ergänzt um den Shelly und die zusätzliche Eingänge, bin mir aber unsicher ob das so stimmt. Da das ganze System bisher sehr gut funktioniert hat, möchte ich das auch gern so beibehalten.
Vielen Dank
Beta Was this translation helpful? Give feedback.
All reactions