solectrus / mqtt-collector

Collect data from MQTT broker and push it to InfluxDB 2 for use with SOLECTRUS
Other
6 stars 2 forks source link

Howto Update Config #204

Closed holiday-sunrise closed 1 month ago

holiday-sunrise commented 1 month ago

Die Config des MQTT Adapter hat sich geändert. Wie kann ich von der alten Config auf die Neue Config migrieren.

MQTT_TOPIC_HOUSE_POW=MODBUS/load_power MQTT_TOPIC_GRID_POW=MODBUS/GridExportPower MQTT_TOPIC_BAT_CHARGE_CURRENT=PV/SignedBat MQTT_TOPIC_BAT_FUEL_CHARGE=MODBUS/BatteryLevel MQTT_TOPIC_BAT_POWER=PV/SignedBat MQTT_TOPIC_BAT_VOLTAGE=MODBUS/Battery_voltage MQTT_TOPIC_CASE_TEMP=MODBUS/BatTemperature

Modbus

MQTT_TOPIC_INVERTER_POWER=MODBUS/Total_DC_Power MQTT_TOPIC_CURRENT_STATE=PV/SystemMsg MQTT_TOPIC_MPP1_POWER=MODBUS/MPPT_1_Voltage

wenn ich jetzt noch einen Wert für die Wärmepumpe habe.

modbus/2/inputRegisters/31066_Waemepumpe_Wat

ledermann commented 1 month ago

Eigentlich sollte nach dem Update auf v0.15 gar kein Konfigurationsänderung erforderlich sein, da die neue Sensor-Konfiguration abwärtskompatibel ist. Das heißt, es gibt zwar eine Menge Warnungen im Docker-Log beim Start, aber funktionieren sollte es weiterhin.

Der Unterschied zwischen alter und neue Konfiguration ist unter anderem, dass die Sensoren in unterschiedlichen Measuemrents stehen können. Das ist prinzipiell ein Stolperstein.

In deinem Fall für die Wärmepumpe sieht die alte Konfiguration vermutlich so aus:

MQTT_TOPIC_HEATPUMP_POWER=modbus/2/inputRegisters/31066_Waemepumpe_Wat
INFLUX_MEASUREMENT=my-pv-measurement 

Nach neuer Konfiguration wäre zu schreiben:

# MQTT-Collector
...
MAPPING_x_TOPIC=modbus/2/inputRegisters/31066_Waemepumpe_Wat
MAPPING_x_MEASUREMENT=my-pv-measurement
MAPPING_x_FIELD=heatpump_power
MAPPING_x_TYPE=integer

# Dashboard-App
INFLUX_SENSOR_HEATPUMP_POWER=my-pv-measurement:heatpump_power

Dabei ist x eine fortlaufende Nummer, die für jeden Sensor eindeutig sein muss. Sinnvolle Werte sind 0, 1, 2, 3, ...

Grundsätzlich ist auch darauf achten, dass jede ENV-Variable auch im docker-compose.yml beim zugehörigen Service referenziert wird, sonst kennt der Container sie nicht.

Falls es weiterhin Probleme gibt:

Bei anhaltenden Problemen bitte .env und docker-compose.yml hier posten. Ich bin sehr interessiert daran, das gelöst zu bekommen.

holiday-sunrise commented 1 month ago

Hallo Georg, soweit so klar. Ich würde es gern in zwei Schritten machen.

MQTT_TOPIC_HEATPUMP_POWER=modbus/2/inputRegisters/31066_Waemepumpe_Watt

INFLUX_MEASUREMENT_PV=SUNGROW

Was muss ich bei der Dashboard APP angeben das der Wert rausgerechnet wird.

Den Configurator habe ich ausprobiert. Auf den ersten Blick ist alles anders

INFLUX_MEASUREMENT_FORECAST finde ich nicht. Und die Forcast-Config hat mich verwirrt.

Ich versuche es weiter. Die Werte gehen ja nicht verloren.

Ein Fehler ist es eher nicht. Der Punkt von mir wäre unter Diskussionen vermutlich besser aufgeboben gewesen.

Beste Grüße

