FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Grinsekatze am 07 Juli 2016, 08:04:45

Titel: ERLEDIGT: Notify, das auf Reading-Wert / -Änderung achtet?
Beitrag von: Grinsekatze am 07 Juli 2016, 08:04:45
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
Titel: Antw:Notify, das auf Reading-Wert / -Änderung achtet?
Beitrag von: CoolTux am 07 Juli 2016, 08:06:56
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
Titel: Antw:Notify, das auf Reading-Wert / -Änderung achtet?
Beitrag von: marvin78 am 07 Juli 2016, 08:08:18
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 &")}
Titel: Antw:Notify, das auf Reading-Wert / -Änderung achtet?
Beitrag von: Otto123 am 07 Juli 2016, 09:38:51
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
Titel: Antw:Notify, das auf Reading-Wert / -Änderung achtet?
Beitrag von: Grinsekatze am 07 Juli 2016, 11:11:03
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.
Titel: Antw:Notify, das auf Reading-Wert / -Änderung achtet?
Beitrag von: CoolTux am 07 Juli 2016, 11:32:09
Dann sollte Marvin78 sein Beispiel funktionieren.
Titel: Antw:Notify, das auf Reading-Wert / -Änderung achtet?
Beitrag 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.
Titel: Antw:Notify, das auf Reading-Wert / -Änderung achtet?
Beitrag von: marvin78 am 07 Juli 2016, 12:04:11
Wenn ich auch nach dem schauen in den Event-Monitor nicht sicher bin, wie das Event aussieht, mache ich folgendes:

DEVICE {Log 1, $EVENT}
Titel: Antw:Notify, das auf Reading-Wert / -Änderung achtet?
Beitrag von: CoolTux am 07 Juli 2016, 12:48:52
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   :)
Titel: Antw:Notify, das auf Reading-Wert / -Änderung achtet?
Beitrag von: Grinsekatze am 07 Juli 2016, 14:02:07
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!
Titel: Antw:Notify, das auf Reading-Wert / -Änderung achtet?
Beitrag von: Otto123 am 07 Juli 2016, 14:26:02
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)
Titel: Antw:Notify, das auf Reading-Wert / -Änderung achtet?
Beitrag von: Grinsekatze am 07 Juli 2016, 15:07:18
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!!!
Titel: Antw:Notify, das auf Reading-Wert / -Änderung achtet?
Beitrag von: marvin78 am 07 Juli 2016, 15:07:37
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.