ERLEDIGT: Notify, das auf Reading-Wert / -Änderung achtet?

Begonnen von Grinsekatze, 07 Juli 2016, 08:04:45

Vorheriges Thema - Nächstes Thema

Grinsekatze

Hallo,

ich bin zzt. auf der Suche nach einer Möglichkeit, ein Notify umzusetzen, dass auf Änderungen eines Readings reagiert. Leider fehlt mir dafür die passende Bedingung - ich bekomme immer nur ein Notify hin, welches auf den STATE achtet.

Zu meinem Code:

Ich habe ein Fernseher definiert:
define FernseherWohnzimmer LGTV_RS232 /dev/ttyUSB0
attr FernseherWohnzimmer event-on-change-reading .*
attr FernseherWohnzimmer event-min-interval 60
attr FernseherWohnzimmer room Wohnzimmer
attr FernseherWohnzimmer comment LG 55 Zoll TV im Wohnzimmer
attr FernseherWohnzimmer webCmd power


Und möchte nun mit einem Notify darauf reagieren, wenn power on gesetzt wurde (im Event Monitor ist das Kommando LGTV_RS232 FernseherWohnzimmer power on).
Mein Notify sieht zzt. so aus:
define Notify_FernseherWohnzimmerOn notify FernseherWohnzimmer:power:on {system("echo 'on 0' | sudo /usr/osmc/bin/cec-client -s -d 1 &")}

Das geht aber nicht.

Habt ihr ein Tipp?

Danke

CoolTux

#1
Ausschlaggebend für die Syntax eines Notify ist immer das entsprechende Event. Wie sieht das Event aus?

Eventuell kann es so gehen

define Notify_FernseherWohnzimmerOn notify FernseherWohnzimmer:power:.on {system("echo 'on 0' | sudo /usr/osmc/bin/cec-client -s -d 1 &")}


Ich empfehle das Einsteiger PDF zu lesen. Gerade der Bereich Notify ist gut dokumentiert und erklärend.


Grüße
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

marvin78

Merke: immer ein list posten, nicht die Definition

Die Doku zu notify ist eigentlich recht eindeutig. Die Frage hier ist, was du versucht hast, um an das Event deines Readings zu kommen. Hast du in den Eventmonitor geschaut, wie das Event aussieht? Da ich das nicht weiß, kann man nur ins blaue raten:

define Notify_FernseherWohnzimmerOn notify FernseherWohnzimmer:.power.on {system("echo 'on 0' | sudo /usr/osmc/bin/cec-client -s -d 1 &")}

Otto123

Zitat von: Grinsekatze am 07 Juli 2016, 08:04:45
Das geht aber nicht.

Habt ihr ein Tipp?
Du könntest auch noch ermitteln was nicht geht!?
startet das notify nicht?
Funktioniert denn der Befehl "{system("echo 'on 0' | sudo /usr/osmc/bin/cec-client -s -d 1 &")}" an sich? Getestet? Wie?

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Grinsekatze

#4
Ich versuche gerade meine TV-Steuerung zu optimieren. Dabei kam mi der Gedanke, dass ich meinen extra Dummy, der den Fernseher (mithilfe zweier Notifys) nur ein- und ausschaltet womöglich in das Hauptmodul mit integriert werden kann.

Grund für den Dummy ist, dass mein Fernseher nicht über das Modul eingeschaltet werden kann. Das geht nur Mittels CEC.

Das CEC-Kommando funktioniert.

Im Modul sind die Ein- bzw. Ausschaltanweisungen set Fernseher power on bzw. set Fernseher power off. Nun wollte ich für Power on ein Notify zusammenbauen, dass reagiert, wenn dieser Befehl gesendet wird und dann den CEC-Befehl auslöst.

Mir ist aber eben noch aufgefallen, dass in den Readings power immer on ist - zumindest solange der Stecker in der Steckdose ist. Daher kann ich mit dem Notify wohl keine Reading-Änderung abfangen, sondern muss wirklich den Befehl abgreifen.

Leider bin ich noch recht neu in der Materie und habe daher immer mal wieder Startschwierigkeiten.

Edit:
Wenn ich den Fernseher schalte, dann habe ich keinen Eintrag im Logfile und im Eventmonitor steht: 2016-07-07 11:12:14 LGTV_RS232 FernseherWohnzimmer power on
Äquivalent ist der off-Befehl.