I, [2024-07-21T07:10:08.762679 #1] INFO -- : - Sensor 'inverter_power' mapped to 'SUNGROW:inverter_power' I, [2024-07-21T07:10:08.762728 #1] INFO -- : - Sensor 'inverter_power_forecast' mapped to 'Forecast:watt' I, [2024-07-21T07:10:08.762756 #1] INFO -- : - Sensor 'house_power' mapped to 'SUNGROW:house_power' I, [2024-07-21T07:10:08.762784 #1] INFO -- : - Sensor 'heatpump_power' ignored I, [2024-07-21T07:10:08.762811 #1] INFO -- : - Sensor 'grid_import_power' mapped to 'SUNGROW:grid_power_plus' I, [2024-07-21T07:10:08.762838 #1] INFO -- : - Sensor 'grid_export_power' mapped to 'SUNGROW:grid_power_minus' I, [2024-07-21T07:10:08.762865 #1] INFO -- : - Sensor 'grid_export_limit' mapped to 'SUNGROW:power_ratio' I, [2024-07-21T07:10:08.762893 #1] INFO -- : - Sensor 'battery_charging_power' mapped to 'SUNGROW:bat_power_plus' I, [2024-07-21T07:10:08.762921 #1] INFO -- : - Sensor 'battery_discharging_power' mapped to 'SUNGROW:bat_power_minus' I, [2024-07-21T07:10:08.762949 #1] INFO -- : - Sensor 'battery_soc' mapped to 'SUNGROW:bat_fuel_charge' I, [2024-07-21T07:10:08.762977 #1] INFO -- : - Sensor 'wallbox_power' mapped to 'SUNGROW:wallbox_charge_power' I, [2024-07-21T07:10:08.763004 #1] INFO -- : - Sensor 'case_temp' mapped to 'SUNGROW:case_temp' I, [2024-07-21T07:10:08.763032 #1] INFO -- : - Sensor 'system_status' mapped to 'SUNGROW:current_state' I, [2024-07-21T07:10:08.763059 #1] INFO -- : - Sensor 'system_status_ok' mapped to 'SUNGROW:current_state_ok' I, [2024-07-21T07:10:08.763086 #1] INFO -- : - Sensor 'house_power' remains unchanged'

holiday-sunrise commented 1 month ago

Habe es mit dem Configurator versucht

bundler: failed to load command: app/main.rb (app/main.rb) /mqtt-collector/app/config.rb:92:in fetch': key not found: "INFLUX_MEASUREMENT" (KeyError) Did you mean? "INFLUX_PORT" from /mqtt-collector/app/config.rb:92:ininflux_credentials_from_env' from /mqtt-collector/app/config.rb:42:in from_env' from app/main.rb:19:in<top (required)>' from /usr/local/bundle/gems/bundler-2.4.15/lib/bundler/cli/exec.rb:58:in load' from /usr/local/bundle/gems/bundler-2.4.15/lib/bundler/cli/exec.rb:58:inkernel_load' from /usr/local/bundle/gems/bundler-2.4.15/lib/bundler/cli/exec.rb:23:in run' from /usr/local/bundle/gems/bundler-2.4.15/lib/bundler/cli.rb:492:inexec' from /usr/local/bundle/gems/bundler-2.4.15/lib/bundler/vendor/thor/lib/thor/command.rb:27:in run' from /usr/local/bundle/gems/bundler-2.4.15/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:ininvoke_command' from /usr/local/bundle/gems/bundler-2.4.15/lib/bundler/vendor/thor/lib/thor.rb:392:in dispatch' from /usr/local/bundle/gems/bundler-2.4.15/lib/bundler/cli.rb:34:indispatch' from /usr/local/bundle/gems/bundler-2.4.15/lib/bundler/vendor/thor/lib/thor/base.rb:485:in start' from /usr/local/bundle/gems/bundler-2.4.15/lib/bundler/cli.rb:28:instart' from /usr/local/bundle/gems/bundler-2.4.15/exe/bundle:37:in block in <top (required)>' from /usr/local/bundle/gems/bundler-2.4.15/lib/bundler/friendly_errors.rb:117:inwith_friendly_errors' from /usr/local/bundle/gems/bundler-2.4.15/exe/bundle:29:in <top (required)>' from /usr/local/bundle/bin/bundle:25:inload' from /usr/local/bundle/bin/bundle:25:in `

'

holiday-sunrise commented 1 month ago

Hallo Georg,

Der Update der Configuration ging völlig daneben.

Ich habe den Configurator genommen und mir einen neuen Config angelegt.

Folgende Fehler hatte ich:

DB wurde nicht gestartet postgres:16-alpine -> error MQTT konnte kein Connect machen (startet ohne Fehler holte sich aber keine Daten) DashBoard war gestartet: Daten völlig unplausibel.

Wie gehe ich am besten vor die Wärmepumpe mit an den Start zu bekommen.

Ich habe mal die Config angehangen.

Hast Du eine Idee ?

Beste Grüße

Rainer

compose_0.14.5.txt compose_0.15.0_generated.txt env_0.14.5.txt env_0.15.0_generated.txt

ledermann commented 1 month ago

Tut mir leid, dass bei dir ein solches Durcheinander entstanden ist. Ja, die Konfiguration hat sich mit v0.15 komplett geändert hat. Das war auch der Grund, warum die Entwicklung so lange gedauert hat. Ich habe eine Abwärtskompatibilität eingebaut, sodass ein Update eigentlich völlig ohne Eingriffe klappen sollte. Da mittlerweile sehr viele User das Update installiert haben und ich recht wenig von Problemen hören, ist bei dir vielleicht ein Use-Case vorhanden, den ich nicht richtig oder vollständig behandelt habe.

Grundsätzlich hat man bei einer Altinstallation (also erstellt mit 0.14.5 oder früher) die Möglichkeit, weiterhin die alte Konfiguration zu verwenden oder auf die neue umzustellen. Langfristig sollte jeder diese Umstellung machen, da zukünftige Versionen irgendwann die alte Konfiguration nicht mehr unterstützen werden. Das ist aber nicht eilig.

Warum überhaupt eine neue Konfiguration eingeführt wurde, werde ich an anderer Stelle nochmal genauer aufdröseln.

Jetzt zu den Problemen bei deiner Installation:

1) Die Sache mit PostgreSQL ist einfach: Du hattest ursprünglich mit v15 begonnen, diese kann grundsätzlich nicht automatisch auf v16 aktualisieren werden. Das ist bei PostgreSQL eben so. Es ist dafür ein Backup/Restore notwendig. Lohnt sich meist nicht, bleibe also einfach bei v15. Die Zeile in der docker-compose.yml muss also lauten:

```yaml
image: postgres:15-alpine
```

Dann wird PostgreSQL auch wieder starten.

2) Deine .env sieht etwas seltsam aus. Da ist alte und neue Konfiguration enthalten, . Das ist nicht gut. Der beste Weg wäre, mit dem Konfiguration eine neue Konfiguration zu erstellen und nur diese zu verwenden - also keine alte .env damit zu vermischen.

Die Abwärtskompatibilität funktioniert so, dass wenn bestimmte Variablen entdeckt werden (z.B. `MQTT_TOPIC_HOUSE_POW`, `MQTT_TOPIC_HEATPUMP_POWER` etc.), dann wird versucht, mit anderen alten Variablen (z.B. `INFLUX_MEASUREMENT_PV`) damit automatisch eine neue Konfiguration on-the-fly zu basteln. Die Situation, dass jemand sowohl alte als auch neue Konfiguration in seiner `.env` hat, habe ich nicht auf dem Schirm gehabt.

3) Deine docker-compose.yml sehe ich nicht. Darin gibt es auch viele Möglichkeiten, etwas falsch zu machen, insbesondere durch fehlende ENV-Auflistungen.

Ich habe nun versucht, aus dem Durcheinander der vorliegenden .env etwas Neues zu produzieren. Das ist aber schwierig, weil ich nicht testen kann, ob es funktioniert und welche Angaben in deiner .env überhaupt korrekt und welche nur einkopierte Experimente sind. Das bringt nicht so viel, daher habe ich das abgebrochen.

Ich schlage vor, dass du mit dem Konfigurator nochmal von vorne beginnst. Wichtig ist, die korrekten MQTT-Topics auch einzutragen und jede Frage vollständig zu beantworten. Die Konfiguration, die dabei herauskommt (bestehend aus .env und compose.yml) sollte dann eigentlich sofort funktionieren. Bitte aber nicht mit irgendwelchen alten .env-Fragmenten vermischen.

Wenn es dann immer noch irgendwo hakt, dann poste bitte nochmal diese eine Konfiguration (immer .env und compose.yml) und ich schaue nochmal.

Bitte achte auch darauf, dass sämtliche Docker-Images aktuell sind. Das ist mit docker compose pull zu bewerkstelligen. Und bei Problemen immer in die Logs gucken. Der MQTT-Collector schreibt da viel rein und auch das Dashboard selbst schreibt beim Starten rein, wenn etwas nicht korrekt ist. Diese Ausschnitte aus den Logs sind äußerst hilfreich bei der Fehlersuche.

holiday-sunrise commented 1 month ago

Ich suche mal. Hatte im Configurator alles ausgefüllt :-(

Ich habe im letzen Post die Dateien mal angehangen.

Wird wenn ich in der altern MQTT_TOPIC_HEATPUMP_POWER in der .env und docker-compose.yml gesetzt habe, der Wert aus dem Hausverbrauch herausgerechnet ?

ledermann commented 1 month ago

Ok, mit den erneut hochgeladenen Dateien sehe ich klarer. Es gibt das kleine Problem, dass die Measurements abweichen. Der Konfigurator generiert "pv" und "forecast", du hast jedoch bisher "SUNGROW" und "Forecast" verwendet. Das muss (in der .env) angepasst werden, damit weiterhin deine bisherigen Daten angezeigt werden und der MQTT-Collector an die gleiche Stelle schreibt:

1) Überall, wo jetzt "pv" steht (18x), muss "SUNGROW" stehen 2) Überall, wo jetzt "forecast" steht (2x, Zeile 62 + 146), muss "Forecast" stehen

Das sollte es dann gewesen sein. Das Herausrechnen der Wärmepumpe aus dem Hausverbrauch ist aktiv (siehe Zeile INFLUX_EXCLUDE_FROM_HOUSE_POWER=HEATPUMP_POWER)

Weiterhin verstehe ich aber nicht, warum das Problem überhaupt aufgetreten ist. Eigentlich hätte das Update ohne jeden weiteren Eingriff funktionieren sollen - nämlich mit dem automatischen Fallback auf die alte Konfiguration. Aber wie auch immer, jetzt hast du die neue Konfiguration am Start (angepasst an deine bestehende Datenbank), es sollte alles funktionieren und beim Start der Container sollten keiner Warnungen oder Fehler erscheinen. Ich hoffe, das ist auch so :)

holiday-sunrise commented 1 month ago

Hallo Georg,

 

ich hatte es bestimmt nicht sauber bechrieben der Update von 0.14.5 auf 0.15.0 war kein Problem. 

Der Update auf die neue Config ging nicht. 

Diese werde ich mit weiter anschauen und einen Testinstanz aufbauen. Mit einer Kopie der Daten.

Ich melde mich sobald ich dies erledigt habe. Best Grüße

Rainer

ledermann commented 1 month ago

@holiday-sunrise: Du hast völlig recht: Wenn ich jetzt nochmal dein Ursprungsposting lesen, dann klingt es tatsächlich so :) Es geht also nur darum, wie man die alte auf die neue Config migriert.

Mit dem Wechsel auf die vom Konfigurator generierte .env/compose.yml mit anschließender Anpassung der Measurements (pvSUNGROW und forecastForecast, siehe oben) sollte es klappen.

Ich warte mal ab, ob es bei dir klappt. Aus den Erkenntnissen erstelle ich dann eine allgemeingültige Anleitung für alle User.

holiday-sunrise commented 1 month ago

Habe nun die 0.15.0 config verwendet und bekomme einen Fehler im MQTT Collector

Was könnte noch falsch sein ?

bundler: failed to load command: app/main.rb (app/main.rb)
/mqtt-collector/app/config.rb:92:in `fetch': key not found: "INFLUX_MEASUREMENT" (KeyError)
Did you mean?  "INFLUX_PORT"
        from /mqtt-collector/app/config.rb:92:in `influx_credentials_from_env'
        from /mqtt-collector/app/config.rb:42:in `from_env'
        from app/main.rb:19:in `<top (required)>'
        from /usr/local/bundle/gems/bundler-2.4.15/lib/bundler/cli/exec.rb:58:in `load'
        from /usr/local/bundle/gems/bundler-2.4.15/lib/bundler/cli/exec.rb:58:in `kernel_load'
        from /usr/local/bundle/gems/bundler-2.4.15/lib/bundler/cli/exec.rb:23:in `run'
        from /usr/local/bundle/gems/bundler-2.4.15/lib/bundler/cli.rb:492:in `exec'
        from /usr/local/bundle/gems/bundler-2.4.15/lib/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
        from /usr/local/bundle/gems/bundler-2.4.15/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command'
        from /usr/local/bundle/gems/bundler-2.4.15/lib/bundler/vendor/thor/lib/thor.rb:392:in `dispatch'
        from /usr/local/bundle/gems/bundler-2.4.15/lib/bundler/cli.rb:34:in `dispatch'
        from /usr/local/bundle/gems/bundler-2.4.15/lib/bundler/vendor/thor/lib/thor/base.rb:485:in `start'
        from /usr/local/bundle/gems/bundler-2.4.15/lib/bundler/cli.rb:28:in `start'
        from /usr/local/bundle/gems/bundler-2.4.15/exe/bundle:37:in `block in <top (required)>'
        from /usr/local/bundle/gems/bundler-2.4.15/lib/bundler/friendly_errors.rb:117:in `with_friendly_errors'
        from /usr/local/bundle/gems/bundler-2.4.15/exe/bundle:29:in `<top (required)>'
        from /usr/local/bundle/bin/bundle:25:in `load'
        from /usr/local/bundle/bin/bundle:25:in `<main>'

config mqtt generated

mqtt-collector:
    image: ghcr.io/solectrus/mqtt-collector:latest
    depends_on:
      influxdb:
        condition: service_healthy
    links:
      - influxdb
    environment:
      - TZ
      - MQTT_HOST
      - MQTT_PORT
      - MQTT_SSL
      - MQTT_USERNAME
      - MQTT_PASSWORD
      - INFLUX_HOST
      - INFLUX_SCHEMA
      - INFLUX_PORT
      - INFLUX_TOKEN=${INFLUX_TOKEN_WRITE}
      - INFLUX_ORG
      - INFLUX_BUCKET
      - MAPPING_0_TOPIC
      - MAPPING_0_MEASUREMENT
      - MAPPING_0_FIELD
      - MAPPING_0_TYPE
      - MAPPING_1_TOPIC
      - MAPPING_1_MEASUREMENT
      - MAPPING_1_FIELD
      - MAPPING_1_TYPE
      - MAPPING_2_TOPIC
      - MAPPING_2_MEASUREMENT_POSITIVE
      - MAPPING_2_MEASUREMENT_NEGATIVE
      - MAPPING_2_FIELD_POSITIVE
      - MAPPING_2_FIELD_NEGATIVE
      - MAPPING_2_TYPE
      - MAPPING_3_TOPIC
      - MAPPING_3_MEASUREMENT_POSITIVE
      - MAPPING_3_MEASUREMENT_NEGATIVE
      - MAPPING_3_FIELD_POSITIVE
      - MAPPING_3_FIELD_NEGATIVE
      - MAPPING_3_TYPE
      - MAPPING_4_TOPIC
      - MAPPING_4_MEASUREMENT
      - MAPPING_4_FIELD
      - MAPPING_4_TYPE
      - MAPPING_5_TOPIC
      - MAPPING_5_MEASUREMENT
      - MAPPING_5_FIELD
      - MAPPING_5_TYPE
      - MAPPING_6_TOPIC
      - MAPPING_6_MEASUREMENT
      - MAPPING_6_FIELD
      - MAPPING_6_TYPE
      - MAPPING_7_TOPIC
      - MAPPING_7_MEASUREMENT
      - MAPPING_7_FIELD
      - MAPPING_7_TYPE

Tut mir leid, dass bei dir ein solches Durcheinander entstanden ist.

Alles gut. Gibst doch immer super support. Danke

ledermann commented 1 month ago

Oh je, ich sehe es: Du hast den MQTT-Collector gar nicht aktualisiert, da läuft noch die Uralt-Version v0.1.1 oder irgendeine alte Beta-Version. Aktuell ist aber v0.2.0 - nahezu komplett neu geschrieben.

Daher lautet die Lösung:

docker compose pull
docker compose up -d

Vorher sicherstellen, dass in der docker-compose.yml auch wirklich steht:

image: ghcr.io/solectrus/mqtt-collector:latest
holiday-sunrise commented 1 month ago

Danke für die Hilfe. Doch leider geht es immer noch nicht. Mit der Config (generiert) für MQTT und Sensor ? werden die Werte im Dashboard nicht mehr richtig angezeigt.

     - MAPPING_0_TOPIC
     - MAPPING_0_MEASUREMENT
     - MAPPING_0_FIELD
     - MAPPING_0_TYPE
     - MAPPING_1_TOPIC
     - MAPPING_1_MEASUREMENT
     - MAPPING_1_FIELD
     - MAPPING_1_TYPE
     - MAPPING_2_TOPIC
     - MAPPING_2_MEASUREMENT_POSITIVE
     - MAPPING_2_MEASUREMENT_NEGATIVE
     - MAPPING_2_FIELD_POSITIVE
     - MAPPING_2_FIELD_NEGATIVE
     - MAPPING_2_TYPE
     - MAPPING_3_TOPIC
     - MAPPING_3_MEASUREMENT_POSITIVE
     - MAPPING_3_MEASUREMENT_NEGATIVE
     - MAPPING_3_FIELD_POSITIVE
     - MAPPING_3_FIELD_NEGATIVE
     - MAPPING_3_TYPE
     - MAPPING_4_TOPIC
     - MAPPING_4_MEASUREMENT
     - MAPPING_4_FIELD
     - MAPPING_4_TYPE
     - MAPPING_5_TOPIC
     - MAPPING_5_MEASUREMENT
     - MAPPING_5_FIELD
     - MAPPING_5_TYPE
     - MAPPING_6_TOPIC
     - MAPPING_6_MEASUREMENT
     - MAPPING_6_FIELD
     - MAPPING_6_TYPE
     - MAPPING_7_TOPIC
     - MAPPING_7_MEASUREMENT
     - MAPPING_7_FIELD
     - MAPPING_7_TYPE
      - INFLUX_SENSOR_INVERTER_POWER
      - 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_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

Richtig mit Dashboard Version 0.15.0

image

Falsch mit 0.15.0 Config

image
ledermann commented 1 month ago

Was genau heißt denn "nicht mehr richtig"? In deinen Screenshots wird AKTUELL mit TAG verglichen, da sehe ich auf den ersten Blick keinen Fehler.

Wenn die Werte zwar da sind, aber falsch sind, sehe ich grundsätzliche folgende mögliche Gründe:

Die genaue Beschreibung der Variablen vom MQTT-Collector: https://github.com/solectrus/mqtt-collector/wiki/Konfiguration

Es wäre denkbar, dass der Konfigurator für deine Situation eine falsche Konfiguration erzeugt. Das korrigiere ich sehr gerne, habe momentan aber noch keinen Anhaltspunkt dafür.

holiday-sunrise commented 1 month ago

Bei 2 Bild habe ich einen Verbauch von 3,2 KW. Auf der Seite der Erzeugung fehlen doch ein paar KW oder ?

Vorzeichen-abhängige Messwerte landen im falschen Measurement/Topic. Dann sind MAPPING_X_MEASUREMENT_POSITIVE/NEGATIVE und MAPPING_X_FIELD_POSITIVE/NEGATIVE zu prüfen.

Ich bekomme nur einen Wert von MQTT nicht postive und negative in einzelnen Feldern. ODer verstehe ich Dich falsch

ledermann commented 1 month ago

Ok, du hast recht, es fehlt die Batterie-Entladung auf der linken Seite.

In deiner alten Konfiguration (v0.14.5) steht zur Ladung/Entladung der Batterie:

MQTT_TOPIC_BAT_POWER=PV/SignedBat
MQTT_FLIP_BAT_POWER=true

Das heißt, positive Werte im Topic PV/SignedBat bedeuten Entladung, negative Werte hingegen Beladung. Korrekt?

Außerdem stehen deine PV-Messwerte bislang im InfluxDB-Measurement SUNGROW. Dort müssen sie also auch weiterhin landen. Des Weiteren heißen die Batterie-Fields beim alten MQTT-Collector konstant bat_power_plus und bat_power_minus. Das war gar nicht veränderbar. Neue Werte müssen auch dort landen.

Der gleiche Sachverhalt in der neuen Konfiguration müsste also so aussehen:

MAPPING_3_TOPIC=PV/SignedBat
MAPPING_3_MEASUREMENT_POSITIVE=SUNGROW
MAPPING_3_MEASUREMENT_NEGATIVE=SUNGROW
MAPPING_3_FIELD_POSITIVE=bat_power_minus
MAPPING_3_FIELD_NEGATIVE=bat_power_plus
MAPPING_3_TYPE=integer

In Worten bedeutet das: Wenn ein Messwert im Topic PV/SignedBat steht, dann schreibe ihn, sofern er positiv ist, ins Field bat_power_minus. Andernfalls (wenn negativ) ins Field bat_power_plus. In jedem Fall verwende das Measurement SUNGROW.

In der neuen Konfiguration kann also detaillierter als früher festgelegt werden, was mit den eintrudelnden Werten passieren soll. Es lässt sich für jeden Wert festlegen, in welches Measurement/Field er geschrieben wird, optional abhängig vom Vorzeichen. Bei der Umstellung auf die neue Konfiguration ist unbedingt darauf zu achten, dass die Werte weiterhin an die gleiche Stelle in InfluxDB geschrieben werden, sonst fehlen im Dashboard Daten. Ist das so verständlich erklärt?

Der neue MQTT-Collector (v0.2.0) gibt beim Start Warnungen aus, wenn die alte Konfiguration verwendet wird. Diese Warnung enthält Hinweise, wie man auf die neue Konfiguration umstellt. Wenn ich den neuen MQTT-Collector auf deine alte Konfiguration loslasse, gibt der u.a. folgendes aus:

Variables MQTT_TOPIC_BAT_POWER and MQTT_FLIP_BAT_POWER are deprecated. To remove this warning, please replace the variables by:
  MAPPING_3_TOPIC=PV/SignedBat
  MAPPING_3_FIELD_POSITIVE=bat_power_minus
  MAPPING_3_FIELD_NEGATIVE=bat_power_plus
  MAPPING_3_MEASUREMENT_POSITIVE=SUNGROW
  MAPPING_3_MEASUREMENT_NEGATIVE=SUNGROW
  MAPPING_3_TYPE=integer

Das ist genau das, was ich vorhin ausgetüftelt habe. Somit arbeitet der MQTT-Collector korrekt.

Jetzt sehe ich aber das Problem: Ich hatte vorgeschlagen, dass du den Konfigurator benutzt. Der weiß aber natürlich nicht, wie FRÜHER deine Measurements und Fields hießen und generiert andere Namen (z.B. nicht diese missverständlichen bat_power_minus/bat_power_plus, sondern battery_charging_power/battery_discharging_power). Insofern war mein Tipp mit dem Konfigurator eher kontraproduktiv. Ich hätte den Blick vielmehr auf den Log-Output des MQTT-Collector lenken sollen.

Ich hoffe, dass nun alle Klarheiten beseitigt sind :)

