jensweigele / ioBroker.yahka

Yet another HomeKit adapter for ioBroker
MIT License
131 stars 47 forks source link

Conversion: RGB to HEX / HEX to RGB with ZigBee Adapter and without Hue Bridge #76

Open CrazyCreator13 opened 5 years ago

CrazyCreator13 commented 5 years ago

Pleas can you add support for the Hue LightStripe RGB-Color?

I have all my ZigBee Devices connected per ZigBee-USB-Stick and the ioBroker.ZigBee Adapter. But the RGB Color is not available ... The Stripe show in Objects a level.color.rgb for change the RGB Color ...

CrazyCreator13 commented 5 years ago

And a small tip :D :D the color changes with HexCode direct in ioBroker. Like: FF00FF or 0000FF or so ...

CrazyCreator13 commented 5 years ago

Hello? No answer? Can you add support for RGB Devices?

jensweigele commented 5 years ago

Do you already have the datapoints in ioBroker? Is the issue, that you need send the color values in rgb?

CrazyCreator13 commented 5 years ago

Yes, I have Datapoints in ioBroker.

{ "type": "state", "common": { "name": "Color", "type": "string", "read": true, "write": true, "role": "level.color.rgb", "mobile": { "admin": { "visible": true, "type": "light" } } }, "from": "system.adapter.zigbee.0", "ts": 1545703500797, "_id": "zigbee.0.00178801011d043c.color", "acl": { "object": 1636, "state": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" }, "native": {} }

bildschirmfoto 2018-12-26 um 23 39 42

CrazyCreator13 commented 5 years ago

Yes this is the problem ... I think

DanielWeeber commented 5 years ago

Solved via javascript.

https://forum.iobroker.net/viewtopic.php?f=21&t=18154&sid=b3e6507bf37eea3cb5baf9a91e74be20&start=20

nicoh88 commented 4 years ago

Solved via javascript.

https://forum.iobroker.net/viewtopic.php?f=21&t=18154&sid=b3e6507bf37eea3cb5baf9a91e74be20&start=20

Funktioniert leider nicht ordentlich bei der Farbwahl - wird immer überschrieben.

1582025903541-1570565965953-img_0751 Doppelt #79

nicoh88 commented 4 years ago

Das grundlegende Problem RGB to HEX und HEX to RGB kann, ohne zusätzliche Conversion, über ein Skript IN YAHKA gelöst werden. Habe es hier dokumentiert.

Eine vordefinierte Conversion seines YAHKA wäre natürlich wünschenswert. @jensweigele

--

Das andere Problem mit den HomeKit-Color-Picker, dass die 6 gespeicherten Farben immer überschrieben werden, konnte ich genauer analysieren. Dies tritt immer auf, wenn die Characteristics Hue UND ColorTemperatur zeitgleich definiert sind.

Hier aber ACHTUNG, jetzt wird es strange! ColorTemperature darf im dem Fall, NIE bei dem Geräte in YAHKA konfiguriert gewesen sein. Wenn es mal konfiguriert war und nur der Haken bei "Aktiviert" entfernt wird - tritt das Problem dennoch auf. Am besten ein frisches Gerät, ohne ColorTemperature, anlegen.

Das Problem kann ohne Leuchtmittel, mit einfachen Datenpunkten in ioBroker und YAHKA problemlos reproduziert werden!

Bildschirmfoto 2020-06-08 um 12 12 28 Für mich ist nur Hue + Saturation keine Option, da man eh in 90% der Fälle eine natürliche Farbe nutzt. Es wäre dennoch schön, wenn beides in einem funktionieren würde! @jensweigele

Hier wird das Problem beschrieben und teilweise gelöst: https://github.com/ebaauw/homebridge-hue/issues/439 https://github.com/cflurin/homebridge-mqtt/issues/71

--

Gruß Nico

seankmg commented 4 years ago

@nicoh88 Wenn ich das Skript Einstelle, kommt im Log dieser Fehler: "hex.substring is not a function". Siehe hier (https://prnt.sc/syu50w)

Edit: Für alle die Probleme mit dem Script von @nicoh88 haben, ändert im Script "To HomeKit" jeweils "hex.substring(x.x);" zu "hex.toString().substring(x,x);". Das hat bei mir geholfen.

nicoh88 commented 4 years ago

@seankmg Danke für die Info!!

daNick73 commented 3 years ago

@nicoh88

Das grundlegende Problem RGB to HEX und HEX to RGB kann, ohne zusätzliche Conversion, über ein Skript IN YAHKA gelöst werden. Habe es hier dokumentiert.

Eine vordefinierte Conversion seines YAHKA wäre natürlich wünschenswert. @jensweigele

Hallo,

es mag an meinem Setup liegen, aber wenn ich versuche, die Anleitung https://github.com/jensweigele/ioBroker.yahka/wiki/Leuchtmittel-dimmbar-mit-Farbe-_-Philips-Hue-Color-LCT001) mit meiner OSRAM Lightify LED nutzen, stürzt Home auf dem iPhone (ioS14) reproduzierbar ab, sobald das Gerät in Home angezeigt wird. Im ioBroker wird nichts angezeigt.

Falls es mit den Osram gar nicht funktionieren kann/ soll: Alles OK :)

Gruß daNick

nicoh88 commented 3 years ago

@daNick73 Habe die Anleitung im Wiki aktualisiert - weil das Skript im YAHKA-Adapter öfters Probleme gemacht hat, es handelt sich jetzt um ein eigenständiges Skript.

@jensweigele Es wäre schön wenn der Lightbulb-Service mit Hue UND ColorTemp ordentlich funktionieren würde.

andiweli commented 2 years ago

Hallo!

Ne Idee wie ich meine Meross RGB LEDs damit zum farbig leuchten bringe?

Mit dem Skript gehts leider nicht - und die "hue" Einstellung in Yahka auch nicht. Der Meross Datenpunkt "HUE" hat HEX Werte in dem Format: #000ffa Nutze ich das Skript, wirds überschrieben auf "ffaNaN" und das Licht lässt sich nur mehr in verschiedenen Helligkeitsstufen "Blau" ändern.

Danke!

Marty56 commented 2 years ago

Das Script ist leider nur ein Workaround. Es wäre schön, wenn es ein Yahka Device gäbe, dass COLOR, COLORTEMP, BRIGHTNESS direkt und ohne Verrenkungen vom Nutzer ansteuern könnte.

Git-Romer commented 2 years ago

Schließe mich @Marty56 an. Würd mich freuen wenn dieses Issue resolved werden könnte.

unstressable commented 1 year ago

scheitere auch daran, leider scheint YAHKA nicht wirklich weiterentwickelt zu werden.

Git-Romer commented 1 year ago

Ich habe das Problem folgendermaßen "gelöst": Zunächst habe ich einen eigenen Datenpunkt angelegt. Nun habe ich den Yahka so konfiguriert, dass er Hue und Saturation in diesen Datenpunkt schreibt. In der Javascript Instanz läuft ein Script, welches auf meinen selbst angelegten Datenpunkt lauscht, diesen umwandelt und den umgewandelten Wert an das entsprechende gerät schickt.

Ist zwar alles etwas umständlich und unsauber aber es funktioniert sehr gut und überraschend schnell. Die Homekit Farbwahl ist dennoch etwas buggy bzw. setzt sich immer wieder zurück aber ich gehe davon aus, dass das problem hierbei eher bei Apple's Software liegt als an irgend einer meiner Automationen oder der Yahka bridge (berichtigt mich falls ich falsch liegen sollte).

Hier ein screenshot der Instanz: grafik

Hier der Javascript code (die ID's müssen selbstverständlich angepasst werden) (_0_userdata.0.Hex_convert.Lautsprecherlampehue == Der selbst angelegte Datenpunkt)
(zigbee.0.50325ffffed646c9.color == Die eigentliche LED):

on({id:"0_userdata.0.Hex_convert.Lautsprecherlampe_hue", ack: false, change: 'any'}, function (obj) {
  var hue = parseInt(obj.state.val);
  var sat = parseInt(getState("0_userdata.0.Hex_convert.Lautsprecherlampe_sat").val);
  var res = hsvToRgb(hue, sat, 100);
  setRGB(res[0], res[1], res[2], "zigbee.0.50325ffffed646c9.color");
});

function setRGB(r, g, b, id){
  var val = ''+('00'+r.toString(16)).slice(-2)+('00'+g.toString(16)).slice(-2)+('00'+b.toString(16)).slice(-2);
  setState(id, val);
}

function hsvToRgb(h, s, v) {
  var r, g, b;
  var i;
  var f, p, q, t;

  h = Math.max(0, Math.min(360, h));
  s = Math.max(0, Math.min(100, s));
  v = Math.max(0, Math.min(100, v));

  s /= 100;
  v /= 100;

  if(s === 0) {
      // Achromatic (grey)
      r = g = b = v;
      return [
          Math.round(r * 255),
          Math.round(g * 255),
          Math.round(b * 255)
      ];
  }

  h /= 60; // sector 0 to 5
  i = Math.floor(h);
  f = h - i; // factorial part of h
  p = v * (1 - s);
  q = v * (1 - s * f);
  t = v * (1 - s * (1 - f));

  switch(i) {
      case 0:
          r = v;
          g = t;
          b = p;
          break;

      case 1:
          r = q;
          g = v;
          b = p;
          break;

      case 2:
          r = p;
          g = v;
          b = t;
          break;

      case 3:
          r = p;
          g = q;
          b = v;
          break;

      case 4:
          r = t;
          g = p;
          b = v;
          break;

      default: // case 5:
          r = v;
          g = p;
          b = q;
  }

  return [
      Math.round(r * 255),
      Math.round(g * 255),
      Math.round(b * 255)
  ];
}
unstressable commented 1 year ago

So hab ich es mittlerweile auch gemacht. Konnte den Beitrag im ioBroker Forum finden. Funktioniert und der Bug liegt daran, dass es eine Kollision mit Colortemp gibt. Ist dort auch beschrieben und kommt bei mir nicht mehr vor.

die ScaleInt Conversion oben kannst du weglassen, da Hue von Homekit aus auf 0-360 beschränkt ist.

funktioniert so alles auch, aber wäre direkt in YAHKA schöner.

manoloxxl commented 1 year ago

Bin inzwischen auch bei diesem Problem angekommen. Habe das Script aus dem Wiki sowie dieses hier ausprobiert und habe leider das Problem, dass die Farben nicht korrekt gesetzt werden. Eigentlich wird nu Lila korrekt gesetzt - bei allem anderen kommt immer etwas anderes bei raus oder weiss. Ich hab auch das Gefühl, dass bei "gelb" immer mal wieder etwas anderes bei rauskommt.

Hatte jemand das schon mal?

unstressable commented 1 year ago

nein, bei mir funktioniert es auf Anhieb. Du kannst ja mal paar Werte händisch eintragen und schauen welcher HEX Wert rauskommt und googllen, ob der HEX Wert passt.

Oder du postest hier mal ein paar Werte und ich geb sie bei mir ein und schau was rauskommt.

daNick73 commented 1 year ago

Welche Leichtmittel? Vielleicht gehört das zum Problem?

unstressable @.***> schrieb am Mo. 5. Dez. 2022 um 22:07:

nein, bei mir funktioniert es auf Anhieb. Du kannst ja mal paar Werte händisch eintragen und schauen welcher HEX Wert rauskommt und googllen, ob der HEX Wert passt.

Oder du postest hier mal ein paar Werte und ich geb sie bei mir ein und schau was rauskommt.

— Reply to this email directly, view it on GitHub https://github.com/jensweigele/ioBroker.yahka/issues/76#issuecomment-1338162886, or unsubscribe https://github.com/notifications/unsubscribe-auth/AFBNRBWRVOKFHOXD4NUQQ3DWLZKPVANCNFSM4GJJNLYQ . You are receiving this because you were mentioned.Message ID: @.***>

unstressable commented 1 year ago

Bei mir Hue via Zigbee Adapter

manoloxxl commented 1 year ago

nein, bei mir funktioniert es auf Anhieb. Du kannst ja mal paar Werte händisch eintragen und schauen welcher HEX Wert rauskommt und googllen, ob der HEX Wert passt.

Oder du postest hier mal ein paar Werte und ich geb sie bei mir ein und schau was rauskommt.

Ich hab das Yahka Device neu erstellt und schon gehts. Ist zwar 1:1 wie vorher, aber... Technik halt ;)

unstressable commented 1 year ago

Moment mal: Haben die Farben an der Lampe nicht funktioniert, oder die Farben der 6 Presets? Die 6 Presets sind ein Bug der bekannt ist. Das liegt daran, wenn an diesem Gerät jemals Color Temperature (Weißtöne) angelegt wurde.

selbst wenn dieses wieder deaktiviert wird kommt es zu diesem Phänomen. Da muss tatsächlich das Gerät manuell neu angelegt werden (nicht kopiert!).

manoloxxl commented 1 year ago

Moment mal: Haben die Farben an der Lampe nicht funktioniert, oder die Farben der 6 Presets? Die 6 Presets sind ein Bug der bekannt ist. Das liegt daran, wenn an diesem Gerät jemals Color Temperature (Weißtöne) angelegt wurde.

selbst wenn dieses wieder deaktiviert wird kommt es zu diesem Phänomen. Da muss tatsächlich das Gerät manuell neu angelegt werden (nicht kopiert!).

Dann bin ich in den Fehler der Color Temp gelaufen. Nicht bewusst, aber daher das mein erster Yahka Ausflug ist, sehr gut möglich.

manoloxxl commented 1 year ago

Noch eine Frage zu den Scripten: Das hier aus dem Thread sowie das aus dem Wiki unterscheiden sich. Gibt es dabei ein "aktuelleres"?

Zudem landen im Log beim Umrechnen einige Meldungen "has to be type string but received type number". Als Datenpunkte habe ich String angelegt. Kann man die Meldung noch fixen im Script oder im Datenpunkt?