76_SolarForecast - Informationen/Ideen zu Weiterentwicklung und Support

Begonnen von DS_Starter, 11 Februar 2024, 14:11:00

Vorheriges Thema - Nächstes Thema

300P

N'Abend Alle zusammen!

Bei mir sieht es recht ordentlich aus mit der V2.6.3

4.9% PV-Abweichung heute - Rest siehe Grafik:
Gruß
300P

FHEM 6.4|RPi|SMAEM|SMAInverter|SolarForecast| DbLog|DbRep|MariaDB|Buderus-MQTT_EMS|
Fritzbox|fhempy|JsonMod|HTTPMOD|Modbus ser+TCP| ESP32_AI_on_the_Edge|ESP32CAM usw.

DS_Starter

#5911
Ich habe mich etwas mit der Abweichungsberechnung befasst.
Mich hat gestört, dass zu Beginn des Tages die Abweichungen untypisch hoch ausfallen (bei kontinuierlicher Berechnung). Dadurch wird eine grafische Darstellung sehr gestört (Anhang). Bei der Daily Berechnung (default) gibt es das Problem nicht, da am Ende des Sonnentages genügend Werte stabil vorhanden sind.

Morgen werde ich die V noch richtig testen. Wer mag, kann sich die V 2.6.4 aus dem contrib ziehen und auch ausprobieren.

 Verbesserungen gegenüber der ursprünglichen Implementierung:
   - Dynamische Mindestschwelle (min_wh) verhindert Division durch sehr kleine Werte
   - Konfidenz-Gewichtung (progress) dämpft Abweichungen am Tagesanfang
   - Time Gate (min_recalc_s) verhindert zu häufige Neuberechnung bei Event-Triggern
   - EWMA-Glättung mit dynamischem Alpha dämpft kurzzeitige Sprünge


LG,
Heiko
Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

DS_Starter

Die Abweichungslogik scheint recht gut zu funktionieren. Es erfolgt defacto eine Glättung und Gewichtung über den Tag mit fortschreitender Zeit, d.h. später am Tag gehen die Abweichungen stärker in die Berechnung ein als früher am Tag wenn noch wenige Stundenwerte bestimmend sind.
Ein angehängter Screenshot erläutert das Verfahren an einem Beispiel.
Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

peterboeckmann

Hallo Heiko,

ich habe neue Hardware, das Balkonkraftwerk mit Speicher "Zendure SolarFlow 2400 Pro".
Dieses möchte ich natürlich auch gerne in SF abbilden.
Das Set besteht aus 4 Paneelen, die über 4 Strings an das Gerät angeschlossen werden. Im Gerät sind Wechselrichter und Batteriespeicher verbaut.
Von diesem Gerät aus geht der Strom in das Hausnetz über eine Steckdose.

Das Gerät ist per MQTT an fhem angebunden und scheint mir auf den ersten Blick sehr detailliert alle benötigten Werte zu liefern:
Internals:
   CFGFN     
   CID        ha_tjsLMch1
   DEF        ha_tjsLMch1
   FUUID      69f1fb6f-f33f-326e-b60c-e9c98fd67ef500de
   IODev      mqttServer
   LASTInputDev mqttServer
   MSGCNT     684766
   NAME       ha_tjsLMch1
   NR         1082
   STATE      PV-Eingang: 0 W<br>