holiday-sunrise commented 1 month ago

nee leider passt alles noch nicht so richtig alt

image

neu

image
holiday-sunrise commented 1 month ago

passen die werte ?

INFLUX_SENSOR_INVERTER_POWER=SUNGROW:inverter_power
INFLUX_SENSOR_HOUSE_POWER=SUNGROW:house_power
INFLUX_SENSOR_GRID_IMPORT_POWER=SUNGROW:grid_import_power
INFLUX_SENSOR_GRID_EXPORT_POWER=SUNGROW:grid_export_power
INFLUX_SENSOR_BATTERY_CHARGING_POWER=SUNGROW:battery_charging_power
INFLUX_SENSOR_BATTERY_DISCHARGING_POWER=SUNGROW:battery_discharging_power
INFLUX_SENSOR_BATTERY_SOC=SUNGROW:battery_soc
# INFLUX_SENSOR_WALLBOX_POWER=
INFLUX_SENSOR_CASE_TEMP=SUNGROW:case_temp
INFLUX_SENSOR_SYSTEM_STATUS=SUNGROW:system_status
# INFLUX_SENSOR_SYSTEM_STATUS_OK=
# INFLUX_SENSOR_GRID_EXPORT_LIMIT=
INFLUX_SENSOR_INVERTER_POWER_FORECAST=Forecast:watt
INFLUX_SENSOR_HEATPUMP_POWER=heatpump:power

