Lampe nur einschalten wenn sie aus ist / notify mit Eltako und Taster

Begonnen von TobiWahn, 28 August 2015, 12:30:34

Vorheriges Thema - Nächstes Thema

TobiWahn

Ich habe eine fhem-Umgebung mit I2C-Ansteuerung von PCF8574 Modulen die Eltako-Stromstoßschalter ansteuern. Außerdem werden die Zustände der verkabelten Lampen über Koppelrelais an PCF8574 Modulen zurückgegeben. Aufgrund dieser Konstellation kann ich die Lampen nur mit einem Impuls schalten. Dabei hilft readingsProxy ja sehr schön. Außerdem schalte ich die Eltakomodule unabhängig von fhem direkt per Wandtaster.

Statusmeldung der Lampen:
define prxPortC3 readingsProxy I2C_IN2:Port3
attr prxPortC3 alias Licht Wohnzimmer 2
attr prxPortC3 group Licht
attr prxPortC3 icon light_light
attr prxPortC3 room Wohnzimmer
attr prxPortC3 valueFn {($VALUE eq "on")?"off":"on"}


Schalten der Lampen über Web:
define prxPortD3 readingsProxy I2C_OUT2:Port3
attr prxPortD3 alias Taster Wohnzimmer 2
attr prxPortD3 devStateIcon on:general_an off:general_aus
attr prxPortD3 eventMap /on-for-timer 0.5:tasten/  /on-for-timer 3:50%/ /on-for-timer 6:100%/
attr prxPortD3 group Taster
attr prxPortD3 icon taster
attr prxPortD3 room Wohnzimmer
attr prxPortD3 setFn {($CMD eq "on")?"Port3 off":"Port3 on"}
attr prxPortD3 setList on off
attr prxPortD3 valueFn {$LASTCMD}
attr prxPortD3 webCmd tasten:50%:100%


Mein Problem habe ich mit der Verwendung eines notify im Zusammenhang mit Kodi. Ich möchte eine Lampe einschalten wenn bestimmte Bedingungen erfüllt sind, z.B. es ist dunkel, Kodi spielt einen Film ab und das Licht ist aus. das Licht muss ich deshalb abfragen, weil es bereits an sein könnte und ich mit dem tasten-Befehl es wieder aus machen würde.

das Kodi-notify (mit ein paar auskommentierungen für später):
define notify_KODI_status notify wz_KODI:playStatus.* { \
if (ReadingsVal("wz_KODI", "type", "") eq "movie") {\
if (ReadingsVal("wz_KODI", "playStatus", "") eq "playing") {\
if (ReadingsVal("prxPortC3", "state", 0) eq "off") {\
#if (FmtTime(time()) > ReadingsVal("Twilight","ss_indoor","18:00:00") ) {\
fhem("set prxPortD3 tasten");;;;\
    fhem("set wz_KODI msg 'fhem' 'Kino-Einstellunen werden vorbereitet!' 5000 info");;;;\
#    fhem("set HM_194956 pct 0");;;;\
#    fhem("set HM_194932 pct 0");;;;\
fhem("set ELRO_0FF00_C on");;;;\
                }\
                }}}
attr notify_KODI_status room Wohnzimmer


Das Problem ist jetzt, dass nach der Aktualisierung des state von prxPortC3 das Licht wieder ausgeht. Vermutlich weil die Bedingungen nicht mehr stimmen und notify dauerhaft überwacht. Hat jemand eine Idee wie ich das lösen kann?

So, mein erster Post nach vielen Monaten lesen im Forum - hoffe es ist brauchbar  ;)

rudolfkoenig

Notify ueberwacht nicht "dauernd", sondern reagiert auf Events.
Ich empfehle das Event-Monitor zu beobachten, und das notify entsprechend anzupassen.
Eventuell benoetigt man die event-on-* Attribute.