FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: ekur am 23 Juli 2024, 22:40:28

Titel: [Gelöst] DOIF mit Prozentzahlen und Operanten
Beitrag von: ekur am 23 Juli 2024, 22:40:28
Hallo zusammen,

ich habe ein kleines Problem mit den Operanten zu einer Schaltung einer Steckdose. Hierbei sollen Werte mit %-Zeichen verglichen werden, gemäß Syntax für Pearl sollte das DOIF so aussehen:
([Status:battery] lt '30%') (set Schalter on) DOELSEIF ([Status:battery] gt '90%') (set Schalter off)Es werden, da keine numerische Zahl die Operanten lt und gt verwendet.
Ergebnis: Keine Fehlermeldung, aber es wird auch nichts geschaltet, das DOIF bleibt im ersten Befehl stecken.
Mit der "falschen" Syntax:
([Status:battery] < '30%') (set Schalter on) DOELSEIF ([Status:battery] > '90%') (set Schalter off)Ergebnis: Fehlermeldung "Argument "30%" isn't numeric in numeric lt (<) at " für alle Werte, aber das DOIF schaltet richtig  :o

Kann mir einer auf die Sprünge helfen?
Titel: Aw: DOIF mit Prozentzahlen und Operanten
Beitrag von: Damian am 23 Juli 2024, 22:51:29
Zitat von: ekur am 23 Juli 2024, 22:40:28Hallo zusammen,

ich habe ein kleines Problem mit den Operanten zu einer Schaltung einer Steckdose. Hierbei sollen Werte mit %-Zeichen verglichen werden, gemäß Syntax für Pearl sollte das DOIF so aussehen:
([Status:battery] lt '30%') (set Schalter on) DOELSEIF ([Status:battery] gt '90%') (set Schalter off)Es werden, da keine numerische Zahl die Operanten lt und gt verwendet.
Ergebnis: Keine Fehlermeldung, aber es wird auch nichts geschaltet, das DOIF bleibt im ersten Befehl stecken.
Mit der "falschen" Syntax:
([Status:battery] < '30%') (set Schalter on) DOELSEIF ([Status:battery] > '90%') (set Schalter off)Ergebnis: Fehlermeldung "Argument "30%" isn't numeric in numeric lt (<) at " für alle Werte, aber das DOIF schaltet richtig  :o

Kann mir einer auf die Sprünge helfen?


Zahlen solltest du nicht mit lt vergleichen. Wenn in Status:battery das Prozentzeichen vorkommt, dann kannst du es mit :d herausfiltern und mit < vergleichen:

([Status:battery:d] < 30)
Titel: Aw: DOIF mit Prozentzahlen und Operanten
Beitrag von: ekur am 24 Juli 2024, 18:24:57
Merci Damian, meistens ist die Lösung einfach, aber man sieht diese nicht.