FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: F.R. am 22 Mai 2016, 22:48:37

Titel: DOIF jedes n-te Mal eine Aktion ausführen
Beitrag von: F.R. am 22 Mai 2016, 22:48:37
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
Titel: Antw:DOIF jedes n-te Mal eine Aktion ausführen
Beitrag von: ht am 22 Mai 2016, 23:27:48
Hi Florian,

mir fehlt beim zweiten ReadingsVal ein "/23";)

Ich würde auch eher Modulo benutzen, also ($zahl % n) == 0.

Grüße,
Volker
Titel: Antw:DOIF jedes n-te Mal eine Aktion ausführen
Beitrag von: F.R. am 23 Mai 2016, 21:46:11
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 :-)
Titel: Antw:DOIF jedes n-te Mal eine Aktion ausführen
Beitrag von: Damian am 24 Mai 2016, 18:51:40
Angaben der Art:

ReadingsVal("zaehler","countsOverall","")

kann man eleganter in DOIF-Syntax angeben:

[?zaehler:countsOverall]

Gruß

Damian
Titel: Antw:DOIF jedes n-te Mal eine Aktion ausführen
Beitrag von: Per am 24 Mai 2016, 19:25:59
Nebenbei:
ReadingsVal("zaehler","countsOverall","")
mit "" als Defaultwert ist wg. / 23 bzw. % 23 nicht sinnvoll, 0 wäre besser.