FHEM Forum

FHEM - Hausautomations-Systeme => Homematic => Thema gestartet von: Stefan75 am 04 Januar 2017, 20:07:22

Titel: Virtueller Homematic Schalter um aus mehreren Geraeten ein Geraet zu machen
Beitrag von: Stefan75 am 04 Januar 2017, 20:07:22
Hallo,

ich moechte folgenden Ablauf auf einen HomeMatic Schalter konfigurieren:

1. HomeMatic Steckdose einschalten
   (damit schaltete ich den TV und die Stereoanlage an)

2. MediaPortal ggf. starten (falls es noch nicht laeuft - fhem laeuft bei mir auf dem gleichen PC wie MediaPortal)

3. MediaPortal auf TV schalten und dort das erste Programm waehlen (ARD)
    (vollbild)


Ist die Verwendung eines virtuellen Aktors sinnvoll?

Idee:
Ich koennte das Virtuelle Geraet "TV" definieren.
Wenn ich dort ein "set on bzw. toggle" empfange, kann ich den oben beschriebenen Ablauf ausfuehren.
Wenn dort ein "set off bzw. toggle" empfange, kann ich die Steckdose stromlos schalten und Media-Portal auf "Home' setzen

Kann man es dann auch so machen, dass wenn man in Media-Portal von TV weg navigiert, dass das virtuelle TV Geraet dann nicht mehr auf on steht?
Falls ja, koennte ich mehrere virtuelle Geraete definieren: TV, Music, Moving Pictures. So kann man jedes "Geraet" einfach einschalten und die anderen sind aus.
Wenn ich das eingeschaltete Geraet noch mal drueckt, geht alles aus.

Oder ist der Ansatz voellig falsch bzw. aufwendig / umstaendlich?

Aktuell versuche ich einen virtuellen Homematic Schalter zu definieren, bei dem ich bei "on" "off" "toggle" entsprechend programmieren kann, was passieren soll.


define Livingroom.Tv CUL_HM 111111
attr Livingroom.Tv IODev HMLAN
attr Livingroom.Tv autoReadReg 4_reqStatus
attr Livingroom.Tv dummy 1
attr Livingroom.Tv expert 2_raw
attr Livingroom.Tv room Livingroom
attr Livingroom.Tv subType switch
attr Livingroom.Tv webCmd statusRequest:toggle:on:off

define act_on_Licht_an notify Livingroom.Tv \
{ \
  log 3, "Called Stefan with $EVENT";;\
  if ("$EVENT" ne "off") \
  { \
     fhem("set MediaPortal playchannel 1;; set MediaPortal command fullscreen;; setstate Livingroom.Tv on") \
  } \
  else \
  { \
   fhem("setstate Livingroom.Tv off") \
  }\
}
attr act_on_Licht_an room Livingroom



Ich glaube aber, dass ich hier einiges falsch mache:
1. Es gibt auch ein dummy Modul, waere das besser geeignet?
   (Ich wollte ein Homematic Dummy nutzen, damit ich vielleicht mal meine echten HM Schalter mit virt. peere.)
2. $EVENT scheint ungewoehnliche Werte wie "set_xxx" zu haben - die If-Abfrage kann damit aber nicht umgehen.
    (Aber ein aehnliches Beispiel, basierend auf dummy, habe ich mal gesehen.)   
3. Soll man wirklich mit "setstate <virt-Geraet> xxx" den State manipulieren, damit das virtuelle Geraet wie ein echtes dargestellt wird?


Danke fuer die Hilfe,

stefan
Titel: Antw:Virtueller Homematic Schalter um aus mehreren Geraeten ein Geraet zu machen
Beitrag von: Pfriemler am 04 Januar 2017, 20:50:25
'n paar Gedanken von mir ...
a) ja, kompliziert.
b)
Zitatsetstate: Der Befehl setzt den STATE Eintrag des Gerätes direkt, ohne Ereignisse zu generieren oder ein Signal an das Gerät zu senden.
Du erreichst damit, dass Du innerhalb eines Notifys den Status ändern kannst, ohne ein neues Event zu erzeugen und das Notify erneut zu triggern. Das nochmalige Setzen des States in Deinem Notify ist aber überflüssig, da Livingroom.tv ohnehin bereits diesen Status hat.

