Hauptmenü

DOIF an bestimmten Tag klappt nicht

Begonnen von satprofi, 18 Februar 2026, 12:24:47

Vorheriges Thema - Nächstes Thema

satprofi

Hallo.
habe hier ein DOIF das ein Netzteil steuert, das bei SOC unter 25% lädt, und über 85% stoppt. Ich will aber jetzt jeden 18. des Monats bis 100% laden.
wie stell ich das richtig an?
so klappts nicht:
DOELSEIF ([08:09-20:49] and ([TabletPylons:batteryPercent] ==100 and !$mday==18) or ([TabletPylons:batteryPercent] >85 and !$mday=ne 18)) (set MQTT2_DVES_95813B off)
DOELSEIF ([TabletPylons:batteryPercent] <25) (set MQTT2_DVES_95813B on)

so klappts aber
DOELSEIF ([TabletPylons:batteryPercent] >85) (set MQTT2_DVES_95813B off)
DOELSEIF ([TabletPylons:batteryPercent] <25) (set MQTT2_DVES_95813B on)
gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

rabehd

Zitat von: satprofi am 18 Februar 2026, 12:24:47Ich will aber jetzt jeden 18. des Monats bis 100% laden.
Das lese ich da nicht raus.
Wenn 100% und nicht der 18., dann schalte ab.
Und...wie wäre es mit dem ganzen DOIF?
Auch funktionierende Lösungen kann man hinterfragen.

Otto123

Hi,

mir hilft da im Zweifel immer das hier https://perldoc.perl.org/perlop#Relational-Operators

Falls es $mday im DOIF gibt - wäre der Vergleich also $mday==18 für den 18. des Monats, den brauchst Du in deinem Ausdruck auch nur einmal abfragen. Wegen den Klammern: and wird vor or ausgeführt ;) https://perldoc.perl.org/perlop#Operator-Precedence-and-Associativity


Das was Du da geschrieben hast sieht nach Fehler aus ;)

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle

aktives Mitglied des FHEM e.V. (Technik)

satprofi

Zitat von: rabehd am 18 Februar 2026, 12:40:06
Zitat von: satprofi am 18 Februar 2026, 12:24:47Ich will aber jetzt jeden 18. des Monats bis 100% laden.

Und...wie wäre es mit dem ganzen DOIF?

sorry

([20:52]) (set TabletPylons screen off)
DOELSEIF ([08:10]) (set TabletPylons screen on)
DOELSEIF ([08:09-20:49] and ([TabletPylons:batteryPercent] ==100 and !$mday==18) or ([TabletPylons:batteryPercent] >85 and !$mday=ne 18)) (set MQTT2_DVES_95813B off)
DOELSEIF ([TabletPylons:batteryPercent] <25) (set MQTT2_DVES_95813B on)
gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

satprofi

Zitat von: rabehd am 18 Februar 2026, 12:40:06
Zitat von: satprofi am 18 Februar 2026, 12:24:47Ich will aber jetzt jeden 18. des Monats bis 100% laden.
Das lese ich da nicht raus.
Wenn 100% und nicht der 18., dann schalte ab.


nein, wenn nicht der 18. dann schalte bei 85% ab, am 18. aber erst bei 100, so der Wunsch
gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

rabehd

Zitat von: satprofi am 18 Februar 2026, 12:53:59!$mday==18) or ([TabletPylons:batteryPercent] >85 and !$mday=ne 18
Welche KI war das?
Auch funktionierende Lösungen kann man hinterfragen.

satprofi

Glaube es liegt am "!" , ohne dem klappts.
DOELSEIF ([08:09-20:49] and ([TabletPylons:batteryPercent] ==100 and $mday==18) or ([TabletPylons:batteryPercent] >85 and $mday ne 18)) (set MQTT2_DVES_95813B off)

wozu ist das "!" eigentlich zuständig?
gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

satprofi

Zitat von: rabehd am 18 Februar 2026, 12:59:35
Zitat von: satprofi am 18 Februar 2026, 12:53:59!$mday==18) or ([TabletPylons:batteryPercent] >85 and !$mday=ne 18
Welche KI war das?


das bringt fehler
error    condition c03: syntax error, line 1, near "=ne"
gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

Otto123

#8
wie schon gesagt =ne ist Unfug!
und einmal == und dann ne verwenden kann man machen, macht aber auch nicht unbedingt Sinn. In meinem Link steht warum: Zahlenvergleich und Stringvergleich -> Kann identisch sein - muss aber nicht.

Zitatwozu ist das "!" eigentlich zuständig?
steht für logisch not
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle

aktives Mitglied des FHEM e.V. (Technik)

Damian

$mday ist der Tag des Monats als Zahl, ungleich geht dann mit:

$mday != 18
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF