76_SolarForecast - Informationen/Ideen zu Weiterentwicklung und Support

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

Vorheriges Thema - Nächstes Thema

stefanru

Hi Grappa,

die BYD Batterie am Fronius solltest du über MQTT abfragen.
Damit kannst du auch die Limits setzen.

Ich benutze zwar auch EVCC aber eigentlich nur fürs Auto, die Batterie Werte von EVCC verwende ich nicht in FHEM.
Gibt es einen Grund warum du die Batterie Werte in FHEM über EVCC ausliest?

Hier mal die RAW Definition meines BYD Devices:
defmod BYD_Runge ModbusAttr 1 60 192.168.69.72:502 TCP
attr BYD_Runge dev-h-combine 125
attr BYD_Runge dev-h-defFormat %.1f
attr BYD_Runge dev-h-defLen 2
attr BYD_Runge dev-h-defPoll 1
attr BYD_Runge dev-h-defUnpack f>
attr BYD_Runge devStateStyle style="text-align:right"
attr BYD_Runge event-min-interval ACActEnergy:7200,ACPower:7200,Battery.*:7200
attr BYD_Runge event-on-change-reading .*Energy:0.1,ACPower:1,DCPowerMPPT.*:1,status,Battery.*harge.*:1,BatteryState
attr BYD_Runge group Fronius Modbus
attr BYD_Runge icon measure_battery_100
attr BYD_Runge obj-h40073-reading ACCurrentPhaseA
attr BYD_Runge obj-h40075-reading ACCurrentPhaseB
attr BYD_Runge obj-h40077-reading ACCurrentPhaseC
attr BYD_Runge obj-h40085-reading ACVoltagePhaseA
attr BYD_Runge obj-h40087-reading ACVoltagePhaseB
attr BYD_Runge obj-h40089-reading ACVoltagePhaseC
attr BYD_Runge obj-h40091-format %.0f
attr BYD_Runge obj-h40091-reading ACPower
attr BYD_Runge obj-h40093-reading ACFrequency
attr BYD_Runge obj-h40109-reading CabinetTemperature
attr BYD_Runge obj-h40117-format %s
attr BYD_Runge obj-h40117-len 1
attr BYD_Runge obj-h40117-map 1:off,2:sleeping,3:starting,4:active,5:throttled,6:shutdown,7:fault,8:standby
attr BYD_Runge obj-h40117-reading status
attr BYD_Runge obj-h40117-unpack n
attr BYD_Runge obj-h40196-expr $val / 1000
attr BYD_Runge obj-h40196-format %.2f
attr BYD_Runge obj-h40196-len 4
attr BYD_Runge obj-h40196-reading ACActEnergy
attr BYD_Runge obj-h40196-unpack Q>
attr BYD_Runge obj-h40267-format %d
attr BYD_Runge obj-h40267-group 1-1
attr BYD_Runge obj-h40267-len 1
attr BYD_Runge obj-h40267-reading DCPowerScale
attr BYD_Runge obj-h40267-unpack s>
attr BYD_Runge obj-h40284-expr $val * 10 ** ReadingsVal($name, 'DCPowerScale', 1)
attr BYD_Runge obj-h40284-group 1-2
attr BYD_Runge obj-h40284-len 1
attr BYD_Runge obj-h40284-reading DCPowerMPPT1
attr BYD_Runge obj-h40284-unpack n
attr BYD_Runge obj-h40304-expr $val * 10 ** ReadingsVal($name, 'DCPowerScale', 1)
attr BYD_Runge obj-h40304-group 1-3
attr BYD_Runge obj-h40304-len 1
attr BYD_Runge obj-h40304-reading DCPowerMPPT2
attr BYD_Runge obj-h40304-unpack n
attr BYD_Runge obj-h40324-expr $val * 10 ** ReadingsVal($name, 'DCPowerScale', 1)
attr BYD_Runge obj-h40324-group 1-4
attr BYD_Runge obj-h40324-len 1
attr BYD_Runge obj-h40324-reading BatteryChargeWatt
attr BYD_Runge obj-h40324-unpack n
attr BYD_Runge obj-h40325-expr $val/100000
attr BYD_Runge obj-h40325-ignoreExpr $val < 100
attr BYD_Runge obj-h40325-len 2
attr BYD_Runge obj-h40325-poll 300
attr BYD_Runge obj-h40325-reading Summe_Ladung
attr BYD_Runge obj-h40325-unpack N
attr BYD_Runge obj-h40344-expr $val * 10 ** ReadingsVal($name, 'DCPowerScale', 1)
attr BYD_Runge obj-h40344-group 1-5
attr BYD_Runge obj-h40344-len 1
attr BYD_Runge obj-h40344-reading BatteryDischargeWatt
attr BYD_Runge obj-h40344-unpack n
attr BYD_Runge obj-h40345-expr $val/100000
attr BYD_Runge obj-h40345-ignoreExpr $val < 100
attr BYD_Runge obj-h40345-len 2
attr BYD_Runge obj-h40345-poll 300
attr BYD_Runge obj-h40345-reading Summe_Entladung
attr BYD_Runge obj-h40345-unpack N
attr BYD_Runge obj-h40355-len 1
attr BYD_Runge obj-h40355-reading BatConfigMaxReferenceWatt
attr BYD_Runge obj-h40355-unpack n
attr BYD_Runge obj-h40358-format %s
attr BYD_Runge obj-h40358-len 1
attr BYD_Runge obj-h40358-map 0:none,1:chargeMax,2:dischrMax,3:bothMax
attr BYD_Runge obj-h40358-reading BatConfigMaxEnabled
attr BYD_Runge obj-h40358-set 1
attr BYD_Runge obj-h40358-unpack n
attr BYD_Runge obj-h40360-expr $val / 100
attr BYD_Runge obj-h40360-format %.0f
attr BYD_Runge obj-h40360-len 1
attr BYD_Runge obj-h40360-poll 60
attr BYD_Runge obj-h40360-reading BatConfigReserve
attr BYD_Runge obj-h40360-set 1
attr BYD_Runge obj-h40360-setexpr $val * 100
attr BYD_Runge obj-h40360-unpack n
attr BYD_Runge obj-h40361-expr $val / 100
attr BYD_Runge obj-h40361-len 1
attr BYD_Runge obj-h40361-reading BatteryChargePercent
attr BYD_Runge obj-h40361-unpack n
attr BYD_Runge obj-h40364-format %s
attr BYD_Runge obj-h40364-len 1
attr BYD_Runge obj-h40364-map 1:off,2:empty,3:discharging,4:charging,5:full,6:holding,7:testing
attr BYD_Runge obj-h40364-reading BatteryState
attr BYD_Runge obj-h40364-unpack n
attr BYD_Runge obj-h40365-expr $val / 10000 * ReadingsVal($name, 'BatConfigMaxReferenceWatt', 1)
attr BYD_Runge obj-h40365-len 1
attr BYD_Runge obj-h40365-max ReadingsVal($name, 'BatConfigMaxReferenceWatt', 1)
attr BYD_Runge obj-h40365-min -ReadingsVal($name, 'BatConfigMaxReferenceWatt', 1)
attr BYD_Runge obj-h40365-reading BatConfigMaxDischargeWatt
attr BYD_Runge obj-h40365-set 1
attr BYD_Runge obj-h40365-setexpr $val / ReadingsVal($name, 'BatConfigMaxReferenceWatt', 1) * 10000
attr BYD_Runge obj-h40365-unpack s>
attr BYD_Runge obj-h40366-expr $val / 10000 * ReadingsVal($name, 'BatConfigMaxReferenceWatt', 1)
attr BYD_Runge obj-h40366-len 1
attr BYD_Runge obj-h40366-max ReadingsVal($name, 'BatConfigMaxReferenceWatt', 1)
attr BYD_Runge obj-h40366-min -ReadingsVal($name, 'BatConfigMaxReferenceWatt', 1)
attr BYD_Runge obj-h40366-reading BatConfigMaxChargeWatt
attr BYD_Runge obj-h40366-set 1
attr BYD_Runge obj-h40366-setexpr $val / ReadingsVal($name, 'BatConfigMaxReferenceWatt', 1) * 10000
attr BYD_Runge obj-h40366-unpack s>
attr BYD_Runge room Strom
attr BYD_Runge stateFormat Status: BatteryState <br/>\
Ladung: BatteryChargePercent % | Reserve: BatConfigReserve %<br/>\
Max Charge: BatConfigMaxChargeWatt W | Max DisCharge:BatConfigMaxDischargeWatt W<br/>\
Config Max: BatConfigMaxEnabled<br/>\
Temp: CabinetTemperature °C<br/>

