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

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

Vorheriges Thema - Nächstes Thema

Wernieman

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?
- 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

Jamo

#1
so gehts:
mynotify set Test1,Test2 $EVENT
Bullseye auf iNUC, Homematic + HMIP(UART/HMUSB), Debmatic, HUEBridge, Zigbee/ConbeeII, FB, Alexa (fhem-lazy), Livetracking, LaCrosse JeeLink, LoRaWan / TTN / Chirpstack

Wernieman

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
- 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

dev0

#3
Du mußt die Semikola verdoppelt, dann geht es. Zumindest, wenn Du die Befehle per Telnet eingibt.

Wernieman

Habe es per "Notify-Editor" eingegeben. Sollte der nicht maskieren? Ansonsten .. danke :o)
- 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

dev0

In commandref/notify ist es auch so beschrieben:
Zitat
define b3lampV3 notify btn3 set lamp1 $EVENT;;set lamp2 $EVENT

Wernieman

Danke ... muß scheinbar die Doku (mal wieder) lesen  :D
- 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

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
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

ZitatDas gilt aber nur für's define und nicht für modify in FHEMWEB.
Sorry, aber was meinst Du jetzt damit?
- 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

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
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

dev0

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:


Wernieman

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 ......
- 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

KernSani

Wäre dann gelöst, oder? Dann bitte entsprechend kennzeichnen (Subject des ersten Posts anpassen)
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

Wernieman

Naja ..so gaaans ist es doch nicht geklährt .. oder?
- 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

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
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

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

DeeSPe

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.
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

Mein System hat kein configDB ... also daran sollte es nicht liegen ....
- 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

Wernieman

Sorry fürs pumpen, aber wie gehen wir jetzt weiter vor?

Da nicht nur ich das "Problem" habe ...
- 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

KernSani

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.
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

Wernieman

#34
Mercy ... und wird von mir so gemacht  :D

Siehe: https://forum.fhem.de/index.php/topic,72231.0.html

Edit
Problem wurde als FHEM Problem/Bug erkannt und gelöst. Siehe Link
- 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