notify soll nur auf STATE eines Devices reagieren

Begonnen von harald654, 19 Dezember 2016, 14:27:23

Vorheriges Thema - Nächstes Thema

harald654

Hallo,

ich verwende ein notify um eine Funksteckdose in Abhängigkeit von meinem Musikplayer zu schalte:
define LS_on notify SB_Wohnzmr:on set POWER_LS off

Das funktioniert an sich auch prima, nur reagiert das notify auf jede Änderung in welcher "on" vorkommt, ich hätte gerne dass das notify nur auf Änderungen von"STATE" des Devices reagiert.
Ist das möglch?

habe es schon mit:
define LS_on notify SB_Wohnzmr:STATE:on set POWER_LS off
define LS_on notify SB_Wohnzmr:STATE eg "on" set POWER_LS off

versucht, aber leider ohne Erfolg :(

Gruß,
H.

CoolTux

Auf STATE kann nicht reagiert werden, da STATE ein Internal ist und keine Events produziert. Du kannst auf state wenn dann reagieren.
Gib mal die Ausgabe im Eventmonitor wenn du on machst.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

harald654

#2
Hallo CoolTux,

achso, state gibt es auch :)
In dem Fall würde ich dann gerne auf state reagieren (Benutze das Sqeezbox plugin)

Meine Ausgabe,
ausschalten:
2016-12-19 13:57:42 IT POWER_LS on
2016-12-19 13:57:42 SB_PLAYER SB_Wohnzmr off
2016-12-19 13:57:42 SB_PLAYER SB_Wohnzmr power: off
2016-12-19 13:57:42 SB_PLAYER SB_Wohnzmr sb_name: SB_Wohnzmr
2016-12-19 13:57:42 SB_PLAYER SB_Wohnzmr FAVSTR_FTUI: DASDING_908_Euro-Hits:1LIVE_diggi_-_Multimedia_-_1LIVE_Electro
2016-12-19 13:57:42 SB_PLAYER SB_Wohnzmr playStatus: stopped
2016-12-19 13:57:42 SB_PLAYER SB_Wohnzmr sb_name: SB_Wohnzmr
2016-12-19 13:57:42 SB_PLAYER SB_Wohnzmr FAVSTR_FTUI: DASDING_908_Euro-Hits:1LIVE_diggi_-_Multimedia_-_1LIVE_Electro
2016-12-19 13:57:42 IT POWER_LS on
2016-12-19 13:57:42 SB_PLAYER SB_Wohnzmr off
2016-12-19 13:57:42 SB_PLAYER SB_Wohnzmr power: off
2016-12-19 13:57:42 SB_PLAYER SB_Wohnzmr sb_name: SB_Wohnzmr
2016-12-19 13:57:42 SB_PLAYER SB_Wohnzmr FAVSTR_FTUI: DASDING_908_Euro-Hits:1LIVE_diggi_-_Multimedia_-_1LIVE_Electro
2016-12-19 13:57:42 SB_PLAYER SB_Wohnzmr lastunknowncmd: menustatus ARRAY(0x5b72fb0) add 00:23:55:5c:29:72
2016-12-19 13:57:42 SB_PLAYER SB_Wohnzmr sb_name: SB_Wohnzmr
2016-12-19 13:57:42 SB_PLAYER SB_Wohnzmr FAVSTR_FTUI: DASDING_908_Euro-Hits:1LIVE_diggi_-_Multimedia_-_1LIVE_Electro

einschalten:
2016-12-19 14:00:43 IT POWER_LS off
2016-12-19 14:00:43 SB_PLAYER SB_Wohnzmr on
2016-12-19 14:00:43 SB_PLAYER SB_Wohnzmr power: on
2016-12-19 14:00:43 SB_PLAYER SB_Wohnzmr sb_name: SB_Wohnzmr
2016-12-19 14:00:43 SB_PLAYER SB_Wohnzmr FAVSTR_FTUI: DASDING_908_Euro-Hits:1LIVE_diggi_-_Multimedia_-_1LIVE_Electro
2016-12-19 14:00:43 IT POWER_LS off
2016-12-19 14:00:43 SB_PLAYER SB_Wohnzmr on
2016-12-19 14:00:43 SB_PLAYER SB_Wohnzmr power: on
2016-12-19 14:00:43 SB_PLAYER SB_Wohnzmr sb_name: SB_Wohnzmr
2016-12-19 14:00:43 SB_PLAYER SB_Wohnzmr FAVSTR_FTUI: DASDING_908_Euro-Hits:1LIVE_diggi_-_Multimedia_-_1LIVE_Electro
2016-12-19 14:00:43 SB_PLAYER SB_Wohnzmr lastunknowncmd: menustatus ARRAY(0x5d8e840) add 00:23:55:5c:29:72
2016-12-19 14:00:43 SB_PLAYER SB_Wohnzmr sb_name: SB_Wohnzmr
2016-12-19 14:00:43 SB_PLAYER SB_Wohnzmr FAVSTR_FTUI: DASDING_908_Euro-Hits:1LIVE_diggi_-_Multimedia_-_1LIVE_Electro

(Bei dem Device POWER_LS sind on und off vertauscht, darum das gegensätzliche ausführen )

Gruß,
H

CoolTux

Wieso nimmst du nicht das power Reading. Das scheint ja genau dafür zu sein.


define LS_on notify SB_Wohnzmr.power:.on set POWER_LS off


Hier wird dann auf power on getriggert
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

automatisierer

Laut commandref muss das Event genau deinem Suchmuster entsprechen.

Die Aussage, dass das notify bei allem triggert was 'on' enthält, kann also nicht passen.

Ich tippe mal, dass die Events in regelmäßigen Abständen wiederholt werden und dein Notify dann immer wieder triggert.


CoolTux

Stimmt das wäre auch eine Möglichkeit. Hier kann ein event-on-change-reading helfen.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

harald654

define LS_on notify SB_Wohnzmr.power:.on set POWER_LS off
scheint zu funktionieren, falls es doch nochmal vorkommt werd ich event-on-change-reading mal ausprobieren :)

Vielen Dank für die Hilfe.

harald654

#7
Ich bins nochmal :)

leider passt es doch noch nicht so ganz. Solange der state on ist wird alle 30sek versucht meine Steckdose einzuschalten:
2016.12.19 19:10:17 2: sduino IT_set: POWER_LS off
2016.12.19 19:10:57 2: sduino IT_set: POWER_LS off
2016.12.19 19:13:55 2: sduino IT_set: POWER_LS off
2016.12.19 19:14:31 2: sduino IT_set: POWER_LS off
2016.12.19 19:15:35 2: sduino IT_set: POWER_LS off
2016.12.19 19:16:38 2: sduino IT_set: POWER_LS off
2016.12.19 19:17:40 2: sduino IT_set: POWER_LS off
2016.12.19 19:18:43 2: sduino IT_set: POWER_LS off
2016.12.19 19:19:31 2: sduino IT_set: POWER_LS off


Ich denke damit es nur bei einer Änderung von state schaltet brauch ich wohl das event-on-change-reading.
Nur ist mir nicht ganz klar wie ich dies einsetzen muss.
Wenn ich es bei dem notify hinzufüge verändert sich nichts:
define LS_on notify SB_Wohnzmr.power:.on set POWER_LS off
attr LS_on event-on-change-reading state
define LS_off notify SB_Wohnzmr.power:.off set POWER_LS on
attr LS_off event-on-change-reading state


Wenn ich es bei meinem Divice(Sqeez-Player) hinzufüge auf welchem das notify reagiert funktioniert es, aber es werden keine Änderungen des Players mehr auf der Tablet UI Oberfläche übernommen/angezeigt:
define SB_Wohnzmr SB_PLAYER 00:23:55:5c:29:72
attr SB_Wohnzmr IODev SqueezeBoxServer
attr SB_Wohnzmr amplifier play
attr SB_Wohnzmr coverartheight 100
attr SB_Wohnzmr coverartwidth 100
attr SB_Wohnzmr donotnotify false
attr SB_Wohnzmr fadeinsecs 10
attr SB_Wohnzmr idismac true
attr SB_Wohnzmr room SB_PLAYER
attr SB_Wohnzmr serverautoon true
attr SB_Wohnzmr ttslanguage de-de
attr SB_Wohnzmr ttslink http://translate.google.com/translate_tts?ie=UTF-8&tl=<LANG>&q=<TEXT>&client=tw-ob
attr SB_Wohnzmr userReadings sb_name {"SB_Wohnzmr"}, FAVSTR_FTUI {my $t=InternalVal($name,'FAVSTR','');;$t=~s/,/:/g;;return($t)}
attr SB_Wohnzmr volumeLimit 100
attr SB_Wohnzmr volumeStep 3
attr SB_Wohnzmr event-on-change-reading state

:-\

CoolTux

Es kommt nicht zum notify sondern zum Devices welches die Events liefert. Also Dein Wohnzimm dingsda


event-on-change-reading .*


zusätzlich kannst noch im Notify anhängen

set POWER_LS:FILTER=state!=off off
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

automatisierer


harald654

#10
Danke CoolTux,

mit:
event-on-change-reading .*
wird das schalten der Steckdose nur 1 mal gesendet und die Aktualisierung in Tablet UI geht trozdem noch, perfekt :)

svenson08

#11
Hallo ,

ZitatDu kannst auf state wenn dann reagieren.

trotzdem funktioniert ein Notify auf das Reading "state" im default nicht

define irgendwas:state:.* mach was

und das obwohl es im FHEM Web über den Wizard angeboten wird.

Falls das notify auf state reagieren soll, muss man addStateEvent ergänzen. Siehe
http://fhem.de/commandref_DE.html#DOIF_addStateEvent



Gruß
svenson

CoolTux

Das ist richtig. Genau wissen tue ich es nicht daher kann ich nur aus meiner Beobachtung berichten.
Ein Event mit einem Reading sieht so aus

Device Reading: Value

Ein Event von einem state so

Device Value

Da man aber dann die Regex sehr exakt setzen muss und nach Möglichkeit ohne Wildcard ist das etwas knifflig.
Aber wie gesagt ich weiß es nicht. Es ist eine Beobachtung.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

svenson08

Man muss im Notify das Attribut addStateEvent auf 1 setzen.
Dann kann man das Notify wie vom Wizard angeboten auf z.B.

define testnotify irgendwas:state:.* mach was

setzen. Läuft bei mir so.