setstate BYD_Runge Status: holding <br/>\
Ladung: 33.3 % | Reserve: 5 %<br/>\
Max Charge: 12800.0 W | Max DisCharge:0.0 W<br/>\
Config Max: bothMax<br/>\
Temp: 42.6 °C<br/>
setstate BYD_Runge 2025-01-02 17:34:01 ACActEnergy 18320.65
setstate BYD_Runge 2025-01-02 17:34:01 ACCurrentPhaseA 0.0
setstate BYD_Runge 2025-01-02 17:34:01 ACCurrentPhaseB 0.0
setstate BYD_Runge 2025-01-02 17:34:01 ACCurrentPhaseC 0.0
setstate BYD_Runge 2025-01-02 17:34:01 ACFrequency 50.0
setstate BYD_Runge 2025-01-02 17:34:01 ACPower -24
setstate BYD_Runge 2025-01-02 17:34:01 ACVoltagePhaseA 226.5
setstate BYD_Runge 2025-01-02 17:34:01 ACVoltagePhaseB 227.6
setstate BYD_Runge 2025-01-02 17:34:01 ACVoltagePhaseC 229.1
setstate BYD_Runge 2025-01-02 17:34:01 BatConfigMaxChargeWatt 12800.0
setstate BYD_Runge 2025-01-02 17:34:01 BatConfigMaxDischargeWatt 0.0
setstate BYD_Runge 2025-01-02 17:34:01 BatConfigMaxEnabled bothMax
setstate BYD_Runge 2025-01-02 17:34:01 BatConfigMaxReferenceWatt 12800.0
setstate BYD_Runge 2025-01-02 17:34:01 BatConfigReserve 5
setstate BYD_Runge 2025-01-02 17:34:01 BatteryChargePercent 33.3
setstate BYD_Runge 2025-01-02 17:34:01 BatteryChargeWatt 0.0
setstate BYD_Runge 2025-01-02 17:34:01 BatteryDischargeWatt 0.5
setstate BYD_Runge 2025-01-02 17:34:01 BatteryState holding
setstate BYD_Runge 2025-01-02 17:34:01 CabinetTemperature 42.6
setstate BYD_Runge 2025-01-02 17:34:01 DCPowerMPPT1 0.5
setstate BYD_Runge 2025-01-02 17:34:01 DCPowerMPPT2 0.7
setstate BYD_Runge 2025-01-02 17:34:01 DCPowerScale -5
setstate BYD_Runge 2025-01-02 17:34:01 Summe_Entladung 4582.9
setstate BYD_Runge 2025-01-02 17:34:01 Summe_Ladung 4810.6
setstate BYD_Runge 2025-01-01 22:07:53 state opened
setstate BYD_Runge 2025-01-02 17:34:01 status active

