User Tools

Site Tools


ilink_-_rgb_bulb

iLink RGB LEDBulb

The iLink, Smart Colorful Bulb MUSIC, is a Bluetooth Low Energie LED RGB Bulb.

One may send commands to handle 0x18 with request commands.

The commands are usually 7 byte long. The structure is the following:

  • The first two byte are always 55 aa.
  • The last byte is a checksum (ZZ)

Commands

Status

55aa01081506dc # returns status

  • Example: Notification handle = 0x001a value: 55 aa 09 88 15 ff b6 00 00 00 ff 01 02 00 a3 (Animation #2)
  • Color on byte 6 - 8
  • white on 9-10
  • on off on 12
  • animation on 13

Color

  • 55 aa 03 08 02 RR GG BB ZZ

Animation

  • 55 aa 01 08 06 0N ZZ
    1. Regenbogen 1
    2. Regenbogen 2
    3. Rot Herzschlag
    4. Rot Atmen
    5. Grün Atmen
    6. Blau Atmen
    7. Alarm (Rot Blau)
    8. Blink bunt
    9. Blau “Atmen”
    10. (a) Grüne Laune
    11. (b) Abendsonne

Color Brightness

  • 55 aa 01 08 01 XX ZZ
  • XX Helligkeit

White Brightness

  • 55 aa 01 08 08 XX ZZ
  • XX Helligkeit

Color Temperatur

  • 55 aa 01 08 09 NN ZZ
  • NN Stufe Farbtemperatur

ON/OFF

  • 55 aa 01 08 05 00 f2
  • 55 aa 01 08 05 01 f1

Checksum

  • The checksum is calculated the following way, but is off by 1 (calculation yields c5 for 55aa030802ff042c but the bulb expects c4)
// Source: http://easyonlineconverter.com/converters/checksum_converter.html
// Calcuate 8-bit checksum for string N
function calculate_checksum8(form, N) {
// convert input value to upper case
strN = new String(N);
strN = strN.toUpperCase();
strHex = new String("0123456789ABCDEF");
result = 0;
fctr = 16;
for (i=0; i<strN.length; i++) {
if (strN.charAt(i) == " ") continue;
v = strHex.indexOf(strN.charAt(i));
if (v < 0) {
	result = -1;
	break;
}
result += v * fctr;
if (fctr == 16) fctr = 1;
else fctr = 16;
}
if (result < 0) {
strResult = new String("Non-hex character entered");
}
else if (fctr == 1) {
strResult = new String("Odd number of characters entered. e.g. correct value = aa aa");
}
else {
// Calculate 2's complement
result = (~(result & 0xff) + 1) & 0xFF;
// Convert result to string
//strResult = new String(result.toString());
strResult = strHex.charAt(Math.floor(result/16)) + strHex.charAt(result%16);
}
form.CKS8.value = strResult;
}
function clear_facts(form) {
// Clear the checksum result field
form.CKS8.value  = " ";
}

Packets that I couldn't interpret

55aa010b0106ed # first packet on connection

55aa01081606db # returns something on connection 1x

55aa01081506dc # returns something on connection 2x

55aa01052206d2 # returns something 5x on connection

55aa01052306d1 # 2x on connection

55aa01050406f0 # returns 0x001a reading 5x on connection

55aa01050c06e8 # returns something

55aa01050806ec # return value differs only in one digit from above, 5x on connection

55aa01040406f1 # on connection (5)

55aa01041406e1 # returns something and changes val 11 and in status (only in animations)

  • changes val 7 in Regenbogen 1 and Regenbogen 2
  • on connection 5 times
ilink_-_rgb_bulb.txt · Last modified: 2017/01/29 22:03 by 00joshi