# Optional: Exclude sensors from house power calculation
# Default is HEATPUMP_POWER (if defined)
INFLUX_EXCLUDE_FROM_HOUSE_POWER=HEATPUMP_POWER
holiday-sunrise commented 1 month ago

Ich hoffe, dass nun alle Klarheiten beseitigt sind :)

ja alle :-) ich bin völlig lost

ledermann commented 1 month ago

Es fehlen in den Screenshots die Werte zu Batterie und Netz. Beides sind Werte, die je nach Vorzeichen unterschiedlich behandelt werden und die früher anders hießen als heute. Ebenso fehlt vermutlich bei AKTUELL momentan der Ladestand in Prozent.

Es ist wichtig, dass aus den bisherigen Fields gelesen wird. Also eher so:

INFLUX_SENSOR_GRID_IMPORT_POWER=SUNGROW:grid_power_plus
INFLUX_SENSOR_GRID_EXPORT_POWER=SUNGROW:grid_power_minus
INFLUX_SENSOR_BATTERY_CHARGING_POWER=SUNGROW:bat_power_plus
INFLUX_SENSOR_BATTERY_DISCHARGING_POWER=SUNGROW:bat_power_minus
INFLUX_SENSOR_BATTERY_SOC=SUNGROW:bat_fuel_charge

