RGB Wlan Controller in IPS einbinden

Und der Controller verlangt mindesten 50ms, besser 75ms Pause Zeiten!

hi,
ich habe einen controller mit neuer firmware, der ein hx001 wlan aufspannt. seit heute.
ich glaube, dass mit etwas geduld und spucke man das auch hinbekommt.

vielleicht mal ein schneller hinweis, wo einiges zu den protokollmöglichkeiten schon gelistet ist:
-> http://www.limitlessled.com/dev/



All UDP Commands are 3 Bytes. First byte is from the list below, plus a fixed 2 byte suffix of 0x00 (decimal: 0) and 0x55 (decimal: 85)

i.e. to turn all RGBW COLOR LimitlessLED Smart lights to ON then send the TCP/IP UDP packet of:  0x42 0x00 0x55

	            Hexidecimal (byte)	 Decimal (integer)

RGBW COLOR LED ALL OFF	   0x41	           65

RGBW COLOR LED ALL ON	   0x42	           66

...

- Step 1:Send UDP message to the LAN broadcast IP address of "10.10.100.255" and port of 48899 => "Link_Wi-Fi"
- All Wifi bridges on the LAN will respond with their details. Response is "10.10.100.254, ACCF232483E8"
- Step 2: Then send "+ok" to the LimitlessLED Wifi Bridge. Send UDP message to the response IP address returned from step 1 "10.10.100.254" => "+ok"
- Step 3: After that you may send AT commands (ending with 
) to the module. And if the wifi bridge does not receive any command within 60 seconds on port 48899, the module will quit this mode, and you should do step 1 again.




kann jemand was damit anfangen?

gruss,
toz

so, erstes problem gelöst.
der Wifi-Controlloer wollte sich nicht als Client an meinem AP anmelden.
im log sah ich diese meldungen:


aemon.info hostapd: wlan0: STA ac:cf:23:32:cd:91 IEEE 802.11: Station tried to use TKIP with HT association
Nov  5 18:20:19 fo46egli2 daemon.notice hostapd: wlan0: STA ac:cf:23:32:cd:91 IEEE 802.11: did not acknowledge authentication response

dann die verschlüsselung auf AES only gestellt, und es hat geklappt…(davor natürlich einmal den wifi-controller auf defaults resettet, denn sonst kam ich nicht wieder ans web-interface…).

jetzt hat er eine ip in meinem normalen netz, jetzt guck ich mal die ports 5000 an …

so, jetzt einen nmap scan gemacht. der port 5000 tcp aus dem webinterface ist offen…
für was?
im google playstore gibts die freecolor.apk. die kann sich mit dem hx001 wlan verbinden (aber leider nicht mehr, wenn der controller als client im haus-wlan hängt.)

hat jemand ahnung von android?
man könnte ja mal in die apk reinschauen, wie die über port 5000 kommuniziert… hiermit …

https://code.google.com/p/android-apktool/wiki/Install

so, ein kleines stückchen weiter… mit dem „neuen“ LW-12 und dem hx001 wlan…

in dem led-controller steckt ein wifi-controllerbaustein HF-A11 von http://www.hi-flying.com/
eine doku kann man runterladen, ich kann die nicht anhängen, ist 2,3 mb. gibts aber hier:
https://gridconnect.box.com/shared/static/koc50zypzld4s374m2z7.pdf

die android.apk „freecolor.apk“ steuert meinen strip dann auch funktionstüchtig, bis auf die effekte. das klappt irgendwie nicht. und es geht auch nur, wenn mein android handy mit dem default wlan „hx001“ des controllers verbunden ist. ich konnte ihn ja schon über den sta(tions)-modus in mein normales wlan nehmen, aber dann klappt die apk nicht mehr. ich möchte ja sowie nicht mit der app steuern, daher muss ich mal sehen, was man an den port 5000 senden muss
im web findet sich was zum aufbau des protokolls, sowas :


 public String printHexString(byte byte0)
    {
        String s = Integer.toHexString(byte0 & 0xff);
        if (s.length() == 1)
        {
            s = (new StringBuilder(String.valueOf('0'))).append(s).toString();
        }
        return s.toUpperCase();
    }

    public void setAll()
    {
        all[0] = frameHead[0];
        all[1] = frameHead[1];
        all[2] = product;
        all[3] = product_mode;
        all[4] = static_dynamic;
        all[5] = switch_on;
        all[6] = bar_no;
        all[7] = colorRGB[0];
        all[8] = colorRGB[1];
        all[9] = colorRGB[2];
        all[10] = speed;
        all[11] = pause;
        all[12] = dynamic_mode;
        all[13] = dynamic_effect;
        all[14] = controller;
        all[15] = RGB_sort;
        all[16] = IC_number[0];
        all[17] = IC_number[1];
        all[18] = Reserve;
        all[19] = checkValue;
    }
 

