Wifilight.pm

Begonnen von herrmannj, 18 Januar 2014, 04:10:07

Vorheriges Thema - Nächstes Thema

ichichich

#915
Hallo herrmannj,

Ich benutze einen LW12 und die Wifilight.pm. Leider habe ich da noch 8 weitere HX001 die ich gerne auch mit ansteuern möchte. Ich weiß die funktionieren nicht, da das Protokoll anders ist als beim LW12. Aber ich hab mal in den APP-Sourcecode fom FreeColor.apk geschaut, und folgendes Protokoll ermittelt:

 
  void HX001_exchangeInt(int[] var1)
  {
    int var2 = var1[0];
    int var3 = var1[1];
    var1[0] = (var2 & 240) + ((var3 & 240) >> 4);
    var1[1] = ((var2 & 15) << 4) + (var3 & 15);
  }

  void HX001_setCurCheckValue(byte[] sendData, int var1, int var2, int var3, int var4, int var5, int var6)
  {
    var1 = var6 + var5 + var4 + var3 + var2 + var1 + 255;
    if (var1 != 0) {
      var1 = var1 % 255;
      if (var1 == 0)
          var1 = 255;

      sendData[19] = (byte) var1;
    }
  }

  void HX001_exchangeBytes(byte[] sendData) {
    int[] var1 = new int[2];

    for (int var2 = 2; var2 < 11; ++var2) {
      var1[0] = sendData[var2];
      var1[1] = sendData[21 - var2];
      HX001_exchangeInt(var1);
      sendData[var2] = (byte) var1[0];
      sendData[21 - var2] = (byte) var1[1];
    }
  }
 
  //
  // im Returnarray sind jetzt die Daten die zum TCP-Port 5000 gesendet werden sollen.
  //
  byte[] HX001_newSendData(byte switch_on, byte dim, byte colorR, byte colorG, byte colorB)
  {
    byte[] sendData = new byte[20];
    sendData[0] = 0x9D; // frameHead[0]
    sendData[1] = 0x62; // frameHead[1]
    sendData[2] = 0x00; // product
    sendData[3] = 0x01; // product_mode
    sendData[4] = 0x01; // static_dynamic
    sendData[5] = switch_on;           //  Power: 0x01 = ein, 0x00 = aus
    sendData[6] = dim;                   //  Dim: 0x00 - 0x64
    sendData[7] = colorR;              //  R: 0x00-0xFF
    sendData[8] = colorG;              //  G: 0x00-0xFF
    sendData[9] = colorB;              //  B: 0x00-0xFF
    sendData[10] = 0x00; // speed
    sendData[11] = 0x00; // pause
    sendData[12] = 0x00; // dynamic_mode
    sendData[13] = 0x00; // dynamic_effect
    sendData[14] = 0x00; // controller
    sendData[15] = 0x00; // RGB_sort
    sendData[16] = 0x00; // IC_number[0]
    sendData[17] = 0x00; // IC_number[1]
    sendData[18] = 0x00; // Reserve

    HX001_setCurCheckValue(sendData, sendData[6], sendData[7], sendData[8], sendData[9], sendData[5], sendData[3]);
    HX001_exchangeBytes(sendData);
   
    return sendData;
  }

Leider kann ich kein Perl.

Der TcpIP-Port ist 5000.

Könnte man den Code vom Wifilight.pm um die Fähigkeit des HX001 erweitern mit den Funktionen/Parametern von LW12?

Wäre nett wenn das drinn wäre.

Gruß Uwe

herrmannj

Hi,

Danke für die Vorarbeit. Klasse !. Ist der HX001 dieser ominöse LW12 (clone?). Hast Du den in Dein Netz bekommen ?

Der code den Du geschickt hast sieht auf den ersten Blick so aus das ich damit den HX001 gut einarbeiten kann. Mir ist die Funktion des dim-byte nicht sofort klar, da müssen wir evtl ausprobieren. Hast Du zusätzlich die Möglichkeit einige Sequenzen zu sniffen ? Die checksum und das byteswap sind keine Hexenwerk, bieten aber Raum für Programmier-Fehler. Wenn ich da eine gesniffte Vorlage habe würde das den Test verkürzen.