Auch das müsste eigentlich im Log beim Container-Start stehen, wenn man neue Version mit alter Konfiguration betreibt.

holiday-sunrise commented 1 month ago

Hallo Gerorg, vielen lieben Dank für deinen Support. Es scheint nun alles zu gehen. TOP!

Kann man für die Wärmepumpe später von MQTT auf Shelly umsteigen ?

ledermann commented 1 month ago

Puh, freut mich sehr 👍

Ich bin dabei, eine Anleitung für diese Problematik (Migration von alter zu neuer Konfiguration) zu erstellen. Kannst du sagen, was bei dir der wesentliche Knackpunkt war?

Kann man für die Wärmepumpe später von MQTT auf Shelly umsteigen ?

Woher die Messwerte kommen, ist SOLECTRUS eigentlich egal. Falls du einen Shelly Pro3EM hast, kannst du auch den Shelly-Collector nehmen. Der Shelly 3EM (ohne Pro) wird noch nicht unterstützt.

Aber ich weiß nicht, ob sich der Aufwand für dich lohnt, weil du den MQTT-Collector bereits für andere Dinge verwendest und somit nicht loswirst. Letztendlich wird das Setup durch den zusätzlichen Collector noch etwas komplexer. Der Shelly-Collector ist eher für diejenigen gedacht, die bislang gar kein MQTT am Start haben.

