Hallo,
ich habe ein notify, welches 2 Schalter schalten soll:
Das Dev sieht wie folgt aus:
mynotify set Test1 $EVENT ; set Test2 $EVENT
Wenn ich dieses so aber "trickern" lasse, hat Test2 nicht den Wert des Inhaltes von $EVENT, sondern den Wert "$EVENT". Eigentlich sollte man doch $EVENT an mehrere Device übergeben könne ... oder?
so gehts:
mynotify set Test1,Test2 $EVENT
Stimmt ... aber eigentlich sollte doch obiges auch gehen? Denn ansonsten würde z.B. folgendes nicht mehr realisierbar sein:
mynotify set Test1 $EVENT ; sleep 1 ; set Test2 $EVENT
Du mußt die Semikola verdoppelt, dann geht es. Zumindest, wenn Du die Befehle per Telnet eingibt.
Habe es per "Notify-Editor" eingegeben. Sollte der nicht maskieren? Ansonsten .. danke :o)
In commandref/notify ist es auch so beschrieben:
Zitat
define b3lampV3 notify btn3 set lamp1 $EVENT;;set lamp2 $EVENT
Danke ... muß scheinbar die Doku (mal wieder) lesen :D
Denk dran dass die Weitergabe des ganzen $EVENT nur funktioniert bei on/off/toggle, also allen Befehlen die kein Reading enthalten, denn sonst enthält $EVENT ja noch den Doppelpunkt, z.B. $EVENT für rgb:
rgb: XXXXXX
Zitat von: dev0 am 19 Mai 2017, 08:18:36
In commandref/notify ist es auch so beschrieben:
Das gilt aber nur für's define und nicht für modify in FHEMWEB.
Gruß
Dan
ZitatDas gilt aber nur für's define und nicht für modify in FHEMWEB.
Sorry, aber was meinst Du jetzt damit?
Zitat von: Wernieman am 19 Mai 2017, 08:26:10
Sorry, aber was meinst Du jetzt damit?
Wenn Du das define oben in der FHEM Eingabezeile
oder in der fhem.cfg machst, müssen die Semikolon verdoppelt werden. Über Klick auf DEF und dann "modify ....." in FHEMWEB werden die Semikolon automatisch verdoppelt.
Gruß
Dan
Zitat von: DeeSPe am 19 Mai 2017, 08:28:33
in FHEMWEB werden die Semikolon automatisch verdoppelt.
Ist das vielleicht Wernieman's Problem? Denn sie müssen ja "nicht wirklich" verdoppelt werden.
Wenn ich das per telnet (oder FHEMWEB command line?) eingebe, dann müssen sie verdoppelt werden, damit sie einfach in der fhem.cfg/im Device ankommen.
defmod nx notify dx1 set dx2 $EVENT;; sleep 1;;set dx3 $EVENT
list nx
Internals:
.COMMAND set dx2 $EVENT; sleep 1;set dx3 $EVENT
CFGFN
DEF dx1 set dx2 $EVENT; sleep 1;set dx3 $EVENT
NAME nx
NOTIFYDEV dx1
NR 42411
NTFY_ORDER 50-nx
REGEXP dx1
STATE active
TYPE notify
Readings:
2017-05-19 08:35:26 state active
Attributes:
Ich habe es übrigens per fhemweb eingegeben. deshalb kam ich auch nicht auf die Idee, es zu verdoppeln.
Mache es mir mittlerweile "einfach", lege per Eingabe ein simples notify an und mache anschließend alle nachkonfig per eingebautem Editor ......
Wäre dann gelöst, oder? Dann bitte entsprechend kennzeichnen (Subject des ersten Posts anpassen)
Naja ..so gaaans ist es doch nicht geklährt .. oder?
Zitat von: Wernieman am 19 Mai 2017, 10:34:18
Naja ..so gaaans ist es doch nicht geklährt .. oder?
Das kannst nur Du beantworten. ;)
Wo ist denn noch ein Problem deinerseits?
Gruß
Dan
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...
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"
Was passiert denn, wenn du die völlig unnötigen Leerzeichen weg lässt?
Und was bedeutet, "in FHEMWEB"? Im DEF?
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
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?
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.
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
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.
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 ,.,
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
@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?
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
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.
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
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
Gerade nochmal alles z.H. getestet und kann ich so bestätigen.
Mit Klammern um den RegEx funktioniert es, ohne nicht. Brauchte auch nicht mal einen FHEM Neustart!
Der einzige gravierende Unterschied der mir zu der anderen Testumgebung auffällt ist configDB, welches ich hier z.H. nicht benutze. Möchte jetzt nicht Bestimmtheit sagen dass es daran liegen kann.
Gruß
Dan
EDIT: Auch ohne den RegEx klappt es bei mir z.H. mit $EVENT für on und off.
Mein System hat kein configDB ... also daran sollte es nicht liegen ....
Sorry fürs pumpen, aber wie gehen wir jetzt weiter vor?
Da nicht nur ich das "Problem" habe ...
Ich würde vorschlagen, du formulierst das Problem zusammenfassend nochmal neu und postest es in "Automatisierung", da liest Rudi mit. In diesem Post verweist du auf den neuen Post und im neuen Post kannst du diesen als Referenz angeben.
Mercy ... und wird von mir so gemacht :D
Siehe: https://forum.fhem.de/index.php/topic,72231.0.html (https://forum.fhem.de/index.php/topic,72231.0.html)
Edit
Problem wurde als FHEM Problem/Bug erkannt und gelöst. Siehe Link