(gelöst) notify $EVENT an 2 Set übergeben

Begonnen von Wernieman, 19 Mai 2017, 08:01:33

Vorheriges Thema - Nächstes Thema

dev0

Zitat von: Wernieman am 19 Mai 2017, 09:15:14
Ich habe es übrigens per fhemweb eingegeben. deshalb kam ich auch nicht auf die Idee, es zu verdoppeln.
Dann ist es doch klar: Eingabe via telnet und auch FHEMWEB command line benötigen escapen/verdoppeln von Semikola. Der DEF-Editor (incl. Codemirror) und die fhem.cfg benötigen es hingegen nicht.

Ich weiß noch, dass ich anfangs auch immer wieder darüber gestolpert bin. Vielleicht finde ich mal die Muße, dass als Vorschlag für das Einsteiger PDF zu formulieren...

Wernieman

Also wenn ich im Fhemweb schreibe:
mynotify set Test1 $EVENT ;; set Test2 $EVENT
Passiert beim Auslösen des Events mit Test2 gar nichts.

Also die Frage:
Ist es ein Bug oder wie wird es "richtig" Umgesetzt ist so nicht gaaans gelöst.

Mit folgendes wird wenigstens Test2 gesetzt
mynotify set Test1 $EVENT ; set Test2 $EVENT
Wenn auch auf "$EVENT" und nicht den Wert von "$EVENT"
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

marvin78

Was passiert denn, wenn du die völlig unnötigen Leerzeichen weg lässt?

Und was bedeutet, "in FHEMWEB"? Im DEF?

DeeSPe

Hab das gerade mal mit 3 dummy(s) und einem notify durchgespielt.
defmod t1 dummy
attr t1 setList on off

defmod t2 dummy
attr t2 setList on off

defmod t3 dummy
attr t3 setList on off


Hierbei kommt in state von t3 tatsächlich "$EVENT" als String an.
defmod n_t1 notify t1:on|off|toggle set t2 $EVENT;;set t3 $EVENT
Das funktioniert wie erwartet:
defmod n_t1 notify t1:on|off|toggle set t2,t3 $EVENT

Ich würde hier allerdings auch erwarten dass die erste Variante funktioniert.

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

Wernieman

Genau das ist es, was mich wundert.

Habe es hier auch mit 2 Dummies laufen. Da man eventuell zwischen den set noch andere Sachen machen möchte, nur als Simples Beispiel:
set  Test1 $EVENT; sleep 1; set Test2 $EVENT
Entweder Bug oder falsche Definition ....

P.S. Ich glaube auch, das ich den Forumsbereich "Anfänger" falsch gewählt habe, nur wo hätte ich es sonst schreiben sollen?
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

marvin78

Das notify so definiert

defmod n_t1 notify t1:(on|off|toggle) set t2 $EVENT;;set t3 $EVENT

bzw. im DEF

t1:(on|off|toggle) set t2 $EVENT;set t3 $EVENT

macht bei mir gar keine Probleme und macht genau, was es soll und genau so, wie dokumentiert.

DeeSPe

defmod n_t1 notify t1:(on|off|toggle) set t2 $EVENT;;set t3 $EVENT

Dabei wird nur auf t2 der richtige Wert gesetzt.

defmod t2 dummy
attr t2 setList on off

setstate t2 off
setstate t2 2017-05-19 14:26:02 state off

defmod t3 dummy
attr t3 setList on off

setstate t3 $EVENT
setstate t3 2017-05-19 14:26:02 state $EVENT


Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

marvin78

#22
Nun. Bei mir nicht. Es funktioniert auch mit einem sleep dazwischen.

Ich habe viele notifys, die sowas machen. Ich hätte mich längst sehr gewundert, wenn sowas nicht funktionieren würde.

P.S.: Das Regex ohne Klammer (oder sollte immer in Klammern), führt allerdings zu dem von euch beschriebenen Verhalten.

Wernieman

#23
Laut Doku ist aber doch das RegEx optional?

Edit:
Habe es getestet, auch folgendes funktioniert bei mir nicht:
mynotify:(on|off|toggle) set Test1 $EVENT ; set Test2 $EVENT


Ich bekomme wieder das Verhalten, das Test2 anschließend den Wert "$EVENT" hat ,.,
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

DeeSPe

#24
Zitat von: marvin78 am 19 Mai 2017, 14:29:14
Nun. Bei mir nicht. Es funktioniert auch mit einem sleep dazwischen.

Ich habe viele notifys, die sowas machen. Ich hätte mich längst sehr gewundert, wenn sowas nicht funktionieren würde.