Und es gibt noch noch ein sehr cooles Modul BYDBox.
Hiermit kannst du wirklich alle Infos der Batterie sogar auf Zellebene auswerten.
Hier ein Beispiel:
Du darfst diesen Dateianhang nicht ansehen.

Gruß,
Stefan

grappa24

#1456
Zitat von: stefanru am 02 Januar 2025, 17:39:45Gibt es einen Grund warum du die Batterie Werte in FHEM über EVCC ausliest?
ja, weil man in der evcc-yaml auf einfache Art und Weise die MQTT-topics auslösen kann. Wie machst du das, dass der Fronius/BYD die topics liefern?

ZitatHier mal die RAW Definition meines BYD Devices:
defmod BYD_Runge ModbusAttr 1 60 192.168.69.72:502 TCP
attr BYD_Runge dev-h-combine 125
das ist aber doch Modbus, den Zugriff hab ich ja auch ... ich meine sogar von dir  ;)




Gebäudesicherheit/-komfort, PV-Prognose/Verbrauchssteuerung, Heizungssteuerung, Multimedia, ...
KNX, FS20, HM, HUE, Tradfri, Shellies, KLF200, Netatmo, Nuki, SolarForecast, HEOS, Alexa-FHEM, ...
FHEM 6.4, 2 x RasPi 3B+, Debian Bullseye

stefanru

#1457
Ja genau ich nehme die Werte von Modubus.
Und da setze ich je nachdem die Werte für die Batterie.
Möglich zur Steuerung sind 4 Parameter:
BatConfigMaxChargeWatt
BatConfigMaxDischargeWatt
BatConfigMaxEnabled
BatConfigReserve

Ich benutze hauptsächlich BatConfigMaxChargeWatt, BatConfigMaxDischargeWatt.
Wobei hier eine 0 ein Lade bzw. Entlade stopp bewirkt.
BatConfigMaxEnabled habe ich dabei auf bothMax.

