[98_Fronius.pm] Fronius API Modul

Begonnen von michael.winkler, 26 August 2020, 20:10:45

Vorheriges Thema - Nächstes Thema

grappa24

mittlerweile hab ich das fronius technician password und frage mich, wie man aus FHEM heraus den min SoC des Batteriespeichers einstellen kann?
FHEM 6.1, 2 x RasPi 3B+, Debian Buster; KNX, FS20, HM, HUE, Tradfri, Shellies, KLF200
Rollo-/Lichtsteuerung/-szenarien, T-Sensoren, Fensterkontakte, Heizungssteuerung, HEOS, Sprachsteuerung mit Alexa-FHEM, Netatmo, Nuki, ...

stefanru

Hi,

ich habe keinen Weg gefunden das über Fronius direkt zu machen, aber über Modbus direkt.

define <name> ModbusAttr <Id> <Interval> <Address:Port> <RTU|ASCII|TCP>
   
define BYD_Battery ModbusAttr 1 60 192.168.69.72:502 TCP

Die IP ist die IP des Fronius WR.
Im Fronius WR muss der Zugriff auf Modbus erlaubt werden.
Du darfst diesen Dateianhang nicht ansehen.


Dann muss man noch die richtigen Attribute setzen.
Hier mal meine device definition.
define 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/1000000
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/1000000
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-len 1
attr BYD_Runge obj-h40360-reading BatConfigReserve
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 % <br/>\
Max Charge: BatConfigMaxChargeWatt W <br/>\
Config Max: BatConfigMaxEnabled<br/>

Gruß,
Stefan

grappa24

Danke Stefan,

du erweiterst mal wieder meinen Horizont  ;)

Aber erst mal "ne blöde Frage": Wie setze ich denn die vielen attr Befehle auf einmal ab? sorry ...  ;)
FHEM 6.1, 2 x RasPi 3B+, Debian Buster; KNX, FS20, HM, HUE, Tradfri, Shellies, KLF200
Rollo-/Lichtsteuerung/-szenarien, T-Sensoren, Fensterkontakte, Heizungssteuerung, HEOS, Sprachsteuerung mit Alexa-FHEM, Netatmo, Nuki, ...

stefanru

Hi,

ich denke du kannst sie hintereinander mit semicolon schreiben und in der Zeile oben ausführen hinter fhem ( ).
Ich glaube so habe ich das gemacht.
Vielleicht gibts auch nen besseren Weg.

Gruß,
Stefan

kask


stefanru

Ach geil, das kannte ich auch noch nicht.
Wie leicht es doch sein kann ;-)

Danke und Gruß,
Stefan

grappa24

Zitat von: stefanru am 01 Dezember 2023, 15:42:04ich habe keinen Weg gefunden das über Fronius direkt zu machen, aber über Modbus direkt.

define <name> ModbusAttr <Id> <Interval> <Address:Port> <RTU|ASCII|TCP>
super, hat geklappt, vielen Dank. Muss ich mich jetzt mal mit dem Thema Modbus auseinandersetzen  ;)
FHEM 6.1, 2 x RasPi 3B+, Debian Buster; KNX, FS20, HM, HUE, Tradfri, Shellies, KLF200
Rollo-/Lichtsteuerung/-szenarien, T-Sensoren, Fensterkontakte, Heizungssteuerung, HEOS, Sprachsteuerung mit Alexa-FHEM, Netatmo, Nuki, ...

fred_feuerstein

passt gerade zum Thema mit Min-Soc der Batterie.
Wie man ihn setzen kann ist klar. Hatte ich bisher immer im Fronius Webif gemacht.
Aktuell steht dort 20%.
Über Modbus erhalte ich allerdings meinen "alten" dort eingestellt Wert 10% zurück.
Klar, ich könnte den jetzt in FHEM auch setzen. Aber ein im Webif geänderter Wert sollte ja auch über modbus nach fhem übermittelt werden, oder?
Gruß, Fred

