FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: pulmotil am 31 August 2017, 12:19:24

Titel: Mehrfaches defmod
Beitrag von: pulmotil am 31 August 2017, 12:19:24
Hallo, ist es möglich defmod merfach mit dem gleichen Objekt zu definieren?

Derzeit habe ich folgendes Konstrukt:
define WZ.Licht_an_BM notify WZ.Bewegungsmelder:motion {\
if (ReadingsVal("WZ.Bewegungsmelder","brightness",100) < 40 && Value("Harmonie") eq "off") \
  {\
    fhem("set WZ.Licht command PowerOn ;; defmod WZ.Licht_aus_BM at +00:02:00 set WZ.Licht command PowerOff");;\
  }\
}
define WZ.Licht_an_Harmony notify Harmonie:on {\
if (ReadingsVal("WZ.Bewegungsmelder","brightness",100) < 40) \
  {\
    fhem("set WZ.Licht command PowerOn");;\
  }\
}
define WZ.Licht_aus_Harmony notify Harmonie:off \
  {\
    fhem("defmod WZ.Licht_aus_Harmonie at +00:02:00 set WZ.Licht command PowerOff");;\
  }


Wenn eine Bewegung erkannt wird und es dunkel ist und die Harmony aus ist, soll das Licht eingeschaltet werden und nach 2 min wieder ausgeschaltet werden.
Wenn die Harmony eingeschaltet wird und es dunkel ist, soll das Licht eingeschaltet werden.
Wenn die Harmony ausgeschaltet wird, soll nach 2 Minuten das Licht ausgeschaltet werden.

Da sind derzeit 2 defmods für das Ausschalten mit unterschiedlichen Namen definiert, die sich gegenseitig beeinflussen:
Wenn ich mich z.B. bewege und dann nach 1,5 min den Fernseher ausschalte, dann geht schon 0,5 min nach dem Ausschalten des Fernsehers das Licht aus.
Oder umgekehrt, wenn ich den Fernseher ausschalte und mich dann nach 1,5 min bewege, dann geht schon 0,5 min nach der Bewegung das Licht aus.
Das soll so nicht sein.

Die Idee ist jetzt, beide defmods gleich zu definieren:
defmod WZ.Licht_aus at +00:02:00 set WZ.Licht command PowerOff
Geht das?

Oder gibt es generell eine schönere Lösung für diese Aufgabenstellung?

Gruss p
Titel: Antw:Mehrfaches defmod
Beitrag von: amenomade am 31 August 2017, 20:11:35
Du könntest set <atname> modifyTimeSpec nutzen.
Ansonsten würde ich empfehlen alles in einem einziges DOIF zu packen, und dessen Attribute "wait" nutzen.