Achtung, kompliziert: Zustand eines dummys schalten und schalten lassen

Begonnen von Dodger, 26 Dezember 2021, 17:40:24

Vorheriges Thema - Nächstes Thema

Dodger

Hallo,

ich habe eine etwas kompliziertere Frage (oder vielleicht mach ich mir es auch einfach kompliziert...):
folgende Voraussetzungen:
Ich habe drei Entertainment Geräte, welche ich auf Knopfdruck einschalten und konfigurieren möchte.
Dazu habe ich zunächst ein dummy als Schalter angelegt.
Diesem Dummy habe ich dann über defStateIcon ein passendes Icon zugeteilt, welches den Zustand anzeigt (on/off).
Dann habe ich mir ein notify angelegt, welches durch den Dummy getriggert wird.
In diesem notify werden die Geräte dann eingeschaltet und konfiguriert.
Wenn ich nun also das icon des Dummys klicke, dann wird das notify ausgelöst und die Geräte gehen an. Der Zutand des Icon wechselt auf "on".

Jetzt gibt es aber leider auch den Zustand, dass die Geräte mit der jeweiligen Fernbedienung eingeschaltet werden.

Was ich nun möchte:
der Dummy soll bitte auch den Zustand "on" bekommen, wenn alle Geräte manuell (sprich über die Fernbedienung) eingeschaltet wurden.

Wie kann man so etwas am geschicktesten realisieren?

Gruß
Dodger

Otto123

Hi,

wenn Du statt dessen einfach eine structure nimmst? Ich denke die macht was Du willst.

Schöne Feiertage
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

misux

Oder mit DOIF arbeiten!

DOIF tut das was du ihm sagst was er tun soll wenn was passiert! ;)

Voraussetzung ist das Fhem die Info bekommt wenn man es per Fernbedienung schaltet! Also das Gerät muss irgendwie im FHEM den Status ob es on oder off ist geben, dann ist das mit DOIF kein Problem.

Wenn du ein List von einem Dummy und einem der Geräte zeigst ist einiges machbar!

Dodger

"structure" sieht erstmal nicht so schlecht aus.
Aber: kann man den einzelnen Geräte auch verschiedene Befehle für den "on"-Zustand schicken?
Mein Receiver braucht noch ein Zusatzkommando nach dem Befehl "on".

Und: das Struct zeigt als state "undefined"...

Internals:
   ATTR       Entertain
   CFGFN     
   CHANGEDCNT 3
   DEF        Entertain VSX_923 SkyQ PhilipsTV
   FUUID      61c8ab1d-f33f-c598-3b08-71523af00ebbf1c2
   NAME       Entertainment_struct
   NOTIFYDEV  SkyQ,global,VSX_923,PhilipsTV
   NR         295507
   NTFY_ORDER 50-Entertainment_struct
   STATE      undefined
   TYPE       structure
   READINGS:
     2021-12-26 18:55:03   LastDevice      PhilipsTV
     2021-12-26 18:55:03   LastDevice_Abs  PhilipsTV
     2021-12-26 18:55:03   state           undefined
Attributes:
   devStateIcon on:rc_TV1_on off:rc_TV1_off


die devices zeigen im State alle "on"

Otto123

um da helfen zu können musst Du ausführlicher und konkreter werden.
Die Doku hält ja Beispiele bereit https://fhem.de/commandref_DE.html#structure

Falls Deine Frage war, ob einem der Mitglieder mehrere Befehle für den Zustand on gesendet werden können, dann ist mir das so direkt nicht bekannt.

Du kannst sicher einiges mit den attributen der structure anrichten, da kenn ich mich nicht so aus. Aber einfacher würde ich denken: mach es doch einfach am Receiver so, dass ein on auch on bedeutet?
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

misux

Vielleicht verstehe ich hier etwas nicht ganz... Aber ich stelle mir die Frage, wenn du am Dummy "on" schaltest, was schaltet denn die Geräte ein? Und wie? Wie sind die Geräte mit deinem FHEM Verbunden? Oder ist es eine Funksteckdosenleiste?

Pfriemler

siehe erster Post: Ändert sich der Dummy, reagiert ein Notify und sendet Schaltbefehle.

structure ist auf jeden Fall schon einmal eine gute Idee, um ein Set von Geräten auf einen Zustand zu überwachen. Natürlich vorausgesetzt, dass alle zu überwachenden Geräte auch einen Status an FHEM übermitteln, wenn sie manuell ein-/ausgeschaltet wurden.
Den Zustand eines dummys kann man ganz prima mit "setstate <dummy> state <zustand>" ändern, ohne dabei Events zu generieren. Wenn also structure feststellt, dass alles an ist (oder auch aus), dann könnte ein notify den dummy entsprechend "nachziehen", ohne dass dessen Änderung zum Aussenden neuer Befehlsfolgen führt. Vielleicht ist das hier die bessere Lösung.