FHEM auf Raspberry PI 3B+ im 7Zoll TouchDisplay Gehäuse, OS: Bullseye, mit Z-Wave RaZberry-Modul, 868CUL (WMBUS), LaCrosseCUL (Temp) und knapp 300 Devices aller Art

stefanru

Hi Fred Feuerstein,
nein das sieht man nicht im WEBIF.
Das sind irgendwie andere parameter.
Bei dem Modbus Device kann man ja mehrere Dinge setzen:
BatConfigMaxChargeWatt
BatConfigMaxDischargeWatt
BatConfigMaxEnabled

Wo genau das abgelegt wird ist mir aber auch nicht wirklich klar.

Ich habe im Fronius WEBIF die Batterie immer auf Auto stehen und mache die Steuerung der Batterie ausschließlich über FHEM.

Gruß,
Stefan

fred_feuerstein

Danke für den Tipp. "Fronius WEBIF die Batterie immer auf Auto stehen" ...
das war es. Dort stand bei mir noch "manuell".

Habe das Modul nun noch erweitert, damit man auch diesen "MinSoc" oder besser "BattConfigReserve" per set Befehl aus dem device Menü heraus setzen kann:

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

In erster Linie nur Änderung/Erweiterung beim Obj-h40360


So, nun sollten wir hier im Thread aber wieder zum Thema zurück kommen. Hier geht es ja eigentlich um das Fronius Modul und nicht ModBus ;)
Gruß, Fred

FHEM auf Raspberry PI 3B+ im 7Zoll TouchDisplay Gehäuse, OS: Bullseye, mit Z-Wave RaZberry-Modul, 868CUL (WMBUS), LaCrosseCUL (Temp) und knapp 300 Devices aller Art

hugomckinley

Kann es sein, dass das Modul sich nicht neu verbindet wenn FHEM neu gestartet wird während der Wechselrichter in der Nachtabschaltung ist und dann morgens wieder aufwacht?
Normalerweise ist es sehr stabil, aber das ist bei mir jetzt schon mehrmals ein Problem gewesen.
Ich habe die Version aus https://forum.fhem.de/index.php?msg=1288293

Grüße,
Hugo
----------------------------------------------------
FHEM in TrueNAS-Jail
HMLGW + HM-Komponenten, alexa-fhem, Modbus/TCP, Modbus/RS485, LG-WebOS, Firmata, 1wire, ESP-RGBWW, DaikinAC per WLAN, Shellys, Denon AVR, Fronius WR, Helios Wohnraumlüftung, ...

fichtennadel

Zitat von: hugomckinley am 08 Januar 2024, 12:43:36Kann es sein, dass das Modul sich nicht neu verbindet wenn FHEM neu gestartet wird während der Wechselrichter in der Nachtabschaltung ist und dann morgens wieder aufwacht?
Normalerweise ist es sehr stabil, aber das ist bei mir jetzt schon mehrmals ein Problem gewesen.
Ich habe die Version aus https://forum.fhem.de/index.php?msg=1288293

Das Modul hat keine "stehende" Verbindung, sondern baut die Verbindung in den konfigurierten Intervallen auf und danach gleich wieder ab (http request).
Von daher sollte es alle x Minuten neu versucht werden.

Was steht denn im fhem-Logfile zur fraglichen Zeit? Mit verbose = 4 am Device siehst Du die einzelnen Requests an den Wechselrichter.
RasPi 2 B | JeeLink Classic [4x 30.3144it, 2x 30.3147it] | CUL 433 a-culfw V 1.04.01 [ IT-1500, ITM-100, Somfy Telis 1 RTS, BelFox ] | TCM ESP3 [ FSB61, FSB61NP, FT55, FMH4S, AP221 ] | Fronius | Modbus/TCP (Stiebel Eltron WP)

hugomckinley