CoolTux

Dann sollte Marvin78 sein Beispiel funktionieren.
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

Otto123

@CoolTux Warum war dann Dein Vorschlag "power:.on"  ??? Also ich würde es gerne verstehen wann dort noch ein ":" stehen darf und wann nicht.

Man kann das gut durchspielen wenn man sich ein Test notify macht und mit dem trigger Befehl spielt (Habe ich gerade mal gemacht) Da sieht man welches regEx auf die Zeichenkette "power on" triggert und welches nicht.
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

marvin78

Wenn ich auch nach dem schauen in den Event-Monitor nicht sicher bin, wie das Event aussieht, mache ich folgendes:

DEVICE {Log 1, $EVENT}

CoolTux

Zitat von: Otto123 am 07 Juli 2016, 11:59:37
@CoolTux Warum war dann Dein Vorschlag "power:.on"  ??? Also ich würde es gerne verstehen wann dort noch ein ":" stehen darf und wann nicht.

Man kann das gut durchspielen wenn man sich ein Test notify macht und mit dem trigger Befehl spielt (Habe ich gerade mal gemacht) Da sieht man welches regEx auf die Zeichenkette "power on" triggert und welches nicht.

War ein Blindflug. Da wusste ich noch nicht wie sein Event aus sieht. War so aus meinem Leben gegriffen   :)
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

Grinsekatze

Ich glaub ich bin dazu zu blöd.  :o

Ich habe nun mal zum testen 2 Dummys und ein Notify gezimmert:
define D_test2 dummy
attr D_test2 room test

define D_test dummy
attr D_test room test
attr D_test setList power:on,off

define N_test notify D_test:.power.on set D_test2 on


Doch wird D_test2 nicht auf on geschaltet.

Ich habe auch im Notify mit den Punkten und Doppelpunkten gespielt. Doch wenn immer ich trigger N_test D_test power on ausführe, passiert nichts weiter.

@marvin78:
Wo gebe ich denn deinen Befehl ein (DEVICE {Log 1, $EVENT})? Ich hab's in der Kommandozeile des WebIf probiert, doch da gehört es offenbar nicht hin  :D

Danke für eure schnelle Hilfe!

Otto123

Internals:
   CFGFN
   DEF        nty_Test3:power.on set SD3 on-for-timer 1
   NAME       nty_Test3
   NOTIFYDEV  nty_Test3
   NR         2017
   NTFY_ORDER 50-nty_Test3
   REGEXP     nty_Test3:power.on
   STATE      2016-07-07 11:54:46
   TYPE       notify
   Readings:
     2016-07-07 11:54:36   state           active
Attributes:
   room       Test


Das ist mein Test notify, wenn ich dann trigger nty_Test3 power on eingebe, geht meine SD3 für eine Sekunde an.  8)
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Grinsekatze

Vielen Dank - das war glaub ich so ziemlich die einzige Kombination, die ich nicht getestet habe.

Nun klappt es!  ;D

Flls es Jemandem hilft:
define FernseherWohnzimmer LGTV_RS232 /dev/ttyUSB0
attr FernseherWohnzimmer comment LG 55 Zoll TV im Wohnzimmer
attr FernseherWohnzimmer event-on-change-reading .*
attr FernseherWohnzimmer room Wohnzimmer
attr FernseherWohnzimmer webCmd power
attr FernseherWohnzimmer event-min-interval 60

define Notify_FernseherWohnzimmerOn notify FernseherWohnzimmer:power.on {system("echo 'on 0' | sudo /usr/osmc/bin/cec-client -s -d 1 &")}


Nun muss ich nur noch den webCmd etwas schöner machtn, sodass ich keine Dropdown-Liste, sondern on und off stehend habe. Aber das kommt zum Schluss, wenn alles fertig ist.

Danke euch allen noch einmal für eure Unterstützung!!!

marvin78

Zitat von: Grinsekatze am 07 Juli 2016, 14:02:07


@marvin78:
Wo gebe ich denn deinen Befehl ein (DEVICE {Log 1, $EVENT})? Ich hab's in der Kommandozeile des WebIf probiert, doch da gehört es offenbar nicht hin  :D


Das ist natürlich der DEF Bereich eines notifys auf DEVICE.