Wenn du irgendeinen Shelly hast (mit oder ohne Pro), kann dieser die Messwerte auch direkt selbst an deinen MQTT-Broker schicken, wo der MQTT-Collector diesen dann entnehmen kann. Das ist vielleicht einfacher als dein jetziges Modbus-Setup und ein Shelly-Collector wäre nicht erforderlich.

Aber wie auch immer, die notwendigen Schritte für einen Wechsel auf den Shelly-Collector wären:

1) Shelly-Collector ergänzen und konfigurieren. Darauf achten, dass der Messwert ins gleiche Measurement geschrieben wird wie vorher (bei dir heatpump). 2) MQTT-Topic der Wärmepumpe aus dem MQTT-Collector herausnehmen

holiday-sunrise commented 1 month ago

Passt leider noch nicht ganz.

image
ledermann commented 1 month ago

Die Strombilanz ist in deinem Screenshot nicht ausgeglichen, offenbar wird die Einspeisung als zu gering angezeigt. Ich habe mal selbst auf deine Installation geguckt (du hattest mir mal die Adresse genannt). Dort sehe ich, dass zwischen 14:00 und 14:40 der Wert nicht aktualisiert wurde. Jetzt klappt es aber wieder.

Ich denke, das ist ein Problem der Übermittlung von Messwerten in deiner Hausinstallation und kein Problem von SOLECTRUS.

