FHEM Forum

FHEM => Automatisierung => Thema gestartet von: michael1966 am 08 Mai 2017, 14:41:40

Titel: [gelöst] Kodi playStatus
Beitrag von: michael1966 am 08 Mai 2017, 14:41:40
Hallo miteinander,

ich verwende momentan ein DOIF, um mittels Kodi playStatus ein Licht zu steuern.

Das DOIF sieht so aus:

define DI_kodilichtsteuerung DOIF \
([kodi:playStatus] eq "playing") \
(set WZ1 off) \
DOELSEIF \
([kodi:playStatus] eq "paused" or [kodi:playStatus] eq "stopped") \
(set WZ1 on)

Der Event (set WZ1) tritt da immer nur nach einer Änderung des playStatus ein, also beim Wechsel von Play auf Pause z.B. (so ist es gut).

Ich möchte jetzt die Lichtsteuerung in die myUtils.pm verlegen, was mir sympathischer ist, weil ich dann nicht so viel Gemixe fhem / Perl Code habe.

also ein notify angelegt:

define notify_KODI_Licht notify kodi:playStatus.* { KodiLicht() }

welches in der myUtils.pm dann die Funktion KodiLicht() aufruft.

Funktioniert auch, aber:
ES WIRD ALLE 60 SEKUNDEN (oder wie in attr kodi updateInterval festgelegt) EIN EVENT ERZEUGT (also die Perl-Funktion aufgerufen), wenn Kodi eine Zeit lang auf Play oder Pause ist. Bei Kodi auf Stop dann glücklicherweise nicht mehr.

Ich möchte haben, dass nur beim Wechsel des playStates die Perl-Funktion aufgerufen wird (also nur dann, wenn man z.B. von Play auf Pause schaltet, und nicht automatisch alle 60 Sec, wenn man einen Film auf play schaut), also das Verhalten so haben wie bei der DOIF Variante.

Weiss jemand da was dazu, wie man das Verhalten des DOIFs in dem Notify nachbilden kann?
Evtl. beim notify nicht * definieren, sondern den gewünschten playStatus ?
Habe ich aber nicht rausbekommen, wie die Schreibweise dann sein müsste, statt kodi:playStatus.* .


Gruß

Michl






Titel: Antw:Kodi playStatus
Beitrag von: MadMax-FHEM am 09 Mai 2017, 00:07:57
Hi Michi,

wenn mehrmals "playing" kommt, hilft eine Eingrenzung des regex beim notify nicht, da du ja "playing" haben willst aber halt nicht mehrfach ohne, dass dazwischen ein anderer Status war.

Schon mal mit
attr kodi event-on-change-reading .*
oder
attr kodi event-on-change-reading playStatus

Dann sollte nur noch ein Event kommen, wenn der Zustand/Reading playStatus wechselt...

Gruß, Joachim
Titel: Antw:Kodi playStatus
Beitrag von: michael1966 am 09 Mai 2017, 12:02:56
Hallo Joachim,

danke für den Tip, funktioniert wie gewünscht!


Gruß

Michl


Titel: Antw:Kodi playStatus
Beitrag von: MadMax-FHEM am 09 Mai 2017, 18:39:59
Hallo Michl,

freut mich!

Evtl. den Thread als gelöst "kennzeichnen", z.B. umbenennen in "[gelöst] Kodi playStatus"

Viel Spaß noch, Joachim