RGB LED Controller Module

… ich schließe mich übrigens gmop an …
wenn die mi lights auch darüber gesteuert werden könnten wäre cool.
Hab mir gerade mal ein Set bestellt … vielleicht läufts ja auch schon so :0)

VG

Andreas

Schliese ich mich an.
Z.Zt. mache ich das so.
Farbregelung ist aber nicht zufriedenstellend.


<?php

    $id_socket = 41550 /*[UDP Socket   249 - RGB]*/;
   $id_Color     = 13178 /*[WLAN-RGB-Tisch-Leuchte\Tischleuchte Color]*/;
    $Color         = GetValueInteger($id_Color);
//    echo $Color;
   $red            = floor($Color/65536);
   $green        = floor(($Color-($red*65536))/256);
   $blue          = $Color-($green*256)-($red*65536);

// UDP RGB Socket öffnen
    CSCK_SetOpen($id_socket, true);
    IPS_ApplyChanges($id_socket);
    IPS_Sleep(500);

/*
    $dec = Getvalue(13178 /*[WLAN-RGB-Tisch-Leuchte\Tischleuchte Color]*/);
    $hex = dechex($dec);
    $rot   = hexdec(substr($hex,0,2));
    $gruen = hexdec(substr($hex,2,2));
    $blau  = hexdec(substr($hex,4,2));
    $red   = ($rot   * 8) / 256;
    $green = ($gruen * 8) / 256;
    $blue  = ($blau  * 4) / 256;
*/

    $eightBitColor = (integer) ($red << 5) | ($green << 2) | $blue;
//    $eightBitColor = (integer) $red | $green | $blue;
    USCK_SendText($id_socket, "\x20". chr($eightBitColor) ."\x55");
    IPS_Sleep(500);
/*
// UDP RGP Socket wieder schließen
    CSCK_SetOpen($id_socket, false);
    IPS_ApplyChanges($id_socket);
*/

?>


Hallo,

aufgrund eurer Antworten: Update ohne getrennte RGB Variablen kommt hoffentlich am Wochenende.
MiLights sind prinzipiell denkbar. Leider besitze ich noch keine. Hat jemand einen Link mit vernünftiger Doku des Protokolls? Dann sehe ich mir das mal an.

LG

Haben die Mi Lights einen Vorteil gegenüber der LW12 Module ???
Plane auch noch ein paar anzuschaffen.

Oli

Die MiLight´s sind meines Erachtens nach sogar besser dokumentiert als die LW 12 Teile.

Siehe hier:

http://www.limitlessled.com/dev/

In IPS habe ich sie schon laufen.
Nur wäre es über dein Modul wesentlich eleganter :slight_smile:

Allerdings bin ich mir noch so sicher ob die auch den Status zurück liefern.
Sieht dannach aus als ob die nur Unidirektional können.

Der größte Vorteil ist für mich, das sich diese Teile, über IPS sauber Dimmen lassen. (Auch die RGB Farben)

Die MiiLights sind unidirektional und liefern daher keinen Status zurück.
Ich hatte aber bisher nicht eine Fehlübertragung.

Ein Skript gibt dazu es hier.

Ich persönlich ziehe ein Skript vor. Ich habe mich mit der Programmierung von IPS-Modulen noch nie auseinander gesetzt und neige zu Lösungen, bei denen ich mir selbst helfen kann. Wenn ein IPS-Versionswechsel kommt ist nicht gewährleistet, dass das Modul dann noch funktioniert und - wenn nicht - der Author es weiterhin pflegt. Im schlimmsten Fall habe ich dann keine funktionierende Hardware mehr.

gmop

Kannst Du deinen Code hier einstellen?

Hallo,

ein Update des Moduls ist jetzt Online. Nach der Aktualisierung können die einzelnen Variablen für Rot/Grün/Blau gelöscht werden. Es wir nur noch die HexColor Variable benötigt.

Die Sache mit den MiLights sehe ich mir bei Gelegenheit genauer an.

LG

Hätte drei Fragen an den Entwickler dieser tollen DLL:

Es gibt ein State: Color, gibt es auch andere zb: White ?? Wenn ja, wie spreche ich dies Variable an ?
Was zeigt Progess an ?
Und wie werden die Lichtprogramme erzeugt ? Sind es die, die man über die App definieren kann ?

Danke

Hier kannst Du die Farbe als Hex-Wert schreiben Weiss == FFFFFF

Was zeigt Progess an ?

z.B. den fortschritt beim dimmen.

Und wie werden die Lichtprogramme erzeugt ? Sind es die, die man über die App definieren kann ?

JA

Danke, olima! Dem ist nichts hinzuzufügen :slight_smile:

ich bekomme es nicht hin die State Variable zu beschreiben (Nur lesen) was mach ich falsch?