Man kann aber auch BatConfigReserve für einen MinSOC verwenden.

Ja klar über EVCC kann ich mir alle Daten per MQTT liefern lassen.
Aber es ist irgendwie eine unnötige indirektion die ich mir mit MQTT spare.

Oder willst du wirklich EVCC Steuern? Also wann das Auto geladen wird und wie mit der Batterie dabei umgegangen wird?
Das könntest du natürlich auch aus FHEM heraus, da benutze ich aber dann wirklich das EVCC UI.

Gruß,
Stefan

Max_Meyer

Zitat von: münster am 02 Januar 2025, 11:41:34Ich sehe in der Solaredge-Monitoring, dass ich nachts einen Verbrauch von etwa 270Wh hatte. Heute Nacht (mit dem obigen Code) habe ich einen Verbrauch von etwa 270Wh (OK!), aber ich habe auch eine Phantomproduktion von etwa der gleichen Menge. (02: 276 verbraucht, 274 produziert, 03: 273 verbraucht, 272 produziert, usw.).

Ich fange an zu denken, dass ich von Anfang an neu beginnen muss :)

Hallo münster,
ich tippe mal - wie geschrieben benutze ich eine andere Marke - aber die Probleme sind gleich. In meinem Falle ist es auch der erste Hybrid den ich einbinde aber SMA  habe ich bereits mehrere laufen.
wenn ich richtig geschaut habe ist die SE-Integration, die du nutzt, von 2022 (letzte Änderung) --> damals gabs (meines Wissens) noch keine Hybrid-WR - und somit fehlen da ggfls. einige Parameter denke ich. In dem File, auf das ich heute morgen verwiesen habe,  sind alle notwendigen Register vorhanden, glaube ich - die Frage ist ob das File für dein Gerät gültig ist - ansonsten findet sich das bestimmt im SE-Supportbereich. Die Register müssten nur abgefragt werden. Ich nutze dazu 98_ModbusAttr.pm. Zur Bestimmung der 'richtigen' Register nutze ich den Quervergleich mit der Oberfläche (Webserver) des WR - da wird ja der richtige/gewünschte Wert angezeigt.

Gruß Gerd

grappa24

Zitat von: stefanru am 02 Januar 2025, 18:00:53Ja genau ich nehme die Werte von Modubus.
Und da setze ich je nachdem die Werte für die Batterie.
Möglich zur Steuerung sind 4 Parameter:
BatConfigMaxChargeWatt
BatConfigMaxDischargeWatt
BatConfigMaxEnabled
BatConfigReserve
Die ersten drei Parameter kann ich setzen, BatConfigReserve fehlt in der Liste meiner Set-Befehle
Vermutung: In meiner Solar-API ist bei der Modbus Konfig zwar "Steuerung erlauben" aktiv, aber auch "Steuerung Einschränken" aktiv
ZitatOder willst du wirklich EVCC Steuern? Also wann das Auto geladen wird und wie mit der Batterie dabei umgegangen wird?
Das könntest du natürlich auch aus FHEM heraus, da benutze ich aber dann wirklich das EVCC UI.
Nein, die Arbeit möchte ich mir nicht machen  :D
Gebäudesicherheit/-komfort, PV-Prognose/Verbrauchssteuerung, Heizungssteuerung, Multimedia, ...
KNX, FS20, HM, HUE, Tradfri, Shellies, KLF200, Netatmo, Nuki, SolarForecast, HEOS, Alexa-FHEM, ...
FHEM 6.4, 2 x RasPi 3B+, Debian Bullseye

Parallix

#1460
Sehe soeben, dass einige von Euch plädieren, die BAT-Gesamtleistungswerte weiterhin im Modul zu belassen. Interessanterweise hat keiner bislang §14a EnWG als Grund hierfür angeben oder aber ich habe es überlesen. Unabhängig davon, ob die BAT-Leistungen einzeln oder in Summe betrachtet werden, wäre es sicherlich zukunftssicher, wenn im Modul vorgesehen werden könnte, dass - früher oder später - die maximale Leistung, die vom öffentlichen Netz rechnerisch den BAT-Systemen zugeführt wird, dynamisch limitiert werden kann. Recht anschaulich sind die künftigen Fähigkeiten, die insb. dieses tollen Modul möglich macht, z.B. auf einer Webseite von ABB unter dem Abschnitt "Mit Eigenerzeugungsanlage".
FHEM: Debian/Testing BananaPro - AVM: 7490 (7.59) und 7591 (8.02) - Goodwe: GW25K-ET (DSP V10 / ARM V12) - BYD: 2 x HVS 5.1 (BMS V3.29-A, BMU V3.23-A) - EnOcean - Z-Wave - FS20/HMS

300P

Naja, ob FHEM in einem solchen Falle dazu dann als anerkanntes ,,Steuergerät" (oder ähnliches) von ,,irgendwelchen Stellen" anerkannt werden wird ,,steht auf wackligen Beinen". O:-)


Trotzdem bin ich auch dafür dies im Modul weiterhin bereitzustellen - ansonsten behalte ich einfach weiterhin meinen Batteriedummy als Summenlieferant für diese Werte (wie bislang). 8)
Gruß
300P

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

stefanru

Hi Grappa,

BatConfigReserve kam glaub ich später zu den ModBus Registern hinzu.

Schau mal ob du die attribute für obj-h40360 hast.
Wenn nicht übernehme sie mal von mir. Also alle für obj-h40360.

Gruß,
Stefan

DS_Starter

Bezüglich einem summarischen Current_PowerBatIn(_Sum) bzw. Current_PowerBatOut(_Sum) bin ich völlig offen und kann es gerne (wieder) einbauen.
Da es eigentlich nur Sinn bei Anlagen mit mehr als einer Batterie macht, könnte ich diese Werte alternativ als eine auswählbare Option des Attr ctrlStatisticReadings anbieten.
Natürlich ginge auch eine generelle Generierung, wobei Nutzer nur einer Batterie (wohl die meisten) dann eine unnütze Readingredundanz haben.

Meinungen?
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

300P

Mit

ctrlStatisticReading

wäre wohl allen mit geholfen.

Gruß
300P
Gruß
300P

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

Parallix

Zitat von: 300P am 02 Januar 2025, 20:47:15Mit

ctrlStatisticReading

wäre wohl allen mit geholfen.

Gruß
300P

Hat zwar wenig mit Statistik zu tun, würde in der Tat aber den Zweck erfüllen.
FHEM: Debian/Testing BananaPro - AVM: 7490 (7.59) und 7591 (8.02) - Goodwe: GW25K-ET (DSP V10 / ARM V12) - BYD: 2 x HVS 5.1 (BMS V3.29-A, BMU V3.23-A) - EnOcean - Z-Wave - FS20/HMS

DS_Starter

ZitatHat zwar wenig mit Statistik zu tun, würde in der Tat aber den Zweck erfüllen.
Naja, wir müssen etwas kreativ sein. Wobei der Einwand durchaus berechtigt ist.
Mal sehen ob ich das Attribut passender benennen kann.
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

300P

Gruß
300P

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

grappa24

#1468
Zitat von: stefanru am 02 Januar 2025, 20:12:56BatConfigReserve kam glaub ich später zu den ModBus Registern hinzu.
Schau mal ob du die attribute für obj-h40360 hast.
Wenn nicht übernehme sie mal von mir. Also alle für obj-h40360.
mir fehlten 4 der 8 attribute, hab ich ergänzt, jetzt geht der set-Befehl für BatConfigReserve

ZitatMan kann aber auch BatConfigReserve für einen MinSOC verwenden.
Ich kann zwar jetzt BatConfigReserve setzen, mein MinSOC (=Minimales Ladelimit) lässt sich aber "scheinbar" nicht beeindrucken  :(


Gebäudesicherheit/-komfort, PV-Prognose/Verbrauchssteuerung, Heizungssteuerung, Multimedia, ...
KNX, FS20, HM, HUE, Tradfri, Shellies, KLF200, Netatmo, Nuki, SolarForecast, HEOS, Alexa-FHEM, ...
FHEM 6.4, 2 x RasPi 3B+, Debian Bullseye

DS_Starter

#1469
Hallo zusammen,

In meinem contrib liegt eine neue Version die folgendes umgesetzt hat:

- das Attr ctrlStatisticReadings wird automatisch in ctrlSpecialReadings umgesetzt
- die generierten Readings heißen nun special_<Reading> statt statistic_<Reading>
- es sind nun die KPI BatPowerIn_Sum und BatPowerOut_Sum auswählbar

Die neuen Namen des Attributs und der Readings sind allgemeingültiger und passender zum Kontext.
Es ist schon spät, deswegen liegt die V zunächst im contrib.
Wer sie schon nutzen möchte, wie immer nach dem Download FHEM restarten!

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