Modus: Input mode<br>
vom Haus: 587 W, zum Haus 0 W<br>
Batteriestand: 98 %<br>
Restzeit: 15210 Min
   TYPE       MQTT2_DEVICE
   eventCount 19349
   mqttServer_CONN mqttServer_192.168.178.73_54174
   mqttServer_MSGCNT 684766
   mqttServer_TIME 2026-04-30 13:49:28
   Helper:
     DBLOG:
       JO2AEP1P0501114_power:
         logdb:
           TIME       1777549767.88998
           VALUE      537
       JO2AEP1P0501114_socLevel:
         logdb:
           TIME       1777549480.21361
           VALUE      98
       solarEnergy_kWh:
         logdb:
           TIME       1777546788.83749
           VALUE      0
   READINGS:
     2026-04-29 14:37:03   IODev           mqttServer
     2026-04-30 13:49:27   JO2AEP1P0501114_batcur 10.3
     2026-04-30 13:49:27   JO2AEP1P0501114_maxTemp 28.0
     2026-04-30 13:49:27   JO2AEP1P0501114_maxVol 3.50
     2026-04-30 13:49:27   JO2AEP1P0501114_minVol 3.46
     2026-04-30 13:49:27   JO2AEP1P0501114_power 537
     2026-04-30 13:49:27   JO2AEP1P0501114_socLevel 98
     2026-04-30 13:49:27   JO2AEP1P0501114_softVersion 1.1.0
     2026-04-30 13:49:27   JO2AEP1P0501114_state charging
     2026-04-30 13:49:27   JO2AEP1P0501114_totalVol 52.20
     2026-04-30 13:49:28   acMode          Input mode
     2026-04-30 02:58:55   availability    online
     2026-04-30 02:58:55   avty_t          Zendure/number/EEB4AEP1P050905/minSoc/availability
     2026-04-30 02:58:55   cmd_t           Zendure/number/EEB4AEP1P050905/minSoc/set
     2026-04-29 19:50:52   config          {"dev":{"ids":"EEB4AEP1P050905","name":"EEB4AEP1P050905","mf":"Zendure","mdl":"solarFlow2400Pro","sw_version":"1.0.23"},"min":0,"max":2400,"step":1,"dev_cla":"power","pl_avail":"online","pl_not_avail":"offline","name":"inputLimit","uniq_id":"EEB4AEP1P050905_inputLimit","stat_t":"Zendure/number/EEB4AEP1P050905/inputLimit","avty_t":"Zendure/number/EEB4AEP1P050905/inputLimit/availability","cmd_t":"Zendure/number/EEB4AEP1P050905/inputLimit/set"}
     2026-04-30 02:58:55   dev_cla         battery
     2026-04-30 02:58:55   dev_ids         EEB4AEP1P050905
     2026-04-30 02:58:55   dev_mdl         solarFlow2400Pro
     2026-04-30 02:58:55   dev_mf          Zendure
     2026-04-30 02:58:55   dev_name        EEB4AEP1P050905
     2026-04-30 02:58:55   dev_sw_version  1.0.23
     2026-04-30 13:49:28   electricLevel   98
     2026-04-30 13:49:28   gridInputPower  587
     2026-04-30 13:49:27   gridOffMode     OFF
     2026-04-30 13:49:28   gridOffPower    0
     2026-04-30 13:49:24   gridReverse     Allow backflow
     2026-04-30 12:59:27   ha_tjsLMch1     0
     2026-04-30 13:49:27   heatState       not_heating
     2026-04-30 13:49:28   hyperTmp        30.0
     2026-04-30 02:58:49   icon            mdi:flash
     2026-04-30 13:49:27   inputLimit      2400
     2026-04-30 13:49:27   inverseMaxPower 800
     2026-04-30 13:49:28   lampSwitch      ON
     2026-04-30 02:58:55   max             50
     2026-04-30 02:58:55   min             5
     2026-04-30 13:49:27   minSoc          10
     2026-04-30 02:58:55   name            minSoc
     2026-04-30 02:58:55   options_1       Normal mode
     2026-04-30 02:58:55   options_2       Economic mode
     2026-04-30 02:58:55   options_3       OFF
     2026-04-30 13:49:28   outputHomePower 0
     2026-04-30 13:49:27   outputLimit     800
     2026-04-30 13:49:27   outputPackPower 588
     2026-04-30 13:49:27   packInputPower  0
     2026-04-30 13:49:28   packNum         1
     2026-04-30 13:49:28   packState       charging
     2026-04-30 13:49:28   pass            no
     2026-04-30 02:58:55   pl_avail        online
     2026-04-30 02:58:55   pl_not_avail    offline
     2026-04-30 02:58:51   pl_off          OFF
     2026-04-30 02:58:51   pl_on           ON
     2026-04-30 13:49:28   remainOutTime   15210
     2026-04-30 13:49:28   reverseState    no
     2026-04-30 13:49:28   smartMode       OFF
     2026-04-30 13:49:27   socSet          100
     2026-04-30 13:49:28   socStatus       idle
     2026-04-30 12:59:48   solarEnergy_kWh 0
     2026-04-30 13:49:28   solarInputPower 0
     2026-04-30 13:49:28   solarPower1     0
     2026-04-30 13:49:28   solarPower2     0
     2026-04-30 13:49:28   solarPower3     0
     2026-04-30 13:49:28   solarPower4     0
     2026-04-30 02:58:49   stat_cla        measurement
     2026-04-30 02:58:55   stat_t          Zendure/number/EEB4AEP1P050905/minSoc
     2026-04-30 09:39:05   state           inputLimit
     2026-04-30 02:58:55   step            1
     2026-04-30 02:58:55   uniq_id         EEB4AEP1P050905_minSoc
     2026-04-30 02:58:49   unit_of_meas    W
   hmccu:
