WifiLight Statussync mit Hue möglich?

Begonnen von Steeeve, 04 Oktober 2014, 17:52:08

Vorheriges Thema - Nächstes Thema

Steeeve

Vielen Dank Euch!
Soweit funktioniert das jetzt schon ganz gut - helligkeit usw. wird noch nicht übernommen und wenn man über die hue-app die farbe ändert, dauet es natürlich ein wenig, aber soweit schon mal ganz nett!

Jetzt muss ich leider noch wegen den readings lästig sein, dass ich prinzipiell auf das onoff reading der hue eingehen kann bin ich jetzt auf die readingsGroups gestoßen (und gleich für die FHT umgesetzt - nice) aber somit auch draufgekommen, dass es nicht das ist, was ich suche...
Ich hätte da gerne in meiner funktion eine if-bedingung, die auf das onoff 0/1 eingeht, dass ich dann walt bei 0 den ledstrip ausschalte und bei 1 den farbwert setze...

merci

steeeve

herrmannj

eigentlich bräuchtest Du das (mMn) nicht weil Wifilight einen RGB 000000 auf "off" setzt.

Also solange die hue, wenn sie ausgeht, nochmal ein RGB 000000 schickt geht das wifilight device mit aus.

vg
jörg

der-Lolo

schönes Teamwork, das wünsch ich mir fürs neue beleuchtungswidget...
sowohl die Funkion, als auch das Team *gg*

Steeeve

Das macht die Hue aber nicht, wenn ich die lampe aus schalten (onoff 0, state off) dann bekomme ich immer noch einen RGB wert im get

lg
steeeve

herrmannj

verstehe, schau Dir mal das DOIF modul an, das stellt solche Verknüpfung bereit.

vg
Jörg

justme1968

Zitat von: herrmannj am 04 Oktober 2014, 20:03:04
NAchtrag: teamwork  :)
aber ich war fauler :)

die hues setzen bei aus die farben je nach device nicht zurück. man kann z.b. ein ein senden und die lampen gehen mit der alten farbe und helligkeit wieder an. d.h. leider auch das das notify auf RGB alleine nicht reicht um auch aus zu schalten.

wenn du es dir einfach machen willst leg ein zweites notify auf hue:onoff.* an und schalte bei $EVTPART1 == 0 aus.

oder du machst alles in einem notify (hue:(RGB|onoff).* und kannst dann mit {if( $EVTPART0 eq "onoff" ) {
  if($EVTPART1 == 0){
    ...
    }
  } else {
  ...
  }
}
ausschalten oder die farbe übernehmen.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Steeeve

#21
oioioioioi... Ich versuche gerade das so zu machen, wie Andre geschrieben hat (unvollständig, da grad bei Fehlersuche):

sub syncHueToWifiLight {
  my $huedevice = $_[0];
  my $wifilightdevice = $_[1];
  my $EVTPART0 = $_[2];
  my $EVTPART1 = $_[3];

  my $ret = "";
  if ($EVTPART0 eq "onoff") {
     if ($EVTPART1 == 0) {
        fhem "set $wifilightdevice off";
     }
}
  my $color = fhem "get $huedevice RGB";
  fhem "set $wifilightdevice RGB $color";
  $ret = $color;
}


und bekomme den Fehler:

ZitatGlobal symbol "$color" requires explicit package name at ./FHEM/99_MyUtils.pm line 21. syntax error at ./FHEM/99_MyUtils.pm line 24, near "my $color = fhem "get " Global symbol "$color" requires explicit package name at ./FHEM/99_MyUtils.pm line 25. Global symbol "$priority" requires explicit package name at ./FHEM/99_MyUtils.pm line 39. Global symbol "$event" requires explicit package name at ./FHEM/99_MyUtils.pm line 40. Global symbol "$subject" requires explicit package name at ./FHEM/99_MyUtils.pm line 40. Global symbol "$priority" requires explicit package name at ./FHEM/99_MyUtils.pm line 40. Global symbol "$priority" requires explicit package name at ./FHEM/99_MyUtils.pm line 42. Global symbol "$event" requires explicit package name at ./FHEM/99_MyUtils.pm line 43. Global symbol "$subject" requires explicit package name at ./FHEM/99_MyUtils.pm line 43. Global symbol "$priority" requires explicit package name at ./FHEM/99_MyUtils.pm line 43. Missing right curly or square bracket at ./FHEM/99_MyUtils.pm line 78, at end of line ./FHEM/99_MyUtils.pm has too many errors.

Line 21 ist genau folgende Zeile:
fhem "set $wifilightdevice off";


ohne diese klappt es!

Schlussendlich sollte es so ausschauen (zwecks Klammernzählung so formatiert ;)):