Ziel ist, bei einem Ereignis, die aktuelle Farbe in eine Variable zu schreiben, dann eine optische Signalisierung zu starten (selbst erstelltes HardwareProgramm) und dann die alte Farbe wiederherzustellen. (falls der State An war, wenn nicht dann einfach aus)

Das haut auch alles soweit hin, ich kann nur die Farbe nicht zurückschreiben.
Ich bin mir allerdings auch nicht sicher was das auslesen/schreiben des HEXWertes betrifft, da ich ja mit Integer arbeite, das ist doch bestimmt auch falsch,oder?

hier der Code:

<?
$FarbeFlur = GetValueInteger(54175 /*[Haupthaus\RGB LED Controller\RGB LED Flur\HexColor]*/);
$SwitchFlur = GetValueBoolean(14259 /*[Haupthaus\RGB LED Controller\RGB LED Flur\Switch]*/);

if ($SwitchFlur == true)
{        LW12_RunHWProgram(44703 /*[Haupthaus\RGB LED Controller\RGB LED Küche]*/,57,17);
         IPS_Sleep(5000);
        	SetValueInteger(25082, $FarbeFlur);

} else {
			LW12_SwitchOn(44703 /*[Haupthaus\RGB LED Controller\RGB LED Küche]*/);
			LW12_RunHWProgram(44703 /*[Haupthaus\RGB LED Controller\RGB LED Küche]*/,57,17);
			IPS_Sleep(5000);
			LW12_SwitchOff(44703 /*[Haupthaus/RGB LED Controller\RGB LED Küche]*/);
}
?>

Warum SetValueInteger ?
Du musst auch dafür die Instanz Funktionen mit LW12_ nehmen…
Michael

Einfach im Editor LW12 tippen und dann STRG+Space drücken…

ja, hatte ich ja.
LW12_SetRGB aber da muss ich doch die RGB Werte haben oder nicht? Ich wollte die Hex Werte auslesen und auch direkt wieder schreiben, geht das nicht?

So gehts.


   $id_Color    = id von Color
   $Color          = GetValueInteger($id_Color);
   $Red            = floor(  $Color/65536);
   $Green          = floor(( $Color-($Red*65536))/256);
   $Blue           = $Color-($Green*256)-($Red*65536);

              LW12_SwitchOn($id_LW12);
              LW12_SetRGB($id_LW12, $Red, $Green, $Blue);


Du brauchst die Integer Werte also 0-255 pro Farbe. kannst z.B „hexdec“ verwenden.

siehe auch hier

http://stackoverflow.com/questions/15202079/convert-hex-color

Moin!

Ich hätte da diese 2 Funktionen im Angebot :slight_smile:

function hex2rgb($hex) {
   $hex = str_replace("#", "", $hex);

   if(strlen($hex) == 3) {
      $r = hexdec(substr($hex,0,1).substr($hex,0,1));
      $g = hexdec(substr($hex,1,1).substr($hex,1,1));
      $b = hexdec(substr($hex,2,1).substr($hex,2,1));
   } else {
      $r = hexdec(substr($hex,0,2));
      $g = hexdec(substr($hex,2,2));
      $b = hexdec(substr($hex,4,2));
   }
   $rgb = array($r, $g, $b);
   //return implode(",", $rgb); // gibt RGB Werte zurück (Komma getrennt)
   return $rgb; // gibt RGB Werte zurück (im Array)
}



function rgb2hex($rgb) {
   $hex = "#";
   $hex .= str_pad(dechex($rgb[0]), 2, "0", STR_PAD_LEFT);
   $hex .= str_pad(dechex($rgb[1]), 2, "0", STR_PAD_LEFT);
   $hex .= str_pad(dechex($rgb[2]), 2, "0", STR_PAD_LEFT);

   return $hex; // gibt den Hex Wert inkl. dem Zeichen (#) zurück
}

Grüße,
Chris

Ok, vielen dank für eure Antworten, damit bekomme ich das schon hin.
Ist natuerlich wieder viel Quellcode für eine kleine Sache…

Aber jetzt frage ich mich natürlich, warum die RGB Variablen weggekommen sind (ok,ich war auch jemand der gesagt hat: „brauch ich nicht“), da bin ich aber davon ausgegangen, dass ich HEX direkt schreiben kann.

Hallo,

ich habe die getrennten Farben entfernt um Variablen zu sparen. Die HexColor Variable ist mit Standardaktion hinterlegt kann also im Webfront direkt verwendet werden. Für den Zugriff über die Scripts stehen die LW12_… Funktionen zur Verfügung.
Für direktes lesen/schreiben wäre wohl eine LW12_SetRGBHex($instance, $hex) hilfreich. Ich nehme das mal auf und mache ein Update.

LG