kann damit jemand was anfangen? wer hat noch den neuen lw-12 …?

aha, danke für die Informationen, jetzt wird langsam Licht ^^

Die Codes die ich open postete, sind anscheinend genau die Codes die die App zum Controller schickt, und jetzt kann ich dank deiner Liste schonmal farben setzen:

echo -ne „\x9D\x62\x05\x00\x00\x00\x00\x<redHEX>\x<greenHEX>\x<blueHEX>\x00\x00\x00\x00\xF0\x60\x10\x10\x10\x08“ |socat tcp-connect:192.168.1.94:5000 -

wohlgemerkt Port 5000 weil alte Firmware

… es wird

anbei die funktionierende Version für die HW001 / Port 5000 / alte Firmware Module:

<?php


 //
 // LW12 LED Controller Library (LW12_Library) - V 1.0 BETA
 // ==============================================================
 //
 // Autor: Matthias Ziolek / 02.09.2014
 //
 // Dieses Skript beinhaltet alle Funktionen die für den Betrieb des LW12 LED Controllers nötig sind.
 //
 // Zur Nutzung des Controller muss dieses Skript an beliebiger Stelle im IPS angelegt werden und die IPS ObjektId ins "LW12_Create_Modul" eingetragen werden.
 // Die Library muss nur EINMAL im IPS vorhanden sein und kann von allen LW12 Controllern verwendet werden.
 //
 // Anpassung: Helge Laurisch (www.acumenec.de) / 07.11.2014
 
 
SetValue($_IPS['VARIABLE'], $_IPS['VALUE']);


function LW12_WriteCommand($command, $responseLength) {

	   $IP = LW12_getIp();
	   $Port = LW12_getPort();

		error_reporting(E_ALL);

		/* Create a TCP/IP socket. */
		$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
		if ($socket === false) {
		    echo "socket_create() failed: reason: " .
		         socket_strerror(socket_last_error()) . "
";
		}



		#echo "Attempting to connect to '$IP' on port '$Port'...
";
		$result = socket_connect($socket, $IP, $Port);
		if ($result === false) {
		    echo "socket_connect() failed.
Reason: ($result) " .
		          socket_strerror(socket_last_error($socket)) . "
";
		}

		$in = hex2bin($command);
		$out = '';

		echo "Command: $command 
";
		socket_write($socket, $in, strlen($in));
#		echo "OK.
";

		if ($responseLength > 0 ) {
			echo "Reading response:

";
			$out = socket_read($socket, $responseLength);
			}

		socket_close($socket);

		return bin2hex($out);
	}

function LW12_getIP() {
   $objektId = @IPS_GetObjectIDByName("!IP",  IPS_GetParent($_IPS['VARIABLE']));
		if ($objektId === false) $objektId = @IPS_GetObjectIDByName("!IP",  IPS_GetParent(IPS_GetParent($_IPS['VARIABLE'])));

	return GetValue($objektId);
	}

function LW12_getPort() {
	$objektId = @IPS_GetObjectIDByName("!TCP-Port",  IPS_GetParent($_IPS['VARIABLE']));
		if ($objektId === false) $objektId = @IPS_GetObjectIDByName("!TCP-Port",  IPS_GetParent(IPS_GetParent($_IPS['VARIABLE'])));

	return GetValue($objektId);
	}


function LW12_setPowerOn() {
	LW12_WriteCommand('9D620D00000060F0700000000050F0401010100B',0);
	}

function LW12_setPowerOff() {
	LW12_WriteCommand('9D620D00000060F0700000000050F0400010100A',0);
	}


function LW12_getStatus() {
	return LW12_WriteCommand('0000000000000000000000000000000000000000',11);
	}

function LW12_refreshIPS() {

	$status = LW12_getStatus();

	//prüfen aus welcher Ebene die Funktion gestartet wird
	if (@IPS_GetObjectIDByName("Controller-Programme", IPS_GetParent($_IPS['VARIABLE'])) === false) {
	   // Wir befinden uns in einer der Dummy-Sub-Instanzen

	   } else {
	   // wir befinden und in der obersten INstanz

	   // Farb-Event deaktivieren, Wert setzen und Event wieder aktivieren
	   $varId = IPS_GetObjectIDByName("Farbauswahl (Rot-Grün-Blau)",IPS_GetParent($_IPS['VARIABLE']));
	   $eventId = IPS_GetChildrenIDs($varId)[0];
	   IPS_SetEventActive($eventId, false);
		SetValue($varId, hexdec(substr($status,12,6)));
	   IPS_SetEventActive($eventId, true);

	   // Programm-Event deaktivieren, Wert setzen und Event wieder aktivieren
	   $varId = IPS_GetObjectIDByName("Programm",IPS_GetObjectIDByName("Controller-Programme",IPS_GetParent($_IPS['VARIABLE'])));
	   $eventId = IPS_GetChildrenIDs($varId)[0];
	   IPS_SetEventActive($eventId, false);
		SetValue($varId, (hexdec(substr($status,6,2))-hexdec(24)));
#		print ("Programm: ".(hexdec(substr($status,6,2))-hexdec(24))."
");
	   IPS_SetEventActive($eventId, true);


	   // Programm-Speed-Event deaktivieren, Wert setzen und Event wieder aktivieren
	   $varId = IPS_GetObjectIDByName("Geschwindigkeit",IPS_GetObjectIDByName("Controller-Programme",IPS_GetParent($_IPS['VARIABLE'])));
	   $eventId = IPS_GetChildrenIDs($varId)[0];
	   IPS_SetEventActive($eventId, false);
		SetValue($varId, (hexdec(substr($status,10,2))-32)*(-1));
#		print ("Programm-Speed: ".(hexdec(substr($status,10,2))-32)*(-1)."
");
	   IPS_SetEventActive($eventId, true);

		// Automatisches Programm-Event deaktivieren, Wert setzen und Event wieder aktivieren

		}

	}

function LW12_setHexRGB($rgb) {
	$command = '9D620600000060' . $rgb . '0000F000004010101006';
#	echo "
port is $Port
".$command."
";

	LW12_WriteCommand($command,0);
	}

function LW12_setDecRGB($rgb) {
	$hexrgb = dechex($rgb);
	while (strlen($hexrgb) < 6) {
	   $hexrgb = '0'.$hexrgb;
	   }

	$command = '9D620600000060' . $hexrgb . '0000F000004010101006';
#	echo "
hex: $hexrgb
".$command."
";

	LW12_WriteCommand($command,0);
	}

function LW12_PowerToggle() {
	   Switch ($_IPS['VALUE']) {
		case true:
	   	LW12_setPowerOn();
		break;
		default:
		   LW12_setPowerOff();
		}
	}


function LW12_ModeToggle() {
	   Switch ($_IPS['VALUE']) {
		case 0:
         IPS_SetHidden(IPS_GetObjectIDByName("Farbauswahl (Rot-Grün-Blau)",IPS_GetParent($_IPS['VARIABLE'])),false);
         IPS_SetHidden(IPS_GetObjectIDByName("Controller-Programme",IPS_GetParent($_IPS['VARIABLE'])),true);
         IPS_SetHidden(IPS_GetObjectIDByName("IPS-Programme",IPS_GetParent($_IPS['VARIABLE'])),true);
         if(GetValue(IPS_GetObjectIDByName("Automatisches Programm",IPS_GetObjectIDByName("Controller-Programme",IPS_GetParent($_IPS['VARIABLE'])))) == true) {
            LW12_setCtrlPrgOff();
            SetValue(IPS_GetObjectIDByName("Automatisches Programm",IPS_GetObjectIDByName("Controller-Programme",IPS_GetParent($_IPS['VARIABLE']))), false);
            LW12_setDecRGB(GetValue(IPS_GetObjectIDByName("Farbauswahl (Rot-Grün-Blau)",IPS_GetParent($_IPS['VARIABLE']))));
            }
		break;
		case 1:
         IPS_SetHidden(IPS_GetObjectIDByName("Farbauswahl (Rot-Grün-Blau)",IPS_GetParent($_IPS['VARIABLE'])),true);
         IPS_SetHidden(IPS_GetObjectIDByName("Controller-Programme",IPS_GetParent($_IPS['VARIABLE'])),false);
         IPS_SetHidden(IPS_GetObjectIDByName("IPS-Programme",IPS_GetParent($_IPS['VARIABLE'])),true);
		break;
		case 2:
         IPS_SetHidden(IPS_GetObjectIDByName("Farbauswahl (Rot-Grün-Blau)",IPS_GetParent($_IPS['VARIABLE'])),true);
         IPS_SetHidden(IPS_GetObjectIDByName("Controller-Programme",IPS_GetParent($_IPS['VARIABLE'])),true);
         IPS_SetHidden(IPS_GetObjectIDByName("IPS-Programme",IPS_GetParent($_IPS['VARIABLE'])),false);
		}
	}


function LW12_setCtrlPrg($prg) {
   $prg = dechex($prg+1);
   if (strlen($prg) < 2) $prg = "0".$prg;

   $speed = dechex(GetValue(IPS_GetObjectIDByName("Geschwindigkeit", IPS_GetParent($_IPS['VARIABLE'])))+1);
   if (strlen($speed) < 2) $speed = "0".$speed;
   $speed=substr($speed,0,1)."0".substr($speed,-1);#print "speed: $speed
";

	$effect= dechex(GetValue(IPS_GetObjectIDByName("Effekt", IPS_GetParent($_IPS['VARIABLE'])))+1);
   if (strlen($effect) < 2) $effect = "0".$effect;
	$pause="0";
	$command = '9D620000000000000000'.$speed.$pause.$prg.$effect.'000010201002';
	LW12_WriteCommand($command,0);

	}

function LW12_setCtrlPrgSpeed($speed) {
   $effect= dechex(GetValue(IPS_GetObjectIDByName("Effekt", IPS_GetParent($_IPS['VARIABLE'])))+1);
   if (strlen($effect) < 2) $effect = "0".$effect;
   $pause="0";

	$speed = dechex($speed);
   if (strlen($speed) < 2) $speed = "0".$speed;
   $speed=substr($speed,0,1)."0".substr($speed,-1);#print "speed: $speed
";
	
	$prg = dechex(GetValue(IPS_GetObjectIDByName("Programm", IPS_GetParent($_IPS['VARIABLE'])))+1);
   if (strlen($prg) < 2) $prg = "0".$prg;
	$command = '9D620000000000000000'.$speed.$pause.$prg.$effect.'000010201002';
	LW12_WriteCommand($command,0);

	}

function LW12_setCtrlPrgEffect($effect) {
	$effect = dechex($effect+1);
   if (strlen($effect) < 2) $effect = "0".$effect;
   $pause="0";

	$speed = dechex(GetValue(IPS_GetObjectIDByName("Geschwindigkeit", IPS_GetParent($_IPS['VARIABLE'])))+1);
   if (strlen($speed) < 2) $speed = "0".$speed;
   $speed=substr($speed,0,1)."0".substr($speed,-1);#print "speed: $speed
";

	$prg = dechex(GetValue(IPS_GetObjectIDByName("Programm", IPS_GetParent($_IPS['VARIABLE'])))+1);
   if (strlen($prg) < 2) $prg = "0".$prg;
	$command = '9D620000000000000000'.$speed.$pause.$prg.$effect.'000010201002';
	LW12_WriteCommand($command,0);

	}


function LW12_setCtrlPrgOn() {
	// CC 21 33
	$command = 'CC2133';

	LW12_WriteCommand($command,0);

	}

function LW12_setCtrlPrgOff() {
	// CC 20 33
	$command = 'CC2033';

	LW12_WriteCommand($command,0);

	}

function LW12_CtrlPrgToggle() {
	   Switch ($_IPS['VALUE']) {
		case true:
	   	LW12_setCtrlPrgOn();
		break;
		default:
		   LW12_setCtrlPrgOff();
		}
	}



?>



createScript:


<?

 //
 // LW12 LED Controller Install-Skript (LW12_Create_Modul) - V 1.0 BETA
 // ===================================================================
 //
 // Autor: Matthias Ziolek / 02.09.2014
 //
 // Dieses Skript legt beim Ausführen eine neue LW12 LED Controller Instanz inkl. aller Skripte/Events und ähnlichem an.
 // Bitte am Anfang dieses Skripts die ID der LW12_Library einsetzen
 //
 // Zur Nutzung des Controllers muss in der jeweiligen Instanz nur noch die richtige IP-Adresse und der richtige Port hinterlegt werden.
 //
 // Anpassung: Helge Laurisch (www.acumenec.de) / 07.11.2014


$LW12_LibraryId = 47787 /*[Library\!LW12_Library]*/;


 // Ab hier kommt der Installations-Code. Keine Änderungen in diesem Bereich vornehmen!!!

$parentId = IPS_GetParent($_IPS['SELF']);

 // Dummy Instanz anlegen

$modulId = IPS_CreateInstance("{485D0419-BE97-4548-AA9C-C083EB82E61E}");

IPS_SetParent($modulId, $parentId);
IPS_SetName($modulId, "LW12 LED Controller - ".time());

 // Variabeln anlegen
 // =================

 //!IP
$var = IPS_CreateVariable(3);
IPS_SetParent($var, $modulId);
IPS_SetName($var, "!IP");
SetValue($var, "192.168.1.92");
IPS_SetHidden($var, true);

 //!LW12_Library
$var = IPS_CreateVariable(1);
IPS_SetParent($var, $modulId);
IPS_SetName($var, "!LW12_Library_old_FW");
SetValue($var, $LW12_LibraryId);
IPS_SetHidden($var, true);

 //!TCP-Port
$var = IPS_CreateVariable(1);
IPS_SetParent($var, $modulId);
IPS_SetName($var, "!TCP-Port");
SetValue($var, 5000);
IPS_SetHidden($var, true);

 //Licht
$var = IPS_CreateVariable(0);
IPS_SetParent($var, $modulId);
IPS_SetPosition($var, 10);
IPS_SetName($var, "Licht");
SetValue($var, false);
IPS_SetVariableCustomProfile($var, "~Switch");
IPS_SetVariableCustomAction($var, $LW12_LibraryId);

		// Event anlegen
		$eventId = IPS_CreateEvent(0);               //Ausgelöstes Ereignis
		IPS_SetEventTrigger($eventId, 1, $var);      //Bei Änderung von Variable mit ID $var
		IPS_SetParent($eventId, $var);         		//Ereignis zuordnen
		IPS_SetEventActive($eventId, true);          //Ereignis aktivieren
		IPS_SetEventScript($eventId, "require(\"scripts/\".GetValue(IPS_GetObjectIDByName(\"!LW12_Library_old_FW\",  IPS_GetParent(\$_IPS['VARIABLE']))).\".ips.php\");

LW12_PowerToggle();");

 //Modus
$var = IPS_CreateVariable(1);
IPS_SetParent($var, $modulId);
IPS_SetPosition($var, 20);
IPS_SetName($var, "Modus");
SetValue($var, 0);
IPS_SetVariableCustomAction($var, $LW12_LibraryId);

		// Event anlegen
		$eventId = IPS_CreateEvent(0);               //Ausgelöstes Ereignis
		IPS_SetEventTrigger($eventId, 1, $var);      //Bei Änderung von Variable mit ID $var
		IPS_SetParent($eventId, $var);         		//Ereignis zuordnen
		IPS_SetEventActive($eventId, true);          //Ereignis aktivieren
		IPS_SetEventScript($eventId, "require(\"scripts/\".GetValue(IPS_GetObjectIDByName(\"!LW12_Library_old_FW\",  IPS_GetParent(\$_IPS['VARIABLE']))).\".ips.php\");

LW12_ModeToggle();");

		// Var Profil anlegen und zuweisen
      if (!IPS_VariableProfileExists("LW12_LED_MODE")) {
			IPS_CreateVariableProfile("LW12_LED_MODE", 1);
			IPS_SetVariableProfileValues("LW12_LED_MODE", 0, 2, 1);
			IPS_SetVariableProfileAssociation("LW12_LED_MODE", 0, "Einfarbig", "", 0x00FF00);
			IPS_SetVariableProfileAssociation("LW12_LED_MODE", 1, "Controller-Programme", "", 0x00FFAA);
			IPS_SetVariableProfileAssociation("LW12_LED_MODE", 2, "IPS-Programme", "", 0x00FF88);
			}
		IPS_SetVariableCustomProfile($var, "LW12_LED_MODE");


 //Farbauswahl
$var = IPS_CreateVariable(1);
IPS_SetParent($var, $modulId);
IPS_SetPosition($var, 30);
IPS_SetName($var, "Farbauswahl (Rot-Grün-Blau)");
SetValue($var, 0);
IPS_SetVariableCustomProfile($var, "~HexColor");
IPS_SetVariableCustomAction($var, $LW12_LibraryId);

		// Event anlegen
		$eventId = IPS_CreateEvent(0);               //Ausgelöstes Ereignis
		IPS_SetEventTrigger($eventId, 1, $var);      //Bei Änderung von Variable mit ID $var
		IPS_SetParent($eventId, $var);         		//Ereignis zuordnen
		IPS_SetEventActive($eventId, true);          //Ereignis aktivieren
		IPS_SetEventScript($eventId, "require(\"scripts/\".GetValue(IPS_GetObjectIDByName(\"!LW12_Library_old_FW\",  IPS_GetParent(\$_IPS['VARIABLE']))).\".ips.php\");

LW12_setDecRGB(GetValue(\$_IPS['VARIABLE']));");




 // Controller-Programme Dummy Instanz anlegen
 // ==========================================

$subModulId = IPS_CreateInstance("{485D0419-BE97-4548-AA9C-C083EB82E61E}");

IPS_SetParent($subModulId, $modulId);
IPS_SetName($subModulId, "Controller-Programme");
IPS_SetPosition($subModulId, 50);
IPS_SetHidden($subModulId, true);

 //Automatisches Programm
$var = IPS_CreateVariable(0);
IPS_SetParent($var, $subModulId);
IPS_SetPosition($var, 0);
IPS_SetName($var, "Automatisches Programm");
SetValue($var, false);
IPS_SetVariableCustomProfile($var, "~Switch");
IPS_SetVariableCustomAction($var, $LW12_LibraryId);

		// Event anlegen
		$eventId = IPS_CreateEvent(0);               //Ausgelöstes Ereignis
		IPS_SetEventTrigger($eventId, 1, $var);      //Bei Änderung von Variable mit ID $var
		IPS_SetParent($eventId, $var);         		//Ereignis zuordnen
		IPS_SetEventActive($eventId, true);          //Ereignis aktivieren
		IPS_SetEventScript($eventId, "require(\"scripts/\".GetValue(IPS_GetObjectIDByName(\"!LW12_Library_old_FW\",  IPS_GetParent(IPS_GetParent(\$_IPS['VARIABLE'])))).\".ips.php\");

LW12_CtrlPrgToggle();;");

//Programm
$var = IPS_CreateVariable(1);
IPS_SetParent($var, $subModulId);
IPS_SetPosition($var, 10);
IPS_SetName($var, "Programm");
SetValue($var, 1);
IPS_SetVariableCustomAction($var, $LW12_LibraryId);

		// Event anlegen
		$eventId = IPS_CreateEvent(0);               //Ausgelöstes Ereignis
		IPS_SetEventTrigger($eventId, 1, $var);      //Bei Änderung von Variable mit ID $var
		IPS_SetParent($eventId, $var);         		//Ereignis zuordnen
		IPS_SetEventActive($eventId, true);          //Ereignis aktivieren
		IPS_SetEventScript($eventId, "require(\"scripts/\".GetValue(IPS_GetObjectIDByName(\"!LW12_Library_old_FW\",  IPS_GetParent(IPS_GetParent(\$_IPS['VARIABLE'])))).\".ips.php\");

LW12_SetCtrlPrg(\$_IPS['VALUE']);");

		// Var Profil anlegen und zuweisen
      if (!IPS_VariableProfileExists("LW12_CTRL_PRGS")) {
			IPS_CreateVariableProfile("LW12_CTRL_PRGS", 1);
			IPS_SetVariableProfileValues("LW12_CTRL_PRGS", 1, 20, 1);
			}
		IPS_SetVariableCustomProfile($var, "LW12_CTRL_PRGS");

//Geschwindigkeit
$var = IPS_CreateVariable(1);
IPS_SetParent($var, $subModulId);
IPS_SetPosition($var, 10);
IPS_SetName($var, "Geschwindigkeit");
SetValue($var, 1);
IPS_SetVariableCustomAction($var, $LW12_LibraryId);

		// Event anlegen
		$eventId = IPS_CreateEvent(0);               //Ausgelöstes Ereignis
		IPS_SetEventTrigger($eventId, 1, $var);      //Bei Änderung von Variable mit ID $var
		IPS_SetParent($eventId, $var);         		//Ereignis zuordnen
		IPS_SetEventActive($eventId, true);          //Ereignis aktivieren
		IPS_SetEventScript($eventId, "require(\"scripts/\".GetValue(IPS_GetObjectIDByName(\"!LW12_Library_old_FW\",  IPS_GetParent(IPS_GetParent(\$_IPS['VARIABLE'])))).\".ips.php\");

LW12_SetCtrlPrgSpeed(\$_IPS['VALUE']);");

		// Var Profil anlegen und zuweisen
      if (!IPS_VariableProfileExists("LW12_CTRL_PRGS_SPEED")) {
			IPS_CreateVariableProfile("LW12_CTRL_PRGS_SPEED", 1);
			IPS_SetVariableProfileValues("LW12_CTRL_PRGS_SPEED", 1, 31, 1);
			}
		IPS_SetVariableCustomProfile($var, "LW12_CTRL_PRGS_SPEED");


//Effekt
$var = IPS_CreateVariable(1);
IPS_SetParent($var, $subModulId);
IPS_SetPosition($var, 10);
IPS_SetName($var, "Effekt");
SetValue($var, 1);
IPS_SetVariableCustomAction($var, $LW12_LibraryId);

		// Event anlegen
		$eventId = IPS_CreateEvent(0);               //Ausgelöstes Ereignis
		IPS_SetEventTrigger($eventId, 1, $var);      //Bei Änderung von Variable mit ID $var
		IPS_SetParent($eventId, $var);         		//Ereignis zuordnen
		IPS_SetEventActive($eventId, true);          //Ereignis aktivieren
		IPS_SetEventScript($eventId, "require(\"scripts/\".GetValue(IPS_GetObjectIDByName(\"!LW12_Library_old_FW\",  IPS_GetParent(IPS_GetParent(\$_IPS['VARIABLE'])))).\".ips.php\");

LW12_SetCtrlPrgEffect(\$_IPS['VALUE']);");

		// Var Profil anlegen und zuweisen
      if (!IPS_VariableProfileExists("LW12_CTRL_PRGS_EFFECT")) {
			IPS_CreateVariableProfile("LW12_CTRL_PRGS_EFFECT", 1);
			IPS_SetVariableProfileValues("LW12_CTRL_PRGS_EFFECT", 1, 31, 1);
			}
		IPS_SetVariableCustomProfile($var, "LW12_CTRL_PRGS_EFFECT");


?>


Farbe setzen, Modus, Speed und Effekt geht … ein/aus auch … anscheinend liefern die controller jedoch keinen status zurück.
Im Unterschied zur originalen Version, muss eine zusätzliche „Effekt“ Variable angelegt werden, ist im beigefügten create script schon implementiert.

:open_mouth: :open_mouth: :open_mouth:

http://www.hi-flying.com/download_list_fir/&downloadcategoryid=1b2c7c75-a1a4-4a5d-800c-371d4d5a1b29&isMode=false&comp_stats=comp-FrontDownloadsCategory_show01-1376450727769.html

Hier kann man doch die Firmware 4.02.11T.15 runterladen!

Hat noch keiner Versucht die auf den Controller zu spielen ?! Damit bräuchte man doch gar nicht
weiter testen ?

hm, ich hab wie gesagt eh 6 Stück hier, ich probier das mal aus …

Hi,

Vorsicht, dies ist anscheinend die Firmware des verwendeten Funkmodules, vermutlich NICHT die des ansteuernden Controlers.

mfg

BerndJ

@downlord

ich mache mit meinem „neuen“ lw-12 das hier:


 echo -n -e "\x9d\x62\x00\x00\x00\x00\x00\xf0\x00\xc0\x00\x00\xf0\x00\xf0\xc0\x10\x10\x10\x0d" | nc 192.168.14.47 5000
pi@raspberry-ir ~ $ echo -n -e "\x9d\x62\x00\x00\x00\x00\x00\xf0\x00\xc0\x00\x00\xf0\x00\xf0\xc0\x10\x10\x10\x0d" | nc 192.168.14.47 5000
pi@raspberry-ir ~ $ echo -n -e "\x9d\x62\x00\x00\x00\x00\x00\xf0\x00\xc0\x00\x00\xf0\x00\xf0\xc0\x10\x10\x10\x0d" | nc 192.168.14.47 5000
pi@raspberry-ir ~ $ echo -n -e "\x9d\x62\x00\x00\x00\x00\x00\xf0\x00\xc0\x00\x00\xf0\x00\xf0\xc0\x10\x10\x10\x0d" | nc 192.168.14.47 5000
pi@raspberry-ir ~ $ echo -n -e "\x9d\x62\x00\x00\x00\x00\x00\xf0\x00\xc0\x00\x00\xf0\x00\xf0\xc0\x10\x10\x10\x0d" | nc 192.168.14.47 5000
pi@raspberry-ir ~ $ echo -n -e "\x9d\x62\x00\x00\x00\x00\x00\xf0\x00\xc0\x00\x00\xf0\x00\xf0\xc0\x10\x10\x10\x0d" | nc 192.168.14.47 5000
pi@raspberry-ir ~ $ echo -n -e "\x9d\x62\x00\x00\x00\x00\x00\xf0\x00\xc0\x00\x00\xf0\x00\xf0\xc0\x10\x10\x10\x0d" | nc 192.168.14.47 5000

aber es tut sich nix. obwohl ich die byte-sequenz genauso mit tshark auf dem gerooteten android mitgeschnitten habe, wenn ich mit der freecolor.apk gesteuert habe. hast du eine alte (?) oder neue (?) firmware?

ich dachte, neu wäre das hx001 wlan und der default-port 5000. der ‚alte‘ lw-12 hat andere ports (8999), andere passwörter und andere default-wlans. ist das nicht richtig?

Oder: mache ich einen fehler beim ansteuern von linux aus? ich habe im web noch teile des source aus der freecolor.apk gefunden. vielleicht muss da noch ein kenner mal reinschauen? oder in meine dumps?

ich würde gerne einfach mit echo „…“ von linux aus mal ein/aus schalten. hat jemand eine kleine hilfe für mich?

danke und gruss,
toz

ps: ich habe beim umschalten auf station-mode und einbindung in mein eigenes wlan „transparent“ angelassen? ist das vielleicht falsch, so dass die echo-commandos nicht an den internen LED-contoller-einheit gehen, sondern ich jetzt über port 5000 den wlan-controller steueren könnte? hat jemand damit erfahrung gemacht - und einen tip?

Ich habe gestern 2 verschiedene Firmware Files getestet.

Die HFA-11 und die HF-A11 SMT. Es scheint wirklich so, dass dir Firmware nur die Firmware
des Wlan Moduls betrifft.

Die HF-A11 SMT Firmware ist die gleiche wie auf meinen Funktionierenden Controllern. Steuern
konnte ich die Module damit allerdings auch nicht.

Also ich glaube eher dass die Anzeigen HX001 mit Port 5000 und HW001 mit Port 8899 die Alten
sind und LEDXXX mit Port 5577 die Neuen!

hi,
mein controller war über nacht vom netz getrennt, nach einschalten der stromversorgung sprang er nicht in die alte farbe, sonder war aus. vielleicht, weil ich gestern einige on/off sequenzen versucht hatte, die durch an/aus aktiv wurden? komisch?
dann habe ich meine echo-sequenzen versucht, um ihn einzuschalten. erst ging nix, dann sprang er an.
nachdem ich das sechste byte (on/off) auf 1 gesetzt hatte (\x01). allerding schaltet er mit 0 (\x00) nicht aus. das war komisch. dann habe ich die sequenz von downlord probiert

echo -ne „\x9D\x62\x05\x00\x00\x00\x00\x<redHEX>\x<greenHEX>\x<blueHEX>\x00\x00\x00\x00\xF0\x60\x10\x10\x10\x08“ |socat tcp-connect:192.168.1.94:5000 -

wohlgemerkt Port 5000 weil alte Firmware

das klappt. ich kann die farben ändern. mein lw-12 war beim kauf allerdings als ‚neue firmware‘ markiert, hat per default hin hx001 wlan und ist auf port 5000 eingestellt. ich denke, das ist ein neuer? die freecolor.apk kann ihn auch steuern, wenn man im hx001 wlan ist. der gepostete protokoll-aufbau gehört dazu. das ist doch der neue aufbau, oder ist das der protokollaufbau für die ‚alte‘ firmware? man müsste mal ein genaues kriterium für alt/neu finden…
diese lw-12 controller scheinen auch in diversen spielarten aus china zu kommen. ich habe mehrere unterschiedliche anleitungen gefunden, in denen divers passwort/port/wlan-kombinationen genannt waren …

AN/AUS:
hat jemand einen hinweis, was man senden muss, um die stripes ein/aus zuschalten? ich hatte das geschickt:


 echo -n -e "\x9d\x62\x00\x00\x00\x01\x00\xf0\x00\xc0\x00\x00\xf0\x00\xf0\xc0\x10\x10\x10\x0d" | nc 192.168.14.47 5000

dann sprang mein controller an. aber war wirklich byte nummer sechs dafür zuständig? mache ich einen denkfehler, und ist der protokollaufbau doch leicht anders?

—kleiner nachtrag:
wenn ich das sende:


echo -n -e "\x9d\x62\x00\x00\x00\x01\x00\xff\xff\xff\x00\x00\xf0\x00\xf0\xc0\x10\x10\x10\x0d" | nc 192.168.14.47 5000

dann flackern die LEDs ganz kurz. egal ob byte sechs auf 0 oder 1 steht. also ob ich die LEDs nochmal einschalte, obwohl sie schon leuchten. komisch. wenn ich die farbwerte ändere, dann klappt das. ich kann die farben steuern.
aber was muss man senden, um die LEDs auszuschalten? andere checksum?.. hmmm???

—kleiner nachtrag2: probieren geht über studiern…
einfach mal ein paar werte geändert und ein paar bytes gefunden…
byte sieben (also vor den farbwerten) ist die helligkeit, und das vierte von hinten (also nr.17) ist, tattttaahhh: ON/OFF

Ob alt/neu ist ja auch egal :wink:

Die LEDXXX Version vom Anfang des Threads ist auf jeden fall voll funktionstüchtig und tut das was Sie soll :wink:

Wir wollen ja „nur“ noch unsere vorhandenen HX001 an laufen bringen :smiley: Auf welchem Weg auch immer!

Gibt es denn Versionen, die sich bislang nicht steuern lassen? Möchte mir ca. 10 Controller anschaffen… Worauf muss ich achten? Wäre für Hinweise wirklich dankbar!

mein controller sieht von aussen auch so aus, wie am anfang des threads.
habe aber ein anderes wlan als default, andere user/passwd und port 5000 …
offensichtlich beziehen sich die firmwareversionen auf das darin verbaute wlan modul und sind egal(?) für die ansteuerbefehle des LEDs. oder? also, meiner geht mit den echo-sequenzen. die sache mit dem protokoll-array schaue mich mir nochmal an. ich hatte allerdings irgendwie hier den eindruck, dieser lw-12 existiert zwar immer im gleichen gehäuse, aber jemand braucht für die ansteuerung des LEDs andere steuerbefehle (also hat eine neue LED-firmware). vielleicht auch nur ein missverständnis, weil er was nicht hinbekommen hat?

Also wie gesagt, ich habe die LEDXXX - Version funktionsfähig im Einsatz.

Die HX001 Version funktioniert bei mir bisher nicht!

Wenn du wissen willst wer, meine Bezugsquelle in DE war, kannst Du bei mit per PN anfragen.
Die HX001 hatte ich aus China!

Hallo Gosef,
ich habe ein HX001-Version (kennung des wlan), user: admin,pwd:admin, port 5000
freecolor.apk funktioniert, und die echo-sequenzen (zuvor gepostet) jetzt auch. Bezug über amazon.

Was geht denn bei dir nicht?

Hier mal ein Bild von Innenleben:

Hi,

ich hatte den HX001 ursprünglich auch aus China bezogen. Wie ein Kollege auch. Nach einigem Testen hab
ich das Gerät auch mit Freecolour an rennen gebracht. Aber nie mit eigenem Wlan und IPSymcon.

Gestern hab ich dann die unterschiedlichen Wlan Firmware Files ausprobiert. Aber nach wie vor zeigt
der Controller keine Reaktion auf diese letzte Scriptversion für den Port 5000. Auch Anpassungen an 5577 und 8899
haben keinerlei Erfolg gebracht!