sub syncHueToWifiLight {
  my $huedevice = $_[0];
  my $wifilightdevice = $_[1];
  my $EVTPART0 = $_[2];
  my $EVTPART1 = $_[3];
  my $ret = "";
  my $color = "";
{
if ($EVTPART0 eq "onoff")
{
{ if ($EVTPART1 == 0)
{
fhem "set $wifilightdevice off";
}
}
} else
{
  $color = fhem "get $huedevice RGB";
  fhem "set $wifilightdevice RGB $color";
  $ret = $color;
}
}
}


Sehen eure geschulten Augen zufällig den Fehler?

Dongge!
vg

Seeeve

justme1968

aus dem stegreif sehe ich es nicht aber in EVTPART1 steht sowieso was du willst. du brauchst kein extra get.

gruß
  andre

ps: du würdest auch ein get rgb wollen.  RGB ist auf maximale helligkeit normiert damit die icons besser aussehen.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Steeeve

Guten Morgen!
Also keine Ahnung warum das gestern nicht funktionierte - heute klappt es und hier der code, mit noch einem kleinen Problemchen:
Ein/aus, Farbwechsel funktioniert, nur da ich ja immer noch auf das onoff und das RGB event eingehen muss, fehlt mir bei RGB event die Information ob die Hue ein oder aus sind - jetzt schaltet es sich zwar brav aus, nur beim nächsten Reading von RGB schaltet sich das Lichtband wieder ein - damn

sub syncHueToWifiLight {
  my $huedevice = $_[0];
  my $wifilightdevice = $_[1];
  my $EVTPART0 = $_[2];
  my $EVTPART1 = $_[3];

  my $ret = "";
  if ($EVTPART0 eq "onoff:") {

     if ($EVTPART1 == 0) {
      fhem "set $wifilightdevice off";
     }
} else {
  my $color = fhem "get $huedevice RGB";
  fhem "set $wifilightdevice RGB $color";
  $ret = $color;
}
}


Das kann doch nicht so schwer sein - ich glaub ich steh auf der Leitung...

Danke
Steeeve

justme1968

du kannst beim RGB event it ReadingsVal(<hue>,"onoff",0); nachschauen ob die hue an oder aus ist und nur bei an schalten.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Steeeve

#25
Danke Andre!

So klappt es jetzt:
sub syncHueToWifiLight {
  my $huedevice = $_[0];
  my $wifilightdevice = $_[1];
  my $EVTPART0 = $_[2];
  my $EVTPART1 = $_[3];
  my $ret = "";
if ($EVTPART0 eq "onoff:") {
   if ($EVTPART1 == 0) {
   fhem "set $wifilightdevice off";
   } 
} else {
  if (ReadingsVal("HUEDevice7","onoff",0) == 1) {
  my $color = fhem "get $huedevice RGB";
  fhem "set $wifilightdevice RGB $color";
  $ret = $color;
  } 
}
}


Und dazu das notwendige notify:

define lightstripToHue notify HUEDevice7:(RGB|onoff).* {syncHueToWifiLight('HUEDevice7', 'LightStrip',$EVTPART0,$EVTPART1) }

Sobald es dann das HSV Reading von den Hue gibt, werde ich es dahingehend anpassen, dann sollte die Helligkeit ja soweit auch halbwegs stimmen, oder?

Was mir noch aufgefallen ist, dass es (noch) nicht funktioniert, wenn man die Hue mit einen Alarm triggert:

define klingelNotify notify wg_KlingelA:on {prowl("Es Klingelt","Klingel @ %","1")}{fhem("set HUEDevice7 alert lselect")}

(ja, ich habs hier irgendwie hardcore - klingel triggert den FS20 signalgeber (direkt), die Lampe blinkt (super wenn die Kinder schlafen) und es wird eine Push an die Handys gesendet (sehr unsympathisch,wenn man weiß, dass die Post klingelt, aber keiner zuhause ist).

lg
Steeeve

Steeeve

#26
Und noch eine optimierte Version, welche weichere Übergänge hat und statt off auf RGB 000000 ausfadet.
Wenn man die Hue nun mit "on" einschaltet, klappts auch!
Oh, und huedevice 7 natürlich auf den Parameter ausgebessert!
Edit: Angepasst auf rgb statt RGB

sub syncHueToWifiLight {
  my $huedevice = $_[0];
  my $wifilightdevice = $_[1];
  my $EVTPART0 = $_[2];
  my $EVTPART1 = $_[3];
  my $ret = "";
if ($EVTPART0 eq "onoff:") {
   if ($EVTPART1 == 0) {
   fhem "set $wifilightdevice RGB 000000 2 s";
  return $ret;
   } 
}
  if (ReadingsVal("$huedevice","onoff",0) == 1) {
  my $color = fhem "get $huedevice rgb";
  fhem "set $wifilightdevice RGB $color 2 s";
  $ret = $color;
}
}

justme1968

wenn du get rgb statt get RGB verwendest (oder direkt $EVTPART1) sollte auch jetzt schon die helligkeit stimmen.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Steeeve