FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: satprofi am 18 Februar 2026, 12:24:47

Titel: DOIF an bestimmten Tag klappt nicht
Beitrag von: satprofi am 18 Februar 2026, 12:24:47
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)
Titel: Aw: DOIF an bestimmten Tag klappt nicht
Beitrag 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.
Und...wie wäre es mit dem ganzen DOIF?
Titel: Aw: DOIF an bestimmten Tag klappt nicht
Beitrag von: Otto123 am 18 Februar 2026, 12:41:58
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
Titel: Aw: DOIF an bestimmten Tag klappt nicht
Beitrag von: satprofi am 18 Februar 2026, 12:53:59
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)
Titel: Aw: DOIF an bestimmten Tag klappt nicht
Beitrag von: satprofi am 18 Februar 2026, 12:55:45
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
Titel: Aw: DOIF an bestimmten Tag klappt nicht
Beitrag 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?
Titel: Aw: DOIF an bestimmten Tag klappt nicht
Beitrag von: satprofi am 18 Februar 2026, 13:02:15
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?
Titel: Aw: DOIF an bestimmten Tag klappt nicht
Beitrag von: satprofi am 18 Februar 2026, 13:04:15
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"
Titel: Aw: DOIF an bestimmten Tag klappt nicht
Beitrag von: Otto123 am 18 Februar 2026, 13:07:19
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
Titel: Aw: DOIF an bestimmten Tag klappt nicht
Beitrag von: Damian am 18 Februar 2026, 13:12:36
$mday ist der Tag des Monats als Zahl, ungleich geht dann mit:

$mday != 18