Closed metzger304 closed 12 months ago
Grundsätzlich ist es so, dass SOLECTRUS die Zeitauswahl per Vor-Zurück-Buttons einschränkt, damit man nicht zu Zeiträumen navigiert, in denen es gar keine Daten geben kann (also vor der Installation der Anlage oder in der Zukunft).
Relevant dafür ist der Eintrag INSTALLATION_DATE
in der .env
, der im Format YYYY-MM-DD
angegeben werden muss. Wenn also deine PV-Anlage am 10. Dezember 2020 installiert wurde, muss der Eintrag lauten: INSTALLATION_DATE=2020-12-10
.
In der docker-compose.yml
muss unter services.app.environment
der Eintrag INSTALLATION_DATE
stehen, sonst bekommt der Container keinen Zugriff auf die Variable. Das ist in der per Hosting-Guide bereitgestellten Datei aber auch der Fall. Außerdem müssen nach einer Änderung in docker-compose.yml
oder .env
die betroffenen Container neu gestartet werden, damit sich die Änderung auch auswirkt.
Nach dem Import von Daten muss einmalig der Redis-Cache gelöscht werden, aber das hast du ja gemacht.
Wenn du das alles sichergestellt hast, habe ich noch keine Idee, was da falsch läuft. Prüfe mal bitte, ob die env-Variable wirklich im Container angekommen ist:
docker exec solectrus-app-1 env | grep INSTALLATION_DATE
Übrigens kannst du durch manuelle URL-Änderung auch Zeiträume ansteuern, deren Ansteuerung das UI verhindert, z.B. http://[raspi-ip]/inverter_power/2020-12-31
. Werden da Messwerte angezeigt?
Ein weiterer Hinweis: Nach einem CSV-Import müssen sinnvollerweise auch die Preise angepasst werden, damit von Tag 1 an klar ist, was der Strombezug gekostet und die Einspeisung gebracht hat. Das Datum "Gültig ab" muss also richtig eingestellt sein.
Wenn das alles nicht weiter hilft, stelle bitte mal deine .env
und docker-compose.yml
bereit, vielleicht fällt mir dann etwas darin auf.
... passende Frage hierzu wenn bei mehreren Offlinezeiten von Solectrus (bedingt durch Senec Updates und NPU Fehler) die Senec csv Datei der betreffenden Woche eingelesen wird ... werden dann nur die Fehlzeiten importiert oder die komplette Woche von Senec im 5min Raster ?
Hallo,
vielen Dank für die Ausführliche Antwort. Was ich habe vergessen, zu erwähnen, dass alles in einem Docker auf einer Synology NAS betrieben wird.
Übrigens kannst du durch manuelle URL-Änderung auch Zeiträume ansteuern, deren Ansteuerung das UI verhindert, z.B. http://[raspi-ip]/inverter_power/2020-12-31. Werden da Messwerte angezeigt? --> FUNKTIONIERT, es werden Daten angezeigt
docker exec solectrus-app-1 env | grep INSTALLATION_DATE --> es wird das Datum INSTALLATION_DATE=2022-01-27 ausgegeben, was falsch wäre,
denn in der .env steht drin: --> Date of commissioning of your photovoltaic system - INSTALLATION_DATE=2020-12-13
wie finde ich die Docker-compose.yml? Bin leider nicht in Linux bewandert.. Danke
Die docker-compose.yml
befindet sich im gleichen Ordner wie die .env
. Dass darin der Eintrag INSTALLATION_DATE
fehlt, würde mich aber sehr wundern. Denn der ist in der Originaldatei enthalten, manuell herausgenommen hast du ihn ja vermutlich nicht.
Gibt es bei dir vielleicht mehrere .env
oder docker-compose.yml
? Die Ordnerstruktur sollte so aussehen:
solectrus/
├── docker-compose.yml
├── .env
├── influxdb/
├── postgresql/
└── redis/
2022-01-27
ist übrigens das Original-Beispiel der Anleitung. Somit dürfte die docker-compose.yml
korrekt sein, denn es wird ja ein Wert gelesen.
Daher andere Vermutung: Heißt die .env
bei dir womöglich anders? Sie muss wirklich .env
heißen, also inklusive des führenden Punkts. Unter Linux führt der führende Punkt dazu, dass die Datei versteckt wird, was zu Irritationen führen könnte, wenn man das nicht weiß.
2022-01-27
ist übrigens das Original-Beispiel der Anleitung. Somit dürfte diedocker-compose.yml
korrekt sein, denn es wird ja ein Wert gelesen.Daher andere Vermutung: Heißt die
.env
bei dir womöglich anders? Sie muss wirklich.env
heißen, also inklusive des führenden Punkts. Unter Linux führt der führende Punkt dazu, dass die Datei versteckt wird, was zu Irritationen führen könnte, wenn man das nicht weiß.
:/volume1/docker/solectrus$ ls -a . .. csv docker-compose.yml .env --env-file influxdb --mount '--network=solectrus_default' postgresql redis
Die drei 0-Byte-Dateien mit --
sind überflüssig, vermutlich durch irgendwelche Fehlversuche entstanden. Bitte löschen. Ansonsten sieht es korrekt aus.
Bitte post mal die vollständigen Dateien .env
und docker-compose.yml
hier, sonst kommen wir irgendwie nicht so recht weiter.
.yml
version: '3.7'
services:
app:
image: ghcr.io/solectrus/solectrus:latest
depends_on:
db:
condition: service_healthy
influxdb:
condition: service_healthy
redis:
condition: service_healthy
links:
- db
- influxdb
- redis
ports:
- 3000:3000
environment:
- APP_HOST
- FORCE_SSL
- SECRET_KEY_BASE
- INSTALLATION_DATE
- ELECTRICITY_PRICE
- FEED_IN_TARIFF
- ADMIN_PASSWORD
- DB_HOST=db
- 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_MEASUREMENT_PV
- INFLUX_MEASUREMENT_FORECAST
healthcheck:
test: ['CMD-SHELL', 'nc -z 127.0.0.1 3000 || exit 1']
restart: always
influxdb:
image: influxdb:2.7-alpine
volumes:
- ${INFLUX_VOLUME_PATH}:/var/lib/influxdb2
environment:
- 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
# Optional: Allow InfluxDB to be accessed from the outside.
# ports:
# - 8086:8086
restart: always
healthcheck:
test: ['CMD', 'influx', 'ping']
interval: 30s
timeout: 10s
retries: 5
start_period: 30s
db:
image: postgres:15-alpine
environment:
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
volumes:
- ${DB_VOLUME_PATH}:/var/lib/postgresql/data
restart: always
healthcheck:
test: ['CMD-SHELL', 'pg_isready -U postgres']
interval: 10s
timeout: 20s
retries: 5
start_period: 60s
redis:
image: redis:7-alpine
volumes:
- ${REDIS_VOLUME_PATH}:/data
restart: always
healthcheck:
test: ['CMD', 'redis-cli', 'ping']
interval: 10s
timeout: 20s
retries: 5
start_period: 60s
senec-collector:
image: ghcr.io/solectrus/senec-collector:latest
depends_on:
influxdb:
condition: service_healthy
links:
- influxdb
environment:
- SENEC_HOST
- SENEC_SCHEMA
- SENEC_INTERVAL
- INFLUX_HOST
- INFLUX_SCHEMA
- INFLUX_PORT
- INFLUX_TOKEN=${INFLUX_TOKEN_WRITE}
- INFLUX_ORG
- INFLUX_BUCKET
- INFLUX_MEASUREMENT=${INFLUX_MEASUREMENT_PV}
restart: always
forecast-collector:
image: ghcr.io/solectrus/forecast-collector:latest
depends_on:
influxdb:
condition: service_healthy
links:
- influxdb
environment:
- INFLUX_HOST
- INFLUX_TOKEN=${INFLUX_TOKEN_WRITE}
- INFLUX_ORG
- INFLUX_BUCKET
- INFLUX_MEASUREMENT=${INFLUX_MEASUREMENT_FORECAST}
- FORECAST_LATITUDE
- FORECAST_LONGITUDE
- FORECAST_DECLINATION
- FORECAST_AZIMUTH
- FORECAST_KWP
- FORECAST_INTERVAL
restart: always
.env
ee##################################################################
# Dashboard application (the main part)
#
# Domain name or IP address of your host
APP_HOST=my-synology.local
#
# SSL redirect: Use "true" if you want to auto-redirect to https, but enure 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 (don't use this example, make some random changes!)
# Currently there are no cookies in Soletrus, but this may change in the future
SECRET_KEY_BASE=f60debe97dcb73280a2cc83668fd60e8d0e8e48269036a7bce980ee53cfb312e377989a750b8c945a5f69b041289ecb4e2d9e40641b81257c65ac2d43e3c837f
#
# Date of commissioning of your photovoltaic system
INSTALLATION_DATE=2020-12-13
#
# Price you pay for 1kWH (in EUR)
# Can be changed later in the UI when logged in as administrator
ELECTRICITY_PRICE=0.28
#
# Price you get for 1kWH (in EUR)
# Can be changed later in the UI when logged in as administrator
FEED_IN_TARIFF=0.0848
#
# Password for the PostgreSQL database, used by the app to comunicate internally with the database
POSTGRES_PASSWORD=my-secret-db-password
#
# Password to login as administrator, required to manage settings like historical prices
ADMIN_PASSWORD=my-secret-login-password
##################################################################
# Influx database settings
#
# Influx host (to access from SOLECTRUS dashboard and collectors)
INFLUX_HOST=influxdb
INFLUX_SCHEMA=http
INFLUX_PORT=8086
#
# Credentials for the Influx database, 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=my-solectrus-bucket
INFLUX_MEASUREMENT_PV=SENEC
INFLUX_MEASUREMENT_FORECAST=Forecast
#
# 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 Influx data
INFLUX_VOLUME_PATH=/volume1/docker/solectrus/influxdb
##################################################################
# REDIS settings
#
REDIS_VOLUME_PATH=/volume1/docker/solectrus/redis
##################################################################
# PostgreSQL database settings
#
DB_VOLUME_PATH=/volume1/docker/solectrus/postgresql
##################################################################
# SENEC Collector
#
# Change this to your own SENEC IP address!
SENEC_HOST=192.168.178.127
SENEC_SCHEMA=https
SENEC_INTERVAL=5
##################################################################
# Solar forecasting with https://forecast.solar
# API docs: https://doc.forecast.solar/doku.php?id=api:estimate
#
# Latitude of the plant location
FORECAST_LATITUDE=50.12345
#
# Longitude of the plant location
FORECAST_LONGITUDE=6.12345
#
# 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=7.2
#
# Update interval in seconds, 900s = 15 minutes, the public (and free) API allows a minimum of 900 seconds
FORECAST_INTERVAL=900
#
# Optional damping factors (http://doc.forecast.solar/damping)
# FORECAST_DAMPING_MORNING=0.5
# FORECAST_DAMPING_EVENING=0
#
# Optional API key for registered users of forecast.solar (https://doc.forecast.solar/account_models)
# FORECAST_SOLAR_APIKEY=abc123
Die drei 0-Byte-Dateien mit
--
sind überflüssig, vermutlich durch irgendwelche Fehlversuche entstanden. Bitte löschen. Ansonsten sieht es korrekt aus.Bitte post mal die vollständigen Dateien
.env
unddocker-compose.yml
hier, sonst kommen wir irgendwie nicht so recht weiter.
Sind dies persönliche Daten, die weiterverwendet / ausgelesen werden können?
Ich habe deine beiden Postings der besseren Lesbarkeit editiert. Enthalten sind übrigens keinerlei persönlichen Daten, die Dateien entsprechen ja fast genau den Beispielen. Was mir dennoch auffällt:
Die .env
-Datei beginnt mit einem ee
. Dadurch wird ein Syntax-Fehler verursacht, was auf jeden Fall zu allen möglichen Problemen führen kann. Eigentlich müsste beim Start der Container ein Fehler gemeldet werden. Vielleicht ist der Fehler nur beim Einkopieren hier auf GitHub entstanden. Bitte prüfe das.
Ansonsten: Bist du wirklich sicher, dass deine SOLECTRUS-Container nach der .env
-Änderung neu gestartet wurden? Was ergibt docker-compose ps
? Steht dort ein "Created at"-Zeitpunkt, der nach dem letzten Bearbeitungszeitpunkt der .env liegt?
Ich verstehe offen gesagt nicht so recht, was bei deiner Installation passiert ist.
solectrus_app_1 docker/startup.sh Up (healthy) 0.0.0.0:3000->3000/tcp solectrus_db_1 docker-entrypoint.sh postgres Up (healthy) 5432/tcp solectrus_forecast-collector_1 /bin/sh -c bundle exec app ... Up solectrus_influxdb_1 /entrypoint.sh influxd run ... Up (healthy) 8086/tcp solectrus_redis_1 docker-entrypoint.sh redis ... Up (healthy) 6379/tcp solectrus_senec-collector_1 /bin/sh -c bundle exec app ... Up
wie lautet der Befehl um created at abzufragen?
Snip: die ee###### ... stehen in der dritten Zeile
Wenn in deiner .env
dieses ee
drin steht, dann ist das ein fataler Fehler. Bitte korrigiere das. In einer .env
muss jede Zeile entweder eine Variablen-Definition der Art FOO=42
enthalten oder ein Kommentar sein (beginnend mit #
) oder eine Leerzeile sein.
Dass bei dir das Kommando docker-compose ps
nicht das Erstellungsdatum des Containers ausgibt, wundert mich. Bei mir (Synology DS220+ mit Docker 20.10) ist das so. Egal, versuche mal docker ps
.
Meine Vermutung ist nun folgende:
INSTALLATION_DATE
verändert. Beim Speichern der Datei ist dann etwas schiefgegangen, wodurch unbemerkt die zwei e
am Anfang der Datei eingefügt wurden..env
klappte das aber nicht, es gab nur eine Fehlermeldung, die aber nicht beachtet wurde. Der Neustart der Container hat gar nicht stattgefunden.Somit laufen die alten Container mit alten ENV-Variablen seit längerem einfach weiter. Die Änderung ist also gar nicht aktiv.
Abhilfe:
.env
korrigierendocker-compose down
, dann docker-compose up -d
)PERFEKT.. vielen lieben Dank
ich denke, es wird so sein wie du es gesagt hast.. als ich das erstes mal (überhaupt) die env. Datein über die Konsole bearbeitet habe, habe ich das wohl aus versehen eingetragen... (habe danach auch erst die Befehle gegoogled, sorry...
Ist ein Bearbeiten auch über den Editor in der Synology genauso wirksam?
Auszug nun vom dem Instatlations Datum
docker exec solectrus_app_1 env | grep INSTALLATION_DATE INSTALLATION_DATE=2020-12-13
Snip Solectrus APP
Donation wurde auch getätigt!
Prima, freut mich sehr, dass es geklappt hat!
Ja, die beiden Dateien (.env
und docker-compose.yml
) können auch über den Text-Editor von Synology bearbeitet werden. Standardmäßig zeigt der aber nur Textdateien (also *.txt) beim Öffnen an, man muss dort also auf "Alle Dateien" umstellen. Ich denke, das werde ich auch so in der Anleitung beschreiben, der Editor vim
ist vom Bedienkomfort katastrophal.
Das kannst du direkt mal ausprobieren 😄 - weil ja noch ein paar andere Parameter in der .env
eingestellt werden sollten (insbesondere FORECAST_* ganz unten).
Donation wurde auch getätigt!
Danke sehr!
Nur der Vollständigkeit halber: Der Text-Editor wird bereits in der Anleitung erwähnt 😄
Nach dem Import von CSV Dateien, werden diese nicht in alle in Solectrus angezeigt.
Die letzten Werte, die anzeigt werden:
Es wurde, wie in https://github.com/solectrus/csv-importer beschrieben:
Die Docker Container wurden auch schon neu gestartet.
Grüße Thomas