Attributes:
   DbLogExclude .*
   DbLogInclude .*power, .*kWh,JO2AEP1P0501114_socLevel
   alias      Zendure
   event-on-change-reading .*
   group      Zendure
   readingList ha_tjsLMch1:homeassistant/sensor/JO2AEP1P0501114_JO2AEP1P0501114_socLevel/config:.* { json2nameValue($EVENT) }
ha_tjsLMch1:homeassistant/sensor/JO2AEP1P0501114_JO2AEP1P0501114_state/config:.* { json2nameValue($EVENT) }
ha_tjsLMch1:homeassistant/sensor/JO2AEP1P0501114_JO2AEP1P0501114_power/config:.* { json2nameValue($EVENT) }
ha_tjsLMch1:Zendure/sensor/JO2AEP1P0501114/socLevel/availability:.* availability
ha_tjsLMch1:Zendure/sensor/JO2AEP1P0501114/state/availability:.* availability
ha_tjsLMch1:Zendure/sensor/JO2AEP1P0501114/power/availability:.* availability
ha_tjsLMch1:Zendure/sensor/JO2AEP1P0501114/JO2AEP1P0501114_socLevel:.* JO2AEP1P0501114_socLevel
ha_tjsLMch1:Zendure/sensor/JO2AEP1P0501114/JO2AEP1P0501114_state:.* JO2AEP1P0501114_state
ha_tjsLMch1:Zendure/sensor/JO2AEP1P0501114/JO2AEP1P0501114_power:.* JO2AEP1P0501114_power
ha_tjsLMch1:homeassistant/sensor/JO2AEP1P0501114_JO2AEP1P0501114_maxTemp/config:.* { json2nameValue($EVENT) }
ha_tjsLMch1:homeassistant/sensor/JO2AEP1P0501114_JO2AEP1P0501114_totalVol/config:.* { json2nameValue($EVENT) }
ha_tjsLMch1:homeassistant/sensor/JO2AEP1P0501114_JO2AEP1P0501114_batcur/config:.* { json2nameValue($EVENT) }
ha_tjsLMch1:Zendure/sensor/JO2AEP1P0501114/maxTemp/availability:.* availability
ha_tjsLMch1:Zendure/sensor/JO2AEP1P0501114/totalVol/availability:.* availability
ha_tjsLMch1:Zendure/sensor/JO2AEP1P0501114/batcur/availability:.* availability
ha_tjsLMch1:Zendure/sensor/JO2AEP1P0501114/JO2AEP1P0501114_maxTemp:.* JO2AEP1P0501114_maxTemp
ha_tjsLMch1:Zendure/sensor/JO2AEP1P0501114/JO2AEP1P0501114_totalVol:.* JO2AEP1P0501114_totalVol
ha_tjsLMch1:Zendure/sensor/JO2AEP1P0501114/JO2AEP1P0501114_batcur:.* JO2AEP1P0501114_batcur
ha_tjsLMch1:homeassistant/sensor/JO2AEP1P0501114_JO2AEP1P0501114_maxVol/config:.* { json2nameValue($EVENT) }
ha_tjsLMch1:homeassistant/sensor/JO2AEP1P0501114_JO2AEP1P0501114_minVol/config:.* { json2nameValue($EVENT) }
ha_tjsLMch1:homeassistant/sensor/JO2AEP1P0501114_JO2AEP1P0501114_softVersion/config:.* { json2nameValue($EVENT) }
ha_tjsLMch1:Zendure/sensor/JO2AEP1P0501114/maxVol/availability:.* availability
ha_tjsLMch1:Zendure/sensor/JO2AEP1P0501114/minVol/availability:.* availability
ha_tjsLMch1:Zendure/sensor/JO2AEP1P0501114/softVersion/availability:.* availability
ha_tjsLMch1:Zendure/sensor/JO2AEP1P0501114/JO2AEP1P0501114_maxVol:.* JO2AEP1P0501114_maxVol
ha_tjsLMch1:Zendure/sensor/JO2AEP1P0501114/JO2AEP1P0501114_minVol:.* JO2AEP1P0501114_minVol
ha_tjsLMch1:Zendure/sensor/JO2AEP1P0501114/JO2AEP1P0501114_softVersion:.* JO2AEP1P0501114_softVersion
ha_tjsLMch1:homeassistant/sensor/EEB4AEP1P050905_heatState/config:.* { json2nameValue($EVENT) }
ha_tjsLMch1:homeassistant/sensor/EEB4AEP1P050905_packInputPower/config:.* { json2nameValue($EVENT) }
ha_tjsLMch1:homeassistant/sensor/EEB4AEP1P050905_outputPackPower/config:.* { json2nameValue($EVENT) }
ha_tjsLMch1:Zendure/sensor/EEB4AEP1P050905/heatState/availability:.* availability
ha_tjsLMch1:Zendure/sensor/EEB4AEP1P050905/packInputPower/availability:.* availability
ha_tjsLMch1:Zendure/sensor/EEB4AEP1P050905/outputPackPower/availability:.* availability
ha_tjsLMch1:Zendure/sensor/EEB4AEP1P050905/heatState:.* heatState
ha_tjsLMch1:Zendure/sensor/EEB4AEP1P050905/packInputPower:.* packInputPower
ha_tjsLMch1:Zendure/sensor/EEB4AEP1P050905/outputPackPower:.* outputPackPower
ha_tjsLMch1:homeassistant/sensor/EEB4AEP1P050905_outputHomePower/config:.* { json2nameValue($EVENT) }
ha_tjsLMch1:homeassistant/sensor/EEB4AEP1P050905_remainOutTime/config:.* { json2nameValue($EVENT) }
ha_tjsLMch1:homeassistant/sensor/EEB4AEP1P050905_packState/config:.* { json2nameValue($EVENT) }
ha_tjsLMch1:Zendure/sensor/EEB4AEP1P050905/outputHomePower/availability:.* availability
ha_tjsLMch1:Zendure/sensor/EEB4AEP1P050905/remainOutTime/availability:.* availability
ha_tjsLMch1:Zendure/sensor/EEB4AEP1P050905/packState/availability:.* availability
ha_tjsLMch1:Zendure/sensor/EEB4AEP1P050905/outputHomePower:.* outputHomePower
ha_tjsLMch1:Zendure/sensor/EEB4AEP1P050905/remainOutTime:.* remainOutTime
ha_tjsLMch1:Zendure/sensor/EEB4AEP1P050905/packState:.* packState
ha_tjsLMch1:homeassistant/sensor/EEB4AEP1P050905_packNum/config:.* { json2nameValue($EVENT) }
ha_tjsLMch1:Zendure/sensor/EEB4AEP1P050905/packNum:.* packNum
ha_tjsLMch1:Zendure/sensor/EEB4AEP1P050905/electricLevel:.* electricLevel
ha_tjsLMch1:Zendure/sensor/EEB4AEP1P050905/gridInputPower:.* gridInputPower
ha_tjsLMch1:homeassistant/sensor/EEB4AEP1P050905_solarInputPower/config:.* { json2nameValue($EVENT) }
ha_tjsLMch1:homeassistant/sensor/EEB4AEP1P050905_solarPower1/config:.* { json2nameValue($EVENT) }
ha_tjsLMch1:homeassistant/sensor/EEB4AEP1P050905_solarPower2/config:.* { json2nameValue($EVENT) }
ha_tjsLMch1:Zendure/sensor/EEB4AEP1P050905/solarInputPower/availability:.* availability
ha_tjsLMch1:Zendure/sensor/EEB4AEP1P050905/solarPower1/availability:.* availability
ha_tjsLMch1:Zendure/sensor/EEB4AEP1P050905/solarPower2/availability:.* availability
ha_tjsLMch1:Zendure/sensor/EEB4AEP1P050905/solarInputPower:.* solarInputPower
ha_tjsLMch1:Zendure/sensor/EEB4AEP1P050905/solarPower1:.* solarPower1
ha_tjsLMch1:Zendure/sensor/EEB4AEP1P050905/solarPower2:.* solarPower2
ha_tjsLMch1:homeassistant/sensor/EEB4AEP1P050905_solarPower3/config:.* { json2nameValue($EVENT) }
ha_tjsLMch1:homeassistant/sensor/EEB4AEP1P050905_solarPower4/config:.* { json2nameValue($EVENT) }
ha_tjsLMch1:homeassistant/sensor/EEB4AEP1P050905_pass/config:.* { json2nameValue($EVENT) }
ha_tjsLMch1:Zendure/sensor/EEB4AEP1P050905/solarPower3/availability:.* availability
ha_tjsLMch1:Zendure/sensor/EEB4AEP1P050905/solarPower4/availability:.* availability
ha_tjsLMch1:Zendure/sensor/EEB4AEP1P050905/pass/availability:.* availability
ha_tjsLMch1:Zendure/sensor/EEB4AEP1P050905/solarPower3:.* solarPower3
ha_tjsLMch1:Zendure/sensor/EEB4AEP1P050905/solarPower4:.* solarPower4
ha_tjsLMch1:Zendure/sensor/EEB4AEP1P050905/pass:.* pass
ha_tjsLMch1:homeassistant/sensor/EEB4AEP1P050905_reverseState/config:.* { json2nameValue($EVENT) }
ha_tjsLMch1:homeassistant/sensor/EEB4AEP1P050905_socStatus/config:.* { json2nameValue($EVENT) }
ha_tjsLMch1:homeassistant/sensor/EEB4AEP1P050905_hyperTmp/config:.* { json2nameValue($EVENT) }
ha_tjsLMch1:Zendure/sensor/EEB4AEP1P050905/reverseState/availability:.* availability
ha_tjsLMch1:Zendure/sensor/EEB4AEP1P050905/socStatus/availability:.* availability
ha_tjsLMch1:Zendure/sensor/EEB4AEP1P050905/hyperTmp/availability:.* availability
ha_tjsLMch1:Zendure/sensor/EEB4AEP1P050905/reverseState:.* reverseState
ha_tjsLMch1:Zendure/sensor/EEB4AEP1P050905/socStatus:.* socStatus
ha_tjsLMch1:Zendure/sensor/EEB4AEP1P050905/hyperTmp:.* hyperTmp
ha_tjsLMch1:homeassistant/sensor/EEB4AEP1P050905_gridOffPower/config:.* { json2nameValue($EVENT) }
ha_tjsLMch1:homeassistant/switch/EEB4AEP1P050905_lampSwitch/config:.* { json2nameValue($EVENT) }
ha_tjsLMch1:homeassistant/switch/EEB4AEP1P050905_smartMode/config:.* { json2nameValue($EVENT) }
ha_tjsLMch1:Zendure/sensor/EEB4AEP1P050905/gridOffPower/availability:.* availability
ha_tjsLMch1:Zendure/switch/EEB4AEP1P050905/lampSwitch/availability:.* availability
ha_tjsLMch1:Zendure/switch/EEB4AEP1P050905/smartMode/availability:.* availability
ha_tjsLMch1:Zendure/sensor/EEB4AEP1P050905/gridOffPower:.* gridOffPower
ha_tjsLMch1:Zendure/switch/EEB4AEP1P050905/lampSwitch:.* lampSwitch
ha_tjsLMch1:Zendure/switch/EEB4AEP1P050905/smartMode:.* smartMode
ha_tjsLMch1:homeassistant/select/EEB4AEP1P050905_acMode/config:.* { json2nameValue($EVENT) }
ha_tjsLMch1:homeassistant/select/EEB4AEP1P050905_gridReverse/config:.* { json2nameValue($EVENT) }
ha_tjsLMch1:homeassistant/select/EEB4AEP1P050905_gridOffMode/config:.* { json2nameValue($EVENT) }
ha_tjsLMch1:Zendure/select/EEB4AEP1P050905/acMode/availability:.* availability
ha_tjsLMch1:Zendure/select/EEB4AEP1P050905/gridReverse/availability:.* availability
ha_tjsLMch1:Zendure/select/EEB4AEP1P050905/gridOffMode/availability:.* availability
ha_tjsLMch1:Zendure/select/EEB4AEP1P050905/acMode:.* acMode
ha_tjsLMch1:Zendure/select/EEB4AEP1P050905/gridReverse:.* gridReverse
ha_tjsLMch1:Zendure/select/EEB4AEP1P050905/gridOffMode:.* gridOffMode
ha_tjsLMch1:homeassistant/number/EEB4AEP1P050905_socSet/config:.* { json2nameValue($EVENT) }
ha_tjsLMch1:homeassistant/number/EEB4AEP1P050905_minSoc/config:.* { json2nameValue($EVENT) }
ha_tjsLMch1:homeassistant/number/EEB4AEP1P050905_inverseMaxPower/config:.* { json2nameValue($EVENT) }
ha_tjsLMch1:Zendure/number/EEB4AEP1P050905/socSet/availability:.* availability
ha_tjsLMch1:Zendure/number/EEB4AEP1P050905/minSoc/availability:.* availability
ha_tjsLMch1:Zendure/number/EEB4AEP1P050905/inverseMaxPower/availability:.* availability
ha_tjsLMch1:Zendure/number/EEB4AEP1P050905/socSet:.* socSet
ha_tjsLMch1:Zendure/number/EEB4AEP1P050905/minSoc:.* minSoc
ha_tjsLMch1:Zendure/number/EEB4AEP1P050905/inverseMaxPower:.* inverseMaxPower
ha_tjsLMch1:Zendure/number/EEB4AEP1P050905/outputLimit/availability:.* availability
ha_tjsLMch1:Zendure/number/EEB4AEP1P050905/inputLimit/availability:.* availability
ha_tjsLMch1:Zendure/number/EEB4AEP1P050905/outputLimit:.* outputLimit
ha_tjsLMch1:Zendure/number/EEB4AEP1P050905/inputLimit:.* inputLimit
ha_tjsLMch1:homeassistant/sensor/EEB4AEP1P050905_electricLevel/config:.* { json2nameValue($EVENT) }
ha_tjsLMch1:homeassistant/sensor/EEB4AEP1P050905_gridInputPower/config:.* { json2nameValue($EVENT) }
ha_tjsLMch1:Zendure/sensor/EEB4AEP1P050905/packNum/availability:.* availability
ha_tjsLMch1:Zendure/sensor/EEB4AEP1P050905/electricLevel/availability:.* availability
ha_tjsLMch1:Zendure/sensor/EEB4AEP1P050905/gridInputPower/availability:.* availability
ha_tjsLMch1:homeassistant/number/EEB4AEP1P050905_outputLimit/config:.* config
ha_tjsLMch1:homeassistant/number/EEB4AEP1P050905_inputLimit/config:.* config
   room       Garten->PV-Anlage,System->MQTT
   setList    outputLimit:slider,0,1,2400 Zendure/number/EEB4AEP1P050905/outputLimit/set $EVTPART1
