Hauptmenü

selftrigger

Begonnen von doman75, 07 Februar 2019, 15:06:49

Vorheriges Thema - Nächstes Thema

Ellert

Zitat von: doman75 am 26 Februar 2019, 18:45:25
Ein loop ist das nicht cmd1 wird ja nicht wieder angetriggert.
Das hast Du richtig verstanden.

doman75

Zitat von: doman75 am 08 Februar 2019, 08:01:10
ich habe jetzt beim wait attr mal 0,10:10 gesetzt um cmd2 zu verzögern aber das greift gar nicht. Ist die Syntax falsch?

und warum funkioniert das mit dem wait nicht?

RAW Definition DOIF

defmod TEST DOIF ([$Self] eq "on") (set DummyTest on) (set TEST off)\
DOELSEIF\
([$Self] eq "off") (set DummyTest off)\
\

attr TEST cmdState on|off
attr TEST eventMap on:An off:Aus
attr TEST loglevel 6
attr TEST room VatiTest
attr TEST setList on off
attr TEST verbose 5
attr TEST wait 0,10:10

setstate TEST An
setstate TEST 2019-02-08 08:48:48 .eM off
setstate TEST 2019-02-27 13:23:10 cmd 1.2
setstate TEST 2019-02-27 13:23:10 cmd_event set_on_cmd_1
setstate TEST 2019-02-27 13:23:10 cmd_nr 1
setstate TEST 2019-02-27 13:23:10 cmd_seqnr 2
setstate TEST 2019-02-07 15:02:45 mode enabled
setstate TEST 2019-02-27 13:23:10 state on
setstate TEST 2019-02-27 13:23:10 wait_timer no timer


RAW Definition Dummy
Zitat
defmod DummyTest dummy
attr DummyTest event-min-interval .*:60
attr DummyTest event-on-update-reading .*
attr DummyTest room VatiTest
attr DummyTest setList on off

setstate DummyTest off
setstate DummyTest 2019-02-27 13:23:10 state off

tomspatz

ZitatNaja... Eigentlich hast Du Recht, es sollte genau $SELF sein. Die Bedingungen mit $Self würden wahrscheinlich nie triggern. Aber er druckt auf den Knöpfe An oder Aus in der WebUI, um die jeweilige Zweige zu starten. Führt zum gleichen Ergebnis

hmmmm das meinte ich schon ernst  :( gibt es einen Unterschied zwischen $SELF und $Self außer der Schreibweise.
LG
Tom

doman75

Zitat von: tomspatz am 27 Februar 2019, 13:57:20
hmmmm das meinte ich schon ernst  :( gibt es einen Unterschied zwischen $SELF und $Self außer der Schreibweise.
LG
Tom

ich habe es mal in meinem oben geposteten dummy so und so geschrieben das verhalten bleibt das gleiche

amenomade

#19
Zitat von: doman75 am 27 Februar 2019, 13:25:38
und warum funkioniert das mit dem wait nicht?

Das wait funktioniert:
Zitat2019-02-08 07:55:41.228 DOIF TEST wait_timer: 08.02.2019 07:55:51 cmd_1_2 set_on_cmd_1
2019-02-08 07:55:51.230 DOIF TEST wait_timer: no timer

Zwischen 07:55:41 und 07:55:51 sind es genau 10 Sekunden (ok, minus 2 ms)


Also bisher tut das DOIF was er soll.

In Perl ist übrigens die Schreibweise wichtig. $SELF und $Self sind 2 total unterschiedliche Variablen. $SELF != $Self
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

doman75

#20
Aber bei cmd2 die 10 Sekunden greifen nicht, also die 10 nach dem doppelpunkt

amenomade

Wenn Du auf dem Knopf "Aus" druckst sagst Du dem DOIF "führe Zweig 2 sofort aus". Es gibt kein "Trigger", der nach 10 Sek vom Befehl verfolgt werden soll.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

doman75

Wieso funktionieren dann die 10 Sekunden im cmd1_2. Da klicke ich doch auch auf in. Was ist der Unterschied zwischen den on klick und den off klick?

amenomade

#23
Zitat von: doman75 am 27 Februar 2019, 20:06:26
Wieso funktionieren dann die 10 Sekunden im cmd1_2. Da klicke ich doch auch auf in. Was ist der Unterschied zwischen den on klick und den off klick?
Weil er zwischen 2 Befehle ist.
Hättest Du
Zitatwait 8,10:12
, würde die 8 nicht funktionieren (1.1  würde sofort schalten), die 10 aber doch (1.2 würde 10 Sek nach 1.1 schalten)
Der erste wait ist zwischen Trigger und Befehl. Da hast Du aber kein echtes Trigger: dein DOIF macht nicht etwas, weil er getriggert wurde, sondern weil Du auf "An" oder "Aus" klickst.
Der zweite wait ist zwischen Befehl und Befehl.

Dein DOIF triggert nie. Er führt nur die Befehle aus, weil Du klickst. Dein DOIF würde genau gleich funktionieren, wenn Du es so schreiben würdest:
([ABX] eq "on")
   (set DummyTest on) (set TEST off)
DOELSEIF
([8A27XY] eq "off")
   (set DummyTest off)

oder (1)
   (set DummyTest on) (set TEST off)
DOELSEIF
(1)
   (set DummyTest off)

Deswegen war es egal, ob $Self oder $SELF. $nix oder $lol hätte das gleiche gemacht


Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Per

Setz doch einen Dummy-Befehl dazwischen
()(Cmd1)(Cmd2)
wait 0,10,10