Hallo,
Ich würde gerne bei jeder n- ten Betätigung eines Schalters eine Aktion ausführen. Ich habe mir überlegt, mit ein em Doif auf den Schalter zu prüfen und als zweite Bedingungen zu prüfen ob das Ergebnis des Zählers geteilt durch n eine Ganze Zahl ist. Hierzu prüfe ich
(int($zahl) eq $zahl)
Als DOIF sieht das Ganze so aus:
define zaehlervoll DOIF (([MYSENSOR_102:tripped] eq "on") and ((int(ReadingsVal("zaehler","countsOverall","")/23)) eq (ReadingsVal("zaehler","countsOverall","")))) (set telegram send Zaehler voll)
Ich bekomme keine Fehlermeldung, ohne die zweite Bedingung funktioniert es.
Hat jemand eine Idee wo mein Fehler liegt?
Oder denke ich viel zu kompliziert und das lässt sich viel einfacher realisieren?
Gruß Florian
Hi Florian,
mir fehlt beim zweiten ReadingsVal ein "/23";)
Ich würde auch eher Modulo benutzen, also ($zahl % n) == 0.
Grüße,
Volker
Hallo,
danke für den Tip, ich habe es wie vorgeschlagen mit Modulo gelöst und es funktioniert wunderbar. Ist etwas übersichtlicher als meine Idee :-)
Angaben der Art:
ReadingsVal("zaehler","countsOverall","")
kann man eleganter in DOIF-Syntax angeben:
[?zaehler:countsOverall]
Gruß
Damian
Nebenbei:
ReadingsVal("zaehler","countsOverall","")
mit "" als Defaultwert ist wg. / 23 bzw. % 23 nicht sinnvoll, 0 wäre besser.