inputLimit:slider,0,1,2400 Zendure/number/EEB4AEP1P050905/inputLimit/set $EVTPART1
acMode:Input,Output { my $v = $EVTPART1 eq "Input" ? "Input mode" : "Output mode";; return "Zendure/select/EEB4AEP1P050905/acMode/set $v";; }
   stateFormat PV-Eingang: solarInputPower W<br>
Modus: acMode<br>
vom Haus: gridInputPower W, zum Haus packInputPower W<br>
Batteriestand: JO2AEP1P0501114_socLevel %<br>
Restzeit: remainOutTime Min
   userReadings solarEnergy_kWh:solarInputPower.* integral { sprintf("%.3f", ReadingsVal($name,"solarInputPower",0) / 3600000) }
   webCmd     inputLimit:outputLimit
   webCmdLabel Eingangslimit:Ausgangslimit

Nun habe ich die SF-Konfiguration wie folgt erweitert:
attr SolarForecast setupInverterDev02 ha_tjsLMch1 \
  ac2dc=gridInputPower:W \
  dc2ac=packInputPower:W \
  capacity=2400\
  strings=none
attr SolarForecast setupInverterDev03 ha_tjsLMch1 \
  strings=Carport1,Carport2,Carport3,Carport4\
  pvOut=solarInputPower:W\
  etotal=solarEnergy_kWh:kWh\
  capacity=2400\
  icon=inverter