holiday-sunrise commented 1 month ago

Hallo Georg, ich habe zurück auf Config 0.14.5 gedreht. Mit der alten Config scheint alles angezeigt zu werden. Deine Vermutung, das es an Messwerten in meiner Hausinstallation liegt kann ich nicht bestätigen. In den Logs von IOBroker sowie in den Logs des MQTT Collector finden sich keine Hinwiese auf ein Problem.

Ich starte heute einen neuen Versuch.

holiday-sunrise commented 1 month ago

Config 0.1.5.0 ist aktiv

Ich starte heute einen neuen Versuch. host kennst du

https://host/battery_soc/2024-07

Schau mal bitte, der Ladestand ist definitiv noch falsch wenn ich mir die Monate, Woche und Jar anschaue

ledermann commented 1 month ago

Ok, ich sehe mir gerade deine Instanz an. Soweit ich sehe, ist das Problem, dass Messwerte des Ladestands vor dem 24. Juli fehlen. Aktuelle Messwerte (ab 24. Juli abends) sind vorhanden.

Der Grund dürfte sein, dass Messungen vorher an eine andere Stelle in InfluxDB geschrieben worden sind (oder ganz fehlen).

Entscheidend bei allem ist, dass der MQTT-Collector dorthin schreibt, wo das SOLECTRUS-Dashboard die Daten auch erwartet. Ein falsch benanntes Measurement oder Field führt zu fehlenden Daten im Dashboard.