c) "set_xxx" sind typische Vorgänge für HomeMatic: Ein Gerät wird "set_on" gesetzt, wenn der Einschaltbefehl geschickt wird, erst wenn das Gerät Erfolg meldet, wird es zu "on", off entsprechend. Mit einem (aus meiner Sicht hier gleichwertigen) Dummy hast Du dieses "Problem" nicht. Du kannst Deine HM-Geräte auch mit virtuellen Kanälen etwa der vccu peeren und mit einem Notify den Dummy kippen. Alternativ kannst und solltest Du das auszuwertende Notify-Event konkretisieren, also nur auf on und off triggern: "...notify (Livingroom.tv:on|Livingroom.tv:off)...", wenn ich nicht falsch liege (was leider nicht selten vorkommt), oder auch kürzer " ... Livingroom.tv:(on|off) ..."?.

Dein Notify triggert auf den Status der (virtuellen) Steckdose? Würde bedeuten, dass jedes Einschalten der Dose den Vorgang startet. Das macht Sinn, wenn sie nur diesen einen Zweck hat - also der Bedienvorgang ist das Einschalten der Steckdose und der Rest soll (immer) automatisch folgen. Hm. Wäre nicht mein Ding.

Jm2c.



Titel: Antw:Virtueller Homematic Schalter um aus mehreren Geraeten ein Geraet zu machen
Beitrag von: Stefan75 am 04 Januar 2017, 21:31:05
Danke fuer eine Hilfe...

Zitat von: Pfriemler am 04 Januar 2017, 20:50:25
a) ja, kompliziert.
okay, dann mache ich es einfacher - bzw. versuche es :)

Zitat von: Pfriemler am 04 Januar 2017, 20:50:25
b) Du erreichst damit, dass Du innerhalb eines Notifys den Status ändern kannst, ohne ein neues Event zu erzeugen und das Notify erneut zu triggern. Das nochmalige Setzen des States in Deinem Notify ist aber überflüssig, da Livingroom.tv ohnehin bereits diesen Status hat.
Wenn ich nichts gemacht habe, stand als State einfach nur "dummy" oder so. Vielleicht liegt es daran, dass ich es als Homematic Device angelegt habe.

Zitat von: Pfriemler am 04 Januar 2017, 20:50:25
c) "set_xxx" sind typische Vorgänge für HomeMatic: Ein Gerät wird "set_on" gesetzt, wenn der Einschaltbefehl geschickt wird, erst wenn das Gerät Erfolg meldet, wird es zu "on", off entsprechend. Mit einem (aus meiner Sicht hier gleichwertigen) Dummy hast Du dieses "Problem" nicht. Du kannst Deine HM-Geräte auch mit virtuellen Kanälen etwa der vccu peeren und mit einem Notify den Dummy kippen. Alternativ kannst und solltest Du das auszuwertende Notify-Event konkretisieren, also nur auf on und off triggern: "...notify (Livingroom.tv:on|Livingroom.tv:off)...", wenn ich nicht falsch liege (was leider nicht selten vorkommt), oder auch kürzer " ... Livingroom.tv:(on|off) ..."?.
1. Okay, ich werde also auf "dummy" umstellen.
2. Den Notify werde ich noch konkretisieren (on, off, toggle) - Mal schauen wie, ist AFAIK eine regex
   (War in einem Wiki aber so angegeben... )
   Wuerde ich aber sowieso eher als Optimierung sehen.

Zitat von: Pfriemler am 04 Januar 2017, 20:50:25
Dein Notify triggert auf den Status der (virtuellen) Steckdose? Würde bedeuten, dass jedes Einschalten der Dose den Vorgang startet. Das macht Sinn, wenn sie nur diesen einen Zweck hat - also der Bedienvorgang ist das Einschalten der Steckdose und der Rest soll (immer) automatisch folgen. Hm. Wäre nicht mein Ding.

Gedacht ist es so:
Die virtuelle Steckdose steht fuer die Tv-Funktion:
Wenn ich den TV einschalte (via on oder toggle), werden die echten Geraete entsprechend geschaltet und durch das "on" im virtuellen TV-Geraet angezeigt.
Wenn ich den TV ausschalte (via on oder toggle), werden die echten Geraete auch entsprechend geschaltet...

Was ich noch machen werde:
Im notify werde ich etwas schlauer reagieren:
Wenn z.B. im MediaPortal bereits TV aktiv ist, schalte ich es nicht erneut an. etc.

Wenn ich richtig gut bin, wuerde ich darauf reagieren, wenn man im MediaPortal das TV deaktiviert. Dann muesste ich automatisch mein virtuelles Geraet "tv" wieder auf "off' setzen.

Warum mach ich es so:
Ich moechte meinen Nutzern das Gefuehl von frueher geben:
TV, Musik, Filme, etc. sind alles einzelne Geraete, die man einschalten kann.
Meine Hoffnung: Leichtere Bedienung (fuer meine Gaeste, Freunde, Familie)

Wie wuerdest du es machen?

Viele Gruesse,
stefan