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)
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?
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
Zitat von: rabehd am 18 Februar 2026, 12:40:06Zitat 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)
Zitat von: rabehd am 18 Februar 2026, 12:40:06Zitat 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
Zitat von: satprofi am 18 Februar 2026, 12:53:59!$mday==18) or ([TabletPylons:batteryPercent] >85 and !$mday=ne 18
Welche KI war das?
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?
Zitat von: rabehd am 18 Februar 2026, 12:59:35Zitat 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"
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
$mday ist der Tag des Monats als Zahl, ungleich geht dann mit:
$mday != 18