Da hab ich mich falsch ausgedrückt mit der Verbindung. Meine Vermutung war, dass irgendein Timer o.ä. nicht gestartet wird wenn er beim Laden des Moduls initial keine Daten bekommt.
Ich habe jetzt den Fehler reproduziert und folgende Einträge im Log bekommen.

Nach FHEM Neustart:
2024.01.10 07:58:19 4: [WR] [fronius_SendCommand] [GetArchiveData] NOT PushToCmdQueue ERROR=Fronus API Base URL not set!
2024.01.10 07:58:19 4: [WR] [fronius_GetArchiveData] Timer 120
2024.01.10 07:58:35 4: [WR] [fronius_SendCommand] [GetPowerFlowRealtimeData] START
2024.01.10 07:58:35 4: [WR] [fronius_SendCommand] [GetPowerFlowRealtimeData] NOT PushToCmdQueue ERROR=Fronus API Base URL not set!
2024.01.10 07:58:35 4: [WR] [fronius_GetPowerFlowRealtimeData] Timer 60
2024.01.10 07:59:35 4: [WR] [fronius_SendCommand] [GetPowerFlowRealtimeData] START
2024.01.10 07:59:35 4: [WR] [fronius_SendCommand] [GetPowerFlowRealtimeData] NOT PushToCmdQueue ERROR=Fronus API Base URL not set!
2024.01.10 07:59:35 4: [WR] [fronius_GetPowerFlowRealtimeData] Timer 60
2024.01.10 08:00:19 4: [WR] [fronius_SendCommand] [GetArchiveData] START
2024.01.10 08:00:19 4: [WR] [fronius_SendCommand] [GetArchiveData] NOT PushToCmdQueue ERROR=Fronus API Base URL not set!
2024.01.10 08:00:19 4: [WR] [fronius_GetArchiveData] Timer 120
2024.01.10 08:00:35 4: [WR] [fronius_SendCommand] [GetPowerFlowRealtimeData] START
2024.01.10 08:00:35 4: [WR] [fronius_SendCommand] [GetPowerFlowRealtimeData] NOT PushToCmdQueue ERROR=Fronus API Base URL not set!
2024.01.10 08:00:35 4: [WR] [fronius_GetPowerFlowRealtimeData] Timer 60