Ich gehe davon aus, dass die gestern besprochene Sensor-Konfiguration bezüglich Ladestand noch so aussieht:

INFLUX_SENSOR_BATTERY_SOC=SUNGROW:bat_fuel_charge

Diese Einstellung gilt für das Dashboard. Es sucht den Ladestand also im Measurement SUNGROW, dort im Field bat_fuel_charge.

Der MQTT-Collector schreibt offenbar korrekt ebenfalls dorthin, sonst würde man im AKTUELL nichts sehen. Es dürfte also das hier in der .env stehen:

MAPPING_4_TOPIC=MODBUS/BatteryLevel
MAPPING_4_MEASUREMENT=SUNGROW
MAPPING_4_FIELD=bat_fuel_charge
MAPPING_4_TYPE=float

Aber stehen in SUNGROW:bat_fuel_charge auch wirklich die Daten vor dem 24. Juli? Das kannst nur du wissen. Über das InfluxDB-Frontend kannst du das genauer untersuchen.

Ein weiteres Problem sehe ich bei deiner Installation unter /grid_power/now. Dort finden sich seit heute, 08:20 Uhr keine Daten mehr. Das bedeutet, dass der MQTT-Collector woandershin (oder gar nicht) schreibt.

Es ist für mich etwas schwierig geworden, hier zu helfen. Ich weiß nicht genau, welche Einstellungen gerade bei dir aktiv sind und welche Inhalte deine InfluxDB hat. Daher nochmal zusammenfassend die wichtigsten Werkzeuge zur Selbsthilfe:

Und falls du genervt nochmal von vorne beginnen möchtest: Der beste Weg ist, die v0.15 zunächst mit alter Konfiguration zu starten und dann Schritt für Schritt die Deprecation-Warnings im Log von Dashboard und MQTT-Collector abzuarbeiten.

holiday-sunrise commented 1 month ago

ich schau es mir an. genervt bin ich nicht ist nur nicht so schön

Danke Dir für die Hilfe und sorry für die ganze Verwirrung. Layer8 Problem

ledermann commented 1 month ago

Hoffe, es gelingt dir. Habe zwischenzeitlich begonnen, einen erklärenden Text zur neuen Konfiguration ins Wiki zu stellen, der auch das WARUM beleuchtet.

holiday-sunrise commented 1 month ago

Problem gelöst. Über die Docker-Logs des MQTT Collectors und des Dashboards war es dann klar was ich falsch gemacht habe.

Dieses Hinweis: Das die Lösung für die Migration in den logs steht könnte man hervorheben wenn nicht schon passiert. Der Umweg über den Konfigurator war für mich eher verwirrend.

Danke für den sehr guten Support von Dir.

ledermann commented 1 month ago

Prima, das freut mich sehr!

Ja, mein Hinweis auf den Konfigurator war kontraproduktiv. Das verwirrt mehr, als es hilft, wenn es um eine bestehende Installation geht. Ich werde zukünftig deutlicher herausstellen, dass die Lösung in den Docker-Logs liegt :)

Denkbar wäre auch, im UI von SOLECTRUS anzuzeigen, wenn noch die alte Konfiguration verwendet wird. Mal sehen, ob ich das noch ergänze.