P.S.: Das Regex ohne Klammer (oder sollte immer in Klammern), führt allerdings zu dem von euch beschriebenen Verhalten.

Ich habe absichtlich die Klammern in meinem letzten Versuch auch gesetzt, weil Du meintest dass die Variante bei Dir funktioniert.
Das Ergebnis war/ist das Selbe...
Auch die Leerzeichen vor/nach dem Semikolon spielen in meinen Tests keine Rolle.

EDIT: Es ist noch abgefahrender! Bei on von t1 funktioniert es auch bei t3. Bei off von t1 ist t3 wieder "$EVENT".

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

marvin78

#25
@Deespe: Ich habe sogar genau dein Beispiel kopiert (und dann mit Klammern versetzt). Bei mir klappt alles wunderbar und so wie es sein soll. Auch komplett ohne Regex im notify (Reaktion auf alle Events).

Ich habe viele notifys, bei denen genau sowas (mit einem sleep) gemacht wird. Und es gab bisher keine Probleme. Wenn es welche gäbe, müsste hier, wie ich meine, auch deutlich mehr los sein.

Edit: vielleicht helfen echt lists?

DeeSPe

Zitat von: marvin78 am 19 Mai 2017, 14:44:13
@Deespe: Ich habe sogar genau dein Beispiel kopiert (und dann mit Klammern versetzt). Bei mir klappt alles wunderbar und so wie es sein soll. Auch komplett ohne Regex im notify (Reaktion auf alle Events).

Ich habe viele notifys, bei denen genau sowas (mit einem sleep) gemacht wird. Und es gab bisher keine Probleme. Wenn es welche gäbe, müsste hier, wie ich meine, auch deutlich mehr los sein.

Edit: vielleicht helfen echt lists?

Ich kann es mir auch nicht erklären, ich schreibe nur meine Feststellungen nieder:

2017-05-19 14:46:53 dummy t2 state: on
2017-05-19 14:46:53 dummy t3 state: on
2017-05-19 14:46:53 dummy t1 state: on
2017-05-19 14:47:01 dummy t2 state: off
2017.05.19 14:47:01 3 : n_t1 return value: Unknown argument $EVENT, choose one of on off intervals on-for-timer on-till off-till on-till-overnight off-till-overnight blink toggle off-for-timer
2017-05-19 14:47:01 dummy t1 state: off


Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

marvin78

Ich behaupte ja nicht, dass du lügst. Ich behaupte aber sehr wohl, dass hier die Hölle los wäre, wenn das Verhalten generell so wäre, wie du es jetzt beobachtest.

Aber auch ich bin nun neugierig, was da falsch läuft.

DeeSPe

Zitat von: marvin78 am 19 Mai 2017, 14:51:56
Ich behaupte ja nicht, dass du lügst. Ich behaupte aber sehr wohl, dass hier die Hölle los wäre, wenn das Verhalten generell so wäre, wie du es jetzt beobachtest.

Aber auch ich bin nun neugierig, was da falsch läuft.

Sign für Beides! 8)

Hab jetzt auch nochmal den RegEx komplett entfernt und auch damit klappt nur on, off nicht.
defmod n_t1 notify t1 set t2 $EVENT;;set t3 $EVENT


2017-05-19 14:58:43 dummy t2 state: on
2017-05-19 14:58:43 dummy t3 state: on
2017-05-19 14:58:43 dummy t1 state: on
2017-05-19 14:58:48 dummy t2 state: off
2017.05.19 14:58:48 3 : n_t1 return value: Unknown argument $EVENT, choose one of on off on-till-overnight off-till-overnight intervals on-for-timer on-till off-till toggle off-for-timer blink
2017-05-19 14:58:48 dummy t1 state: off


Ich hoffe Rudi kann hier evtl. Licht ins Dunkel bringen!?

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

krikan

Zitat von: DeeSPe am 19 Mai 2017, 14:59:34
Hab jetzt auch nochmal den RegEx komplett entfernt und auch damit klappt nur on, off nicht.
defmod n_t1 notify t1 set t2 $EVENT;;set t3 $EVENT
Hattest Du vorher "shutdown restart" ausgeführt?

Ich kann Deine Beobachtung nachvollziehen, nachdem ich die "kaputte" Regex ohne Klammern benutzt hatte:
t1:on|off|toggle
Korrekturen an Regex per FHEMWEB/defmod helfen dann nicht mehr; nur ein Neustart.
Zitat
Ich hoffe Rudi kann hier evtl. Licht ins Dunkel bringen!?
Wenn er denn hier mitliest  ;)

Gruß, Christian