Nach modify WR 192.168.64.130:
2024.01.10 08:01:00 4: [WR] [fronius_StartUp]
2024.01.10 08:01:00 4: [WR] [fronius_StartUp] clearHeadData
2024.01.10 08:01:00 3: [WR] [fronius_setState] to initialize
2024.01.10 08:01:00 4: [WR] [fronius_StartUp] RemoveInternalTimer
2024.01.10 08:01:00 4: [WR] [fronius_StartUp] InternalTimer Statische Daten
2024.01.10 08:01:00 4: [WR] [fronius_StartUp] InternalTimer Realtime Daten
2024.01.10 08:01:00 4: [WR] [fronius_StartUp] InternalTimer Archive Daten - 120
2024.01.10 08:01:00 4: [WR] [fronius_StartUp] done
2024.01.10 08:01:00 4: [WR] [fronius_SendCommand] [GetAPIVersionInfo] START
2024.01.10 08:01:00 4: [WR] [fronius_SendCommand] [GetAPIVersionInfo] PushToCmdQueue SendURL=http://192.168.64.130/solar_api/GetAPIVersion.cgi
2024.01.10 08:01:00 4: [WR] [fronius_HandleCmdQueue] [GetAPIVersionInfo] send command=http://192.168.64.130/solar_api/GetAPIVersion.cgi
2024.01.10 08:01:00 4: [WR] [fronius_Parse] [GetAPIVersionInfo]
2024.01.10 08:01:00 3: [WR] [fronius_setState] to connected
2024.01.10 08:01:05 4: [WR] [fronius_SendCommand] [GetActiveDeviceInfo] START
2024.01.10 08:01:05 4: [WR] [fronius_SendCommand] [GetActiveDeviceInfo] PushToCmdQueue SendURL=http://192.168.64.130/solar_api/v1/GetActiveDeviceInfo.cgi?DeviceClass=System
2024.01.10 08:01:05 4: [WR] [fronius_HandleCmdQueue] [GetActiveDeviceInfo] send command=http://192.168.64.130/solar_api/v1/GetActiveDeviceInfo.cgi?DeviceClass=System
2024.01.10 08:01:05 4: [WR] [fronius_Parse] [GetActiveDeviceInfo]
2024.01.10 08:01:10 4: [WR] [fronius_SendCommand] [GetPowerFlowRealtimeData] START
2024.01.10 08:01:10 4: [WR] [fronius_SendCommand] [GetPowerFlowRealtimeData] PushToCmdQueue SendURL=http://192.168.64.130/solar_api/v1/GetPowerFlowRealtimeData.fcgi
2024.01.10 08:01:10 4: [WR] [fronius_HandleCmdQueue] [GetPowerFlowRealtimeData] send command=http://192.168.64.130/solar_api/v1/GetPowerFlowRealtimeData.fcgi
2024.01.10 08:01:10 4: [WR] [fronius_GetPowerFlowRealtimeData] Timer 60
2024.01.10 08:01:10 4: [WR] [fronius_Parse] [GetPowerFlowRealtimeData]
2024.01.10 08:01:16 4: [WR] [fronius_SendCommand] [GetInverterRealtimeData_System] START
2024.01.10 08:01:16 4: [WR] [fronius_SendCommand] [GetInverterRealtimeData_System] PushToCmdQueue SendURL=http://192.168.64.130/solar_api/v1/GetInverterRealtimeData.cgi?Scope=System
2024.01.10 08:01:16 4: [WR] [fronius_HandleCmdQueue] [GetInverterRealtimeData_System] send command=http://192.168.64.130/solar_api/v1/GetInverterRealtimeData.cgi?Scope=System
2024.01.10 08:01:16 4: [WR] [fronius_SendCommand] [GetInverterRealtimeData_Cumulation] START
2024.01.10 08:01:16 4: [WR] [fronius_SendCommand] [GetInverterRealtimeData_Cumulation] PushToCmdQueue SendURL=http://192.168.64.130/solar_api/v1/GetInverterRealtimeData.cgi?Scope=Device&DeviceId=1&DataCollection=CumulationInverterData
2024.01.10 08:01:16 4: [WR] [fronius_SendCommand] [GetInverterRealtimeData_Common] START
2024.01.10 08:01:16 4: [WR] [fronius_SendCommand] [GetInverterRealtimeData_Common] PushToCmdQueue SendURL=http://192.168.64.130/solar_api/v1/GetInverterRealtimeData.cgi?Scope=Device&DeviceId=1&DataCollection=CommonInverterData
2024.01.10 08:01:16 4: [WR] [fronius_SendCommand] [GetInverterRealtimeData_3P] START
2024.01.10 08:01:16 4: [WR] [fronius_SendCommand] [GetInverterRealtimeData_3P] PushToCmdQueue SendURL=http://192.168.64.130/solar_api/v1/GetInverterRealtimeData.cgi?Scope=Device&DeviceId=1&DataCollection=3PInverterData
2024.01.10 08:01:16 4: [WR] [fronius_GetInverterRealtimeData] Timer 60
2024.01.10 08:01:16 4: [WR] [fronius_Parse] [GetInverterRealtimeData_System]
2024.01.10 08:01:16 4: [WR] [fronius_HandleCmdQueue] [GetInverterRealtimeData_3P] send command=http://192.168.64.130/solar_api/v1/GetInverterRealtimeData.cgi?Scope=Device&DeviceId=1&DataCollection=3PInverterData
2024.01.10 08:01:16 4: [WR] [fronius_Parse] [GetInverterRealtimeData_3P]
2024.01.10 08:01:16 4: [WR] [fronius_HandleCmdQueue] [GetInverterRealtimeData_Common] send command=http://192.168.64.130/solar_api/v1/GetInverterRealtimeData.cgi?Scope=Device&DeviceId=1&DataCollection=CommonInverterData
2024.01.10 08:01:16 4: [WR] [fronius_Parse] [GetInverterRealtimeData_Common]
2024.01.10 08:01:16 4: [WR] [fronius_HandleCmdQueue] [GetInverterRealtimeData_Cumulation] send command=http://192.168.64.130/solar_api/v1/GetInverterRealtimeData.cgi?Scope=Device&DeviceId=1&DataCollection=CumulationInverterData
2024.01.10 08:01:16 4: [WR] [fronius_Parse] [GetInverterRealtimeData_Cumulation]