attr SolarForecast setupInverterStrings Osten,Westen,Carport1,Carport2,Carport3,Carport4
attr SolarForecast setupStringAzimuth Osten=-127 Westen=53 Carport1=-31 Carport2=-31 Carport3=-31 Carport4=-31
attr SolarForecast setupStringDeclination Osten=38 Westen=38 Carport1=30 Carport2=30 Carport3=30 Carport4=30
attr SolarForecast setupStringPeak Osten=4 Westen=6.4 Carport1=0.515 Carport2=0.515 Carport3=0.515 Carport4=0.515

Damit erzeugt mir SF diese Flussgrafik:
Du darfst diesen Dateianhang nicht ansehen.

Es verhält sich damit genau so, wie ich es konfiguriert habe.
Aber leider bildet es so nicht ganz die Realität ab. (Nicht über die 0 von oben wundern, die Paneele sind noch nicht angeschlossen.)

Nun stellen sich mir Fragen:
Wie kann ich die Konfiguration so anpassen, dass ich zu dem bisherigen Wechselrichter nur einen neuen bekomme?
Sollte ich auch die Batterie als setpBatteryDev02 in SF bekannt machen? Und wenn ja, wie verknüpfe ich diese mit dem entsprechenden Wechselrichter?

Kannst Du mir dazu Tipps geben?

