Verständnisfrage repeatsame mit do always

Begonnen von holle75, 10 Februar 2025, 12:35:47

Vorheriges Thema - Nächstes Thema

holle75

Hallo Ihr, da dieses DOIF möglichst funktionieren sollte, ich aber den Moment wo dieses Failsafe für die Solaranlage aktiv werden muss, ungern zum Testen provoziere .... Verständnisfrage:

RAW (deutlich reduziert)
XtenderSetPrevent_OVP_DOIF DOIF ([MQTT2_JK_BMS:max_cell_voltage] >= 3.56 or [Studer485_CAN:BATT_Voltage] >= 28)\
        (set blabla)\
(set Studer485_XTM AUX1_Transfer_RAM kein_Transfer)\
DOELSEIF ([MQTT2_JK_BMS:max_cell_voltage] >= 3.5 and [Studer485_CAN:SoC] < 99)\
(set Studer485_CAN BATT_Charge_Current_Limit_Adc_RAM 10.0)\
(IF ([MQTT2_JK_BMS:max_cell_voltage] < 3.45) (set $SELF cmd_3))\
DOELSEIF ([MQTT2_JK_BMS:max_cell_voltage:avg10] < 3.37)\
(set Studer485_CAN BATT_Charge_Current_Limit_Adc_RAM 95.0)
attr XtenderSetPrevent_OVP_DOIF do always
attr XtenderSetPrevent_OVP_DOIF repeatsame 0:1:1
attr XtenderSetPrevent_OVP_DOIF wait 0,1:0,600:0

In der commandref macht mich das hier wuschig

ZitatDas Attribut repeatsame lässt sich mit do always oder do resetwait kombinieren. Wenn die maximale Anzahl für ein Kommando ausgelassen oder auf Null gesetzt wird, so gilt für dieses Kommando der Defaultwert "einmalige Wiederholung"; in Kombination mit do always bzw. do resetwait gilt für dieses Kommando "beliebige Wiederholung".

Anwendungsbeispiel: cmd_1 soll beliebig oft wiederholt werden, cmd_2 maximal zweimal

attr di_repeat repeatsame 0:2
attr di_repeat do always

Wenn ich mein Konstrukt richtig verstehe, passiert folgendes: durch

attr XtenderSetPrevent_OVP_DOIF do always
attr XtenderSetPrevent_OVP_DOIF repeatsame 0:1:1

- wird Zweig 1 so oft wie getriggert ausgeführt, egal, ob ein anderer Zweig zwischendrin aktiv war
- Zweig 2 und 3 wird jeweils genau max einmal ausgeführt (wie ohne do always) so lange nicht ein anderer Zweig aktiv war

?

Grüße!
H

Damian

Zitat von: holle75 am 10 Februar 2025, 12:35:47Wenn ich mein Konstrukt richtig verstehe, passiert folgendes: durch

attr XtenderSetPrevent_OVP_DOIF do always
attr XtenderSetPrevent_OVP_DOIF repeatsame 0:1:1

- wird Zweig 1 so oft wie getriggert ausgeführt, egal, ob ein anderer Zweig zwischendrin aktiv war
- Zweig 2 und 3 wird jeweils genau max einmal ausgeführt (wie ohne do always) so lange nicht ein anderer Zweig aktiv war


So ist das.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

holle75