Andererseits kann man natürlich auch die structure direkt zum Schalten verwenden. Und an einen Receiver ggf. einen Befehl nachzuschicken, könnte man auf dessen Statusänderung reagieren - allerdings muss man dann schon wieder darauf achten zu unterscheiden, ob der manuell oder per FHEM erfolgte, es sei denn, das Nachsenden eines bestimmten Befehls wäre immer angezeigt.

Ich habe für meine Heimkino- und TV-Schaltorgien DOIFs mit zeitlich gestaffelten Befehlsketten verwendet. Ein Dummy wird von Alexa geschaltet und dessen Änderung triggert die DOIFs. Da zum Auslösen der Trigger auch andere Events vorkommen (Fernbedienungen mit "Makro-"Tasten), wird bei mir der Dummy am Ende der Befehleskette zusätzlich per setstate gesetzt, um ihn aktuell zu halten. Funktioniert super.

"Änd're nie in fhem.cfg, denn das tut hier allen weh!" *** Wheezy@Raspi(3), HMWLAN+HMUART, CUL868(SlowRF) für FHT+KS+FS20, miniCUL433, Rademacher DuoFern *** "... kaum macht man es richtig, funktioniert es ..."

misux

Zitat von: Pfriemler am 26 Dezember 2021, 22:40:23
siehe erster Post: Ändert sich der Dummy, reagiert ein Notify und sendet Schaltbefehle.

Ja das ist klar, aber an wen? Das ist meine Frage. Denn die wurde ja noch nicht wirklich beantwortet...

Ich habe auch mehrere Dummys und mein Heimkino mit vielen Abfolgen alles mit DOIFS realisiert.
ABER ich habe Meine Reciever im FHEM der mir einen Status liefert ob er on oder off ist, meine Funksteckdoesen geben mir auch den Status, mein Fernseher liefert mir den Status on on oder off...

Hier ein Beispiel, ein kleines was passiert wenn mein Reciever eingeschaltet wird...:

Das ist ein DOIF der meinen Dummy "TVTime" ein und ausschaltet und in diesem Fall den Status von meine AVR darstellt:
([MARANTZ:power] eq "on")
(set TVTime on)
DOELSEIF
([MARANTZ:"off"])
(set TVTime off)


So wkönnte es aussehen wenn der dummy auch den AVR ein ausschalten soll:

([MARANTZ:power] eq "on")
(set TVTime on)
DOELSEIF
([MARANTZ:"off"])
(set TVTime off)
DOELSEIF
([TVTime] eq "on")
(set MARANTZ on)
DOELSEIF
([TVTime] eq "off")
(set MARANTZ off)


und so mit mehreren Geräten:

([MARANTZ:power] eq "on" or [Pinoeer:power] eq "on" or [Philips:power] eq "on")
(set TVTime on)
DOELSEIF
([MARANTZ:"off"] and [Pinoeer:"off"] and [Philips:"off"] )
(set MARANTZ off)
DOELSEIF
([TVTime] eq "on")
(set MARANTZ on)(set Pinoeer on)(set Philips on)
DOELSEIF
([TVTime] eq "off")
(set MARANTZ off)(set Pinoeer off)(set Philips off)


der dummy mit vielen anderen Bedingungen sorgt in einem weiteren DOIF für weitere Dinge:
kleines Beispiel:
([?15:00-22:30] and [TVTime:state] eq "off" and [LichtSensor] < 13.0 and [?WZEZ_WZFLed] eq "off")
(set WZEZ_WZFLed on)
DOELSEIF
([PartyTime:state] eq "on" and [?LichtSensor] < 13.0 and [?WZEZ_WZBodenLed] eq "off")
(set WZBodenLed on)
DOELSEIF
([?22:30-05:00] and [PartyTime:state] eq "off" and [TVTime:state] eq "off")
(set WZEZ_WZFLed on-for-timer 900) (set WZBodenLed off)
DOELSEIF
([22:30-05:00] and [?TVTime:state] eq "off" and [?PartyTime:state] eq "off" and ([?WZEZ_WZFLed] eq "on" or [?WZEZ_WZBodenLed] eq "on"))
(set WZEZ_WZFLed off) (set WZBodenLed off)
DOELSEIF
([TVTime:"on"] or [LichtSensor] > 13.0)
(set WZBodenLed off) (set WZEZ_WZFLed off)


Nun liegt es an mir ob ich den Dummy selber manuell schalte oder per AVR und wenn ich unbedingt will schaltet der dummy auch den AVR...

Will ja nur helfen weil das was er möchte geht ja einfach mit doif aber irgendwie fehlen mir noch Infos...