Acht Stück sind ja gleich eine Menge, gibt es den irgendwo im Angebot ? Ich nehme den in das Wifilight Modul, einen Tester hab ich ja  ;)

btw: Ich habe Wifilight gerade um diese beiden Topdevice (ernsthaft) erweitert und bin imTestlauf:
(http://www.xcsource-pic.com/LD382-07.jpg)
Dieser LED controller ist als LD382, Xcsource bzw LED magic UFO erhältlich und stammt aus der gleichen Familie wie der LW12. Aktuell kann man den für unter 25,-€ zu (ebay, neu) bekommen. Im Prinzip kann man den als LW12 Nachfolger ansehen. Er unterstützt alle Funktionen des LW12 PLUS einem extra white channel. Damit lassen sich RGBW stripes ansteuern, RGB stripes plus extra white stripe oder reine RGB stripes. Ich betreibe ihn an einem RGBW stripe, werde aber auch einen reinen RGB Mode in das Modul nehmen damit vorhandene stripes 1:1 weiterverwendet werden können. Der controller hat einen WPS button. Getestet an einer fb7390, absolut einfach ins Netz zu nehmen.
Sollte jemand aktuell eine Neuanschaffung planen: anstelle des LW12 unbedingt diesen in Betracht ziehen

Nummer #2 ist diese E27 LED Bulb (Wifi)
(http://116.48.144.24:8888/Amazon/LD316-03.jpg?20141206)
Die Bulb unterstützt ebenfalls full RGB und hat zusätzlich eine sehr helle White LED. Der Wifi Controller ist direkt in der bulb, eine spezielle zusätzliche bridge ist daher nicht erforderlich. Preis aktuell knapp unter 30,-. Hier ist mir nur die Bezeichnung XCSOURCE LD316 bekannt. Vermutlich aufgrund der beschränkten internen powersource ist hier full RGB (mix) oder white möglich. Wifilight schaltet die beiden Modi allerdings fast nahtlos um und die white LED ist ein grosser Vorteil. Die bulb arbeitet sowohl als Stimmungsbeleuchtung sowie auch als "normale" Zimmerbeleuchtung einwandfrei (Tip kann von user freddy, nochmal Danke).

In dem Zusammenhang habe ich den RGB Mischer im Modul komplett überarbeitet. Damit sind jetzt reine RGB Stripes (LW12, LD382 im RGB mode, bald auch HX001) in der Lage brauchbares warm-white Licht zu erzeugen. Außerdem kann jede bulb / stripe einzeln kalibriert werden. Dadurch kann man problemlos einen abgestimmten Mischbetrieb über die verschiedensten Hersteller (controller, stripe) fahren. Sobald der Test durch ist werde ich im Zuge des updates die Kalibrierung nochmal detailliert beschreiben.

last but not least: in den letzten Tagen habe ich plötzlich wieder Rückfragen zu dem "Rückkanal" des LW12 bekommen wobei sich scheinbar und fälschlich Gedanken zur Übertragungssicherheit damit vermischen. Der LW12, LD316, LD382 (und bald auch der HX001) werden (anders als milight) bidirektional angesprochen. (Bei den milight würde das auch keinen Sinn machen weil die einzelnen Lampen nur über Empfänger verfügen, also per se nicht antworten können. ) Die LW.., LD... Familie bestätigt den Erhalt einen Befehls mit einem ACK. Wenn das ausbleibt wird der Befehl erneut versendet (das macht der TCP stack). Zusätzlich überwacht das Modul unternimmt auch noch mal einen zweiten Versuch.

Der "Rückkanal" ist ein feature des LW12 über den die App zB beim Start den LW12 fragt welche Farbe er gerade darstellt um das entsprechende auf dem Bildschirm darzustellen. Das muss die app aktiv beim controller anfragen. Im context von fhem würde das bedeuten das fhem dem controller sagt er möge bitte rotes Licht mit 80% machen, ihn anschließend fragt "was machst Du gerade" und dann überrascht zur Kentniss nimmt das der controller rotes Licht mit 80% macht. Auf die Zuverlässigkeit der Übertragung von Daten zum controller hat das keinen Einfluss, da ist das Netzwerk zuständig.

viele Grüße
Jörg

noice

Hallo herrmann .. ich besitze auch einen hx001 Controller .... nur zur Info
BananaPI, RaspberryPi+AddonBoard,HMLAN,  miniCUL 433,nanoCUL 433,nanoCUL868,FHEMduino 433, Jeelink clone diverse Homematic, FS20, MAX, TFA und IT Komponenten.
10" Tablet mit andFhem, Daitem D14000

herrmannj

oi, zwei tester :-) Hast Du Lust ein zwei sequenzen zu sniffen ? Wird denn jetzt immer der HX001ausgeliefert ?

vg
jörg

noice

Nee War ein fehlkauf... funktioniert aber mit ner handyapp. .. ich kann es morgen mal probieren... hab noch irgendwo nen Router womit ich ein eigenes Netz aufbauen kann
Gruß mirko
BananaPI, RaspberryPi+AddonBoard,HMLAN,  miniCUL 433,nanoCUL 433,nanoCUL868,FHEMduino 433, Jeelink clone diverse Homematic, FS20, MAX, TFA und IT Komponenten.
10" Tablet mit andFhem, Daitem D14000

herrmannj

ZitatNee War ein fehlkauf.
kann ja noch alles gut werden. Zum sniffen geh ich bei device die AP könne (eigenes Netz machen) so vor:

Ich lass das Ding ein unverschlüsseltes Netz aufmachen, häng den steuerer rein (hier app) und geh mit dem NB mit in die dann unverschlüsselte Verbindung. Dat jeht recht easy, router iss immer nur im weg ...

vg
jörg

Pythonf

Zum Thema das Rückkanals des LW12:
Wer interesse an den einzelnen Modi und dem Rückkanal des LW12 und weiteren LW12 spezifischen Funktionen hat, sollte sich den Thread zum http://forum.fhem.de/index.php/topic,16130.0.html wifiled modul anschauen. Dort ist es gelungen, den Rückkanal des LW12 erfolgreich einzusetzten. Das Modul ist noch nicht vollständig diesbezüglich fertig geschrieben, aber es schaut bis dato recht vielversprechend aus.

Grüße
Fabian

ichichich

#922
Zitat von: herrmannj am 06 Dezember 2014, 23:09:09
Hi,

Danke für die Vorarbeit. Klasse !. Ist der HX001 dieser ominöse LW12 (clone?). Hast Du den in Dein Netz bekommen ?

... Mir ist die Funktion des dim-byte nicht sofort klar, da müssen wir evtl ausprobieren. Hast Du zusätzlich die Möglichkeit einige Sequenzen zu sniffen.
...

viele Grüße
Jörg

Hallo Jörg,

Ja, habe den HX001 ins Netz an eine FB bekommen, wichtig ist nur das man in der FB und HX001 AES bei WPA2PSK einstellt, sonst bekommt man kein Connect.

Sequenzen zu sniffen: Ja, kann ich, ich habe die APP FreeColor.apk decompiliert, und kann sie wieder verändert auf meinem Handy debuggen. Zum sniffen baue ich da mal ein paar Debugzeilen ein. Einen Tester hast du auf jeden Fall.

Vielen Dank nochmal für dein Wifilight.pm.

Grüße Uwe

herrmannj

Hi Uwe,

ZitatSequenzen zu sniffen: Ja, kann ich, ich habe die APP FreeColor.apk decompiliert, und kann sie wieder verändert auf meinem Handy debuggen. Zum sniffen baue ich da mal ein paar Debugzeilen ein. Einen Tester hast du auf jeden Fall.
Yepp, das wäre sehr hilfreich. Ich brauche die Zuordnung einer Aktion zum output, also am besten

"on" -> 0x....
"RGB: FFFFFF" -> 0x...

Muss gar nicht viel sein, ich möchte nur für die checksum und den byteswap den output vom Modul gegen gegen wenige realworld verifizieren.

Du scheinst gut in android unterwegs zu sein ? Auch IOS und wp8 ?

vg
jörg

ichichich

#924
Bevor Fragen zum HX001 kommen hier ein paar Infos:
Werkseinstellung:
- Werkseinstellung durch drücken der Resettaste im Gehäuse (3sec), ausschalten dann wieder einschalten
- user/passwort   admin/admin
- macht ein AP mit der SSID HX001 auf
- WLAN ist bei Werkseinstellung nicht verschlüsselt!
- es funktioniert nur die APP FreeColor.apk
- feste IP 192.178.2.2 (lässt sich in WEB-UI ändern)

Sonstige Info:
- Serieller COM-Port auf IP-Port 5000 (ein Mircroprozesser an diesem COM-Port macht dann die eingendliche RGB-Pwm-Steuerung)
- das HX001 läst sich an einem WLAN Router betreiben (siehe Beitag zwei vor), dann funktioniert aber FreeColor.apk nicht mehr da es mit der festen IP und SSID (HX*) arbeitet
- Beschreibung Wifi-Modul http://jsledpower.com/images/controller/HM-12RGB4A3-WF-1.pdf
- Preis ca. 24,99 Euro
- Protokollbeschreibung siehe Protocol.java

Gruß Uwe

herrmannj

ich nehm den mit folgender Signatur auf, ok ?
define <name> WifiLight RGB LW12HX:ip

vg
jörg

ichichich

Hallo Jörg,

ja, LW12HX hört sich gut an. Anbei diverse Logs.

Der Dim Wert (0-100% Helligkeit) ist eigendlich unnötig, kann man ja mit den RGB-Werten auch realisieren.

Die APP FreeColor macht alle 10sec ein Überlebensdialog zum HX001, ich glaube den braucht die APP ob sie noch online zum HX001 ist. Wir hier im FHEM kommen ohne aus. Der Überlebensdialog sieht so aus:
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00

Gruß Uwe

herrmannj

el perfekto  8) Danke !