Vielen Dank und viele Grüße,
Peter
MQTT,Modbus,HTTPMod,DbLog,LaCrosse,SolarForecast,TelegramBot,Twilight,vitoconnect,withings
fhem,fhempy,debmatic
Debian
RaspberryPi5,HomeMatic,HomeMaticIP,Shelly,JeeLink,SignalDuino,ZWDongle,SONOS,alexa,Hue,tradfri,MobileAlerts,Siemens Home Connect,Roborock S50,Wallbox,Harmony,Tuya Smartlife

DS_Starter

Hallo Peter,

ZitatWie kann ich die Konfiguration so anpassen, dass ich zu dem bisherigen Wechselrichter nur einen neuen bekomme?
Sollte ich auch die Batterie als setpBatteryDev02 in SF bekannt machen? Und wenn ja, wie verknüpfe ich diese mit dem entsprechenden Wechselrichter?
Wir hatten Zendure SolarHub 2000 schon als Thema und konnten die Anlage in SF einfügen. Wahrscheinlich ist es der beste Weg wenn du dich mal mit denis.robel in Verbindung setzt.
Als Konfig würde ich das Gerät als Kombination aus Solarladegerät + Batteriewechselrichter betrachten. Du erstellst auch die setpBatteryDev02 und über die Zuordnung von Device (ha_tjsLMch1) /Readings in setpBatteryDev02 bekommst du auch den Bezug zum Ladegerät, welches auch ha_tjsLMch1 ist.
Aber unterhalte dich mal mit denis.

LG,
Heiko
Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter