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.
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.
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
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
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.
Stimmt das wäre auch eine Möglichkeit. Hier kann ein event-on-change-reading helfen.
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.
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
:-\
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
oder zu DOIF wechseln... 8)
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 :)
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 (http://fhem.de/commandref_DE.html#DOIF_addStateEvent)
Gruß
svenson
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.
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.