ich komm erst später dazu (die family ruft, zu Recht).

Ich schau mal ob ich den Zusammenhang zwischen "on", "dim" und "RGB" aus den logs rauslesen kann, ist echt irgendwie voll doof doppelt gemoppelt ...

Ist der HX001 jetzt "neuer" oder "älter" als der normale lW12 ?

vg
jörg

ichichich

#928
Hallo,

keine Ahnung ob jünger oder älter:

erste Notiz LW12 23.4.2013 http://www.enledcontroller.com/article/show/21.aspx.
erste Notiz HX001 nach meiner Bestellung aus China am 11.11.2014 :'( , die Dazugehörige APP am 4. November 2013 veröffentlicht (google Play)

Nein, kann keine APP für iOS schreiben, bin nur auf Android, Linux, Windows, WinCE, ARM-Microcomputer mit C, C++, ASM und Java unterwegs.

Gruß

DerSeher

Danke für die Unterstützung!

Läuft jetzt mit dem Rot und Blau.

Wenn ich jetzt analog Seite 2 dieses Themas vorgehe:

define test notify test:on {fhem "set TVTisch HSV 0,100,100 1"; fhem "set TVTisch HSV 0,100,0 1 q"}

erhalte ich die Fehlermeldung: Unknown command fhem

In Fhem übernimmt er dann nur den ersten Part in der Klammer. Alles übernimmt er nur, wenn ich den ";" weglasse.
Bei Eingabe "trigger test on" passiert gar nichts.

Habe ich da was falsch gemacht? War ja quasi nur kopiert und eingefügt ....

Grüße