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?
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)
Merci Damian, meistens ist die Lösung einfach, aber man sieht diese nicht.