Dieses ERROR=Fronus API Base URL not set! schaut aber eher danach aus, als ob die Adresse nicht initialisiert wird, oder?

Ich kann mir nicht vorstellen, dass dieses verhalten bei allen auftritt, das müsste doch sonst auch wem auffallen.
Bin ich da der einzige?

Grüße,
Hugo
----------------------------------------------------
FHEM in TrueNAS-Jail
HMLGW + HM-Komponenten, alexa-fhem, Modbus/TCP, Modbus/RS485, LG-WebOS, Firmata, 1wire, ESP-RGBWW, DaikinAC per WLAN, Shellys, Denon AVR, Fronius WR, Helios Wohnraumlüftung, ...

fichtennadel

Wie startest Du fhem neu?

Das Problem ist, dass die Variable $hash->{helper}{VARS}{FroniusBaseURL} noch den Wert 'nA' hat, die wird normalerweise bei der Verarbeitung des Aufrufs von GetAPIVersionInfo auf den passenden Wert gesetzt, was wiederum in der Modulinitialisierung passiert.
Sieht man auch im Auszug des Logs beim Gutfall ([fronius_Parse] [GetAPIVersionInfo])

Nach dem Neustart müsste eigentlich ein Aufruf von [fronius_StartUp] und [fronius_Parse] [GetAPIVersionInfo] im Log sein.

Intern betrachtet muss fhem die Variable $init_done setzen, damit im define auch die Timer gesetzt werden, das scheint bei Dir bei einem Neustart nicht der Fall zu sein.

Bei mir tritt das Problem bei einem shutdown restart jedenfalls nicht auf.
RasPi 2 B | JeeLink Classic [4x 30.3144it, 2x 30.3147it] | CUL 433 a-culfw V 1.04.01 [ IT-1500, ITM-100, Somfy Telis 1 RTS, BelFox ] | TCM ESP3 [ FSB61, FSB61NP, FT55, FMH4S, AP221 ] | Fronius | Modbus/TCP (Stiebel Eltron WP)

octek0815

#329
Zitat von: fichtennadel am 10 Januar 2024, 11:50:29Wie startest Du fhem neu?

Das Problem ist, dass die Variable $hash->{helper}{VARS}{FroniusBaseURL} noch den Wert 'nA' hat, die wird normalerweise bei der Verarbeitung des Aufrufs von GetAPIVersionInfo auf den passenden Wert gesetzt, was wiederum in der Modulinitialisierung passiert.
Sieht man auch im Auszug des Logs beim Gutfall ([fronius_Parse] [GetAPIVersionInfo])

Nach dem Neustart müsste eigentlich ein Aufruf von [fronius_StartUp] und [fronius_Parse] [GetAPIVersionInfo] im Log sein.

Intern betrachtet muss fhem die Variable $init_done setzen, damit im define auch die Timer gesetzt werden, das scheint bei Dir bei einem Neustart nicht der Fall zu sein.

Bei mir tritt das Problem bei einem shutdown restart jedenfalls nicht auf.

Ich habe ein ähliches Problem. Nach einem Neustart kommen nicht alle Werte.
Erst nach einem "Neu-definieren" funktioniert alles wieder.