H801Wifi günstige RGBWW Strip Ansteuerung mit WLAN

Begonnen von Glarios, 23 Oktober 2015, 13:26:12

Vorheriges Thema - Nächstes Thema

RaspiLED

Hi,
die 801er spannen nach dem ersten Einschalten ein WLAN auf.
Die SID ist HCX_xxyyzz mit xxyyzz als letzte drei MAC Stellen.
Oder man schaut in der Fritzbox nach  ;) nachdem man die H801 mit der Android App in das eigene WLAN gehangen hat.
Gruß Arnd
Raspberry Pi mit FHEM, CUL, Signalduino, MySensors, HomeBridge, Presence, WifiLight2, Bravia, ...

herrmannj

Muss man denn in die App die MAC eingeben ? Ich vermute das gibt es ein discovery

vg
joerg

RaspiLED

Hi,
Davon gehe ich auch aus, habe aber den WLAN Verkehr bisher nicht mitgeschnitten und analysiert.
Meine beiden finde ich per nmap über deren MAC 18:FE:34:D6:59:FB und 18:FE:34:D6:5B:27. Insofern reicht ein Scan und Analyse auf die erste Hälfte. Allerdings gehe ich davon aus, das andere ESPs im Netz ebenfalls so starten könnten.
Gruß Arnd

Hier mal ein Auszug von nmap:

sudo nmap -A 192.168.178.118

Starting Nmap 6.47 ( http://nmap.org ) at 2016-02-09 22:28 CET
Nmap scan report for LampeTest.fritz.box (192.168.178.118)Host is up (0.040s latency).
All 1000 scanned ports on LampeTest.fritz.box (192.168.178.118) are closed
MAC Address: 18:FE:34:D6:5B:27 (Espressif)
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Aggressive OS guesses: 2N Helios IP VoIP doorbell (95%), British Gas GS-Z3 data logger (95%), Grandstream GXP1105 VoIP phone (95%), LaSAT satellite receiver (95%), lwIP 1.4.0 lightweight TCP/IP stack (95%), Philips Hue Bridge (lwIP stack v1.4.0) (95%), Luminary Micro ARM Evaluation Kit (95%), m3 muvid IR 715-2 Internet radio receiver (95%), NOXON digital radio (95%), Roberts STREAM 202 Internet radio (95%)
No exact OS matches for host (test conditions non-ideal).
Network Distance: 1 hop

TRACEROUTE
HOP RTT      ADDRESS
1   40.49 ms LampeTest.fritz.box (192.168.178.118)

OS and Service detection performed. Please report any incorrect results at http://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 121.67 seconds
Raspberry Pi mit FHEM, CUL, Signalduino, MySensors, HomeBridge, Presence, WifiLight2, Bravia, ...

RaspiLED

#18
Hallo,

so ich habe jetzt die FritzBox befragt und folgendes Ergebnis bekommen:

Verwendete wireshark Display Selektionen:
# Nur Pakete des Android Handys mit der App LEDDimmer
ip.src ==192.168.178.153
# Nur die relevanten versendeten UDP Pakete
ip.src ==192.168.178.153 && udp.port==30977
# Nur die Antworten der H801 selektieren
ip.src ==192.168.178.64
ip.src ==192.168.178.118

Selektierte Pakete (Doppelte nur einfach) siehe Dateianhang.

Zusammengefasst:
Es werden mehrfach UDP Anfragen an Port 30977 an 192.162.178.255 (Broadcast) mit Inhalt "fb:e9:00:14:00:00:00" versendet.

Daraufhin melden sich bei mir zwei H801 mehrfach mit der UDP Antwort an Port 30978 an 192.162.178.255 (Broadcast) mit den folgenden Inhalten:

fa:ea:00:00:fb:59:d6:00:0d:43:6f:6e:74:72:6f:6c:6c:65:72:5f:57:5a:de:2c:7a:84:d6:78:62:f6:8b:8e:f9:b5:00:40:08:00:00:00:38:00:00:00:90:f8:ff:3f:08:00:00:00:90:f8:ff:3f:09:6e:3d:00:44:c5:a7:66:a9:da:b9:cd:f4:ef:dc:e6:56:d9:74:74:48:01:77:f8:01:75:c4:2c:45:b1:17:aa:99:0d:85:3a:8a:ed:87:01:fa:53:3d:04:1b:5e:46:d8:e5:ba:0f:ff:fa:62:9b:14:66:cf:b1:8b:fb:55:31:c5:f8:25:bb:a7:b6:61:7e:b8:bd:a7:76:72:ea:9a:12:59:e5:6f:e7:36:e8:6f:ba:ef:b8:f4:cf:c4:d3:92:d9:2c:13:18:7d:de:3c:b3:f0:dc:44:b7:d0:65:d7:a9:28:c2:0b:59:13:fd:33:15:91:70:2e:b6:00:40:ce:7d:4b:80:1f:f4:ae:f8:ae:48:22:10:c4:b6:00:40:90:f8:ff:3f:20:fa:ff:3f:ff:ff:ff:ff:2e:b7:00:40:70:f8:ff:3f:08:00:00:00:a5:f7:f2:c3

fa:ea:00:00: ist der Header
fb:59:d6: sind die relevanten drei Tuppel der MAC
00:0d: ist ein Zwischenheader
43:6f:6e:74:72:6f:6c:6c:65:72:5f:57:5a: ist der Name des WLANs des H801 "Controller_WZ"

bzw.

fa:ea:00:00:27:5b:d6:00:0f:43:6f:6e:74:72:6f:6c:6c:65:72:5f:54:65:73:74:27:74:8e:f9:e6:b9:39:a3:f9:b5:00:40:08:00:00:00:38:00:00:00:90:f8:ff:3f:08:00:00:00:90:f8:ff:3f:9b:18:66:34:97:44:08:38:a1:dc:27:79:f0:ec:93:bc:c6:5f:70:df:37:c9:58:b9:ac:ca:d4:5d:04:d9:5d:82:97:7e:86:59:f3:97:fa:c0:c3:58:cb:9e:b1:cd:51:59:54:04:66:93:0d:ec:2a:be:c6:5a:c5:2e:50:38:82:d1:48:91:39:41:ad:8d:9c:18:d1:ad:c1:5e:84:e0:17:3d:c7:77:9f:e4:e3:82:aa:3d:f9:38:9f:21:bb:26:51:fb:7a:c7:c4:80:dd:3b:88:b6:c1:d5:a8:97:e6:0f:28:61:df:9f:1f:bd:12:c7:4f:b2:2e:b6:00:40:ce:7d:4b:80:1f:f4:ae:f8:ae:48:22:10:c4:b6:00:40:90:f8:ff:3f:20:fa:ff:3f:ff:ff:ff:ff:2e:b7:00:40:70:f8:ff:3f:08:00:00:00:a3:8b:c3:ff

fa:ea:00:00: ist der Header
27:5b:d6: sind die relevanten drei Tuppel der MAC
00:0f: ist ein Zwischenheader
43:6f:6e:74:72:6f:6c:6c:65:72:5f:54:65:73:74: ist der Name des WLANs des H801 "Controller_Test"

Rest ist mir noch unklar.

Gruß Arnd Baumgarten
Raspberry Pi mit FHEM, CUL, Signalduino, MySensors, HomeBridge, Presence, WifiLight2, Bravia, ...

herrmannj

ich frag mich noch ob sich der Aufwand lohnt.

In der Bastelecke entwickelt mprj gerade einen led controller auf 8266 Basis der danan auch die fades direkt im controller machen soll.

Vlt einfach abwarten, die Zeit bis dahin gut investieren und die fw die da rauskommt über den H801 flashen ?

Maiks hat ja eine basic Ansteuerung. parallel kann ich das ja im Auge behalten, ich mach gerade größere Anpassungen bei Wifilight. Vieleicht sehe ich einen Weg das discovery einfach mit reinzubekommen. Stand heute passt das so nicht so gut. Der Controller wird heute per IP definiert und dann per UDP / TCP beschickt. Das haut bei allen anderen auch hin.

vg
joerg

RaspiLED

Hi,

das mit dem Aufwand verstehe ich. Aber evtl. ist es ja in WifiLight möglich den 3er MAC Tuppel als Attribut zu speichern
und danach reduziert sich das Thema auf einen Versand eines UDP Pakets mit den RGBWW Werten.

Die Ersteinrichtung per Android App zum einfügen in das eigene WLAN ist doch okay.

Die andere Frage ist, ob die FUN Modes mit den Farbverläufen (kann der H801 ja auch direkt "abspielen") einzubauen noch notwendig ist.

Was meint Ihr?

Gruß Arnd
Raspberry Pi mit FHEM, CUL, Signalduino, MySensors, HomeBridge, Presence, WifiLight2, Bravia, ...

herrmannj

Hi,

ja, so in etwa. Die sollten dann jedoch ins define.

Die Farbverläufe, fades oder transitions, werden von WifiLight erzeugt. Alles was controller spezifisch ist hat da nix zu suchen :)

vg
joerg

Maiks

Also ohne die MAC geht gar nichts :(  habe ich mal weg gelassen oder mit 000000 aufgefüllt.  Dimmer reagiert dann nicht.

Ich habe das rudimentäre noch ein wenig erweitert mit dimmer für weiß und Farbwahl auf die 3 Grundfarben RGB + W.
Das Schalten mache ich mit meinem HM-DIS geht auch schon zu 90%. Allerdings ist das nicht sauber umgesetzt sondern eher zu viel notifys und dummys, die ich der Einfachheit halber verwendet habe.

Ich hänge es trotzdem noch mal an.

Todo: Farbe merken bei Schalter umschalten, Optimieren, Farbdimmer und nicht nur weiss uvm....


define DG_RGB_H801 readingsProxy DG_RGB_H801
attr DG_RGB_H801 userattr Light Light_map structexclude
attr DG_RGB_H801 Light AllLights
attr DG_RGB_H801 comment light with the ability to change RGB color
attr DG_RGB_H801 devStateIcon {Color::devStateIcon("RGB","rgb","rgb","state")}
attr DG_RGB_H801 group Color Lights
attr DG_RGB_H801 room Light
attr DG_RGB_H801 setFn {if( $CMD =~ m/on|off/ ) { $ARGS=$CMD;;$CMD = "state" } else {fhem ("setreading $DEVICE state on");;} if( $CMD =~ m/hue/ ) {my ($r,$g,$b) = Color::hsv2rgb($ARGS/360,1,1);; my $rgb = Color::rgb2hex( $r*255, $g*255, $b*255 );; fhem ("setreading $DEVICE rgb $rgb");;} if( $CMD =~ m/rgb/ && $ARGS =~ m/^(..)(..)(..)/ ) {my( $r, $g, $b ) = (hex($1)/255.0, hex($2)/255.0, hex($3)/255.0);; my ($h,$s,$v) = Color::rgb2hsv($r,$g,$b);; my $hue = int($h*359);;  fhem ("setreading $DEVICE hue $hue");;} fhem ("setreading $DEVICE $CMD $ARGS");;return undef;;}
attr DG_RGB_H801 setList on:noArg off:noArg rgb:colorpicker,RGB hue:colorpicker,HUE,0,1,359
attr DG_RGB_H801 webCmd hue:rgb:rgb ff0000:rgb 00ff00:rgb 0000ff:rgb ffffff:on:off
define colorInit notify global:INITIALIZED {use Color;;Color_Initialize()}

define DG_RGB_H801_Dimmer dummy
attr DG_RGB_H801_Dimmer room Light
attr DG_RGB_H801_Dimmer setList state:slider,0,1,255
attr DG_RGB_H801_Dimmer webCmd state
define DG_RGB_H801_ntfy notify DG_RGB_H801 {if (ReadingsVal("DG_RGB_H801","state", 0) eq "on"){if (ReadingsVal("DG_RGB_H801","rgb", 0) eq "ffffff") { H801b_Msg("192.168.0.58" , "000000". (sprintf "%x",ReadingsVal("DG_RGB_H801_Dimmer","state",0)) ."00" , "d959d6")} else { H801b_Msg("192.168.0.58" , ReadingsVal("DG_RGB_H801","rgb",0). "0000" , "d959d6")}}if (ReadingsVal("DG_RGB_H801","state", 0) eq "off"){ H801b_Msg("192.168.0.58" , "0000000000" , "d959d6")}}
attr DG_RGB_H801_ntfy room Light
define DG_RGB_H801_Dimmer_ntfy notify DG_RGB_H801_Dimmer {if (ReadingsVal("DG_RGB_H801","state", 0) eq "on"){if (ReadingsVal("DG_RGB_H801","rgb", 0) eq "ffffff") { H801b_Msg("192.168.0.58" , "000000". (sprintf "%x",ReadingsVal("DG_RGB_H801_Dimmer","state",0)) ."00" , "d959d6")}}}
attr DG_RGB_H801_Dimmer_ntfy room Light
define DG_RGB_H801_on notify VCCU_Btn1 {if (ReadingsVal("VCCU_Btn1","trig_SW_DIS_DG_Btn_20",0) eq "short") {fhem("set DG_RGB_H801 on")}}
attr DG_RGB_H801_on room Light
define DG_RGB_H801_off notify VCCU_Btn2 {if (ReadingsVal("VCCU_Btn2","trig_SW_DIS_DG_Btn_19",0) eq "short"){ H801b_Msg("192.168.0.58" , "0000000000" , "d959d6")}}
attr DG_RGB_H801_off room Light
define DG_RGB_H801_dimDown notify VCCU_Btn2 {my $Wert=ReadingsVal("DG_RGB_H801_Dimmer","state",0);; {if (ReadingsVal("VCCU_Btn2","trig_SW_DIS_DG_Btn_19",0) eq "long") { if ($Wert >= 8) {$Wert = $Wert-10;; fhem("set DG_RGB_H801_Dimmer $Wert");;}}}}
attr DG_RGB_H801_dimDown room Light
define DG_RGB_H801_dimUp notify VCCU_Btn1 {my $Wert=ReadingsVal("DG_RGB_H801_Dimmer","state",0);; {if (ReadingsVal("VCCU_Btn1","trig_SW_DIS_DG_Btn_20",0) eq "long") { if ($Wert <= 249) {$Wert = $Wert+10;; fhem("set DG_RGB_H801_Dimmer $Wert");;}}}}
attr DG_RGB_H801_dimUp room Light
define DG_RGB_H801_Color dummy
attr DG_RGB_H801_Color room Light
define DG_RGB_H801_colorUp notify VCCU_Btn3 {my $Wert=ReadingsVal("DG_RGB_H801_Color","state",0);; {if (ReadingsVal("VCCU_Btn3","trig_SW_DIS_DG_Btn_18",0) eq "short") { if ($Wert <= 5) {$Wert = $Wert+1;; fhem("set DG_RGB_H801_Color $Wert");;}}}}
attr DG_RGB_H801_colorUp room Light
define DG_RGB_H801_colorDown notify VCCU_Btn4 {my $Wert=ReadingsVal("DG_RGB_H801_Color","state",0);; {if (ReadingsVal("VCCU_Btn4","trig_SW_DIS_DG_Btn_17",0) eq "short") { if ($Wert >= 1) {$Wert = $Wert-1;; fhem("set DG_RGB_H801_Color $Wert");;}}}}
attr DG_RGB_H801_colorDown room Light
define DG_RGB_H801_colorChange notify DG_RGB_H801_Color {if (ReadingsVal("DG_RGB_H801","state", 0) eq "on"){if (ReadingsVal("DG_RGB_H801_Color","state", 0) eq "0") {H801b_Msg("192.168.0.58" , "000000". (sprintf "%x",ReadingsVal("DG_RGB_H801_Dimmer","state",0)) ."00" , "d959d6")}}}
attr DG_RGB_H801_colorChange room Light
define DG_RGB_H801_colorChange1 notify DG_RGB_H801_Color {if (ReadingsVal("DG_RGB_H801","state", 0) eq "on"){if (ReadingsVal("DG_RGB_H801_Color","state", 0) eq "2") {H801b_Msg("192.168.0.58" , "ff00000000" , "d959d6")}}}
attr DG_RGB_H801_colorChange1 room Light
define DG_RGB_H801_colorChange2 notify DG_RGB_H801_Color {if (ReadingsVal("DG_RGB_H801","state", 0) eq "on"){if (ReadingsVal("DG_RGB_H801_Color","state", 0) eq "4") {H801b_Msg("192.168.0.58" , "00ff000000" , "d959d6")}}}
attr DG_RGB_H801_colorChange2 room Light
define DG_RGB_H801_colorChange3 notify DG_RGB_H801_Color {if (ReadingsVal("DG_RGB_H801","state", 0) eq "on"){if (ReadingsVal("DG_RGB_H801_Color","state", 0) eq "6") {H801b_Msg("192.168.0.58" , "0000ff0000" , "d959d6")}}}
attr DG_RGB_H801_colorChange3 room Light


und die myutils



use IO::Socket;
sub H801b_Msg($$$)
{
my ($dest,$farbe,$mac)  = @_;

my $mac4 = hex(substr($mac,0,2));
my $mac5 = hex(substr($mac,2,2));
my $mac6 = hex(substr($mac,4,2));

my $Laenge = length($farbe);
my $RR = hex(substr($farbe,0,2));
my $GG = hex(substr($farbe,2,2));
my $BB = hex(substr($farbe,4,2));
my $WW = "00";
my $KK = "00";
if (length($farbe) == 10) {$WW = hex(substr($farbe,6,2));
$KK = hex(substr($farbe,8,2));}
elsif (length($farbe) == 9) {$WW = hex(substr($farbe,6,1));
$KK = hex(substr($farbe,7,2));}

my $sock = IO::Socket::INET->new(
    Proto    => 'udp',
    PeerPort => 30977,
    LocalPort => 30978,
    PeerAddr => $dest
) or die "Could not create socket: $!\n";
$sock->send("\xfb\xeb" . chr($RR) . chr($GG)  . chr($BB) . chr($WW) . chr($KK) . chr($mac4) . chr($mac5)  . chr($mac6) . "\x00") or die "Send error: $!\n";
Log 1, "H801b returned: send $RR $GG $BB $WW $KK $mac4 $mac5 $mac6";
return "send $RR $GG $BB $WW $KK $mac4 $mac5 $mac6";
}




Wie schon geagt, nicht schön tut aber erst mal, Verbesserungsvorschläge willkommen :D

Hier noch ein Bild


Markus M.

#23
Zitat von: Maiks am 10 Februar 2016, 21:33:58Wie schon geagt, nicht schön tut aber erst mal, Verbesserungsvorschläge willkommen :D

Wie wär's mit einem Modul? :)
Im Anhang ist eine Version von WifiLight die NUR mit dem HX801 Modul umgehen kann, kannst du parallel nutzen.
HSV sollte ganz normal funktionieren, mit der Besonderheit dass du zusätzlich noch CT setzen kannst, das dann die Farbtemperatur des Weisskanals mischt. W1=warm, W2=kalt.
Über set RGBWW lassen sich die einzelnen Kanäle direkt ansteuern, ohne dass eine HSV Umrechnung erfolgt.

define rgbww_controller WifiLight2 RGBWW HX801:192.168.178.123:ABCDEF

Markus


neue Version weiter unten im Thread
FHEM dev + HomeBridge + Lenovo Flex15 + HM-CFG-USB + RFXtrx433 + Fritz!Box 7590/7580/546E

HM Aktor/Sensor/Winmatic/Keymatic/Thermostat, HUE, Netatmo Weather/Security/Heating, Xiaomi AirPurifier/Vacuum, Withings Aura/BPM/Cardio/Go/Pulse/Thermo, VSX828, Harmony, Siro ERB15LE
https://paypal.me/mm0

herrmannj


Maiks

Super, THX

Werde ich mir mal anschauen.

Hat schon jemand einen weg gefunden den HOTSPOT modus auszuschalten ?

weekeda

Hallo,

zuerst vielen Dank für die Arbeit den H801 in FHEM zu integrieren. Probiere das Modul von Markus gerade aus aber habe Probleme es zum laufen zu bekommen.
Mit der App LEDDimmer kann ich die HX801 steuern. Leider bekomme ich keine Steuerung des H801 über FHEM zustande habe das Modul wie angegeben definiert(angepasst an mein Gerät MAC und IP):

define rgbww_controller WifiLight2 RGBWW HX801:192.168.178.38:18FE34D65C61

Das Modul (32_WiFiLight2.pm) befindet sich im Ordner /opt/fhem/FHEM.
Leider empfängt der H801 keine Signale die ich von fhem aus verschicke.

Vielleicht kann mir jemand helfen der den  H801 zum laufen gebracht hat würde mich sehr freuen.

Viele Grüße
weekeda

RaspiLED

#27
Hi weekeda,


also Dein Post hat mich endlich dazu gebracht, das Modul auszuprobieren.
Nach vielen Debugversuchen mit Verbose Level 5 ist meine finale Definition jetzt diese:


define H801_Test WifiLight2 RGBWW HX801:[IP]:00[MAC456]


Dabei ist die [IP] z.B. 192.168.1.100 und die [MAC456] nur die letzten drei MAC-Tuppel z.B. D65C61


Also sollte bei Dir analog folgendes funktionieren:
define rgbww_controller WifiLight2 RGBWW HX801:192.168.178.38:00D65C61

Danach wird bei Verwendung von RGBWW die Farben korrekt gesetzt.
set rgbww_controller RGBWW 00FF000000 -> grün

Weitere Tests: set rgb funktioniert hingegen nicht, set off und set saturation aber schon!

Ausserdem ist der UDP Request eigentlich zu lang. Er sendet die Mac erst an der zweiten möglichen Stelle. Das klappt zwar, aber der Request tut so, als ob er auch noch die MAC 00:00:00 (plus Trenner 00) schalten will ;-)

Insgesamt muss also noch etwas Arbeit in das Modul gesteckt werden, aber ich bin dankbar für den Anfang von Markus M. DANKE!


Gruß Arnd
Raspberry Pi mit FHEM, CUL, Signalduino, MySensors, HomeBridge, Presence, WifiLight2, Bravia, ...

weekeda

Vielen Dank Arnd hat auf Anhieb funktioniert! :) Gute Anleitung zum Vorgehen.

Jetzt werd ich erstmal selbst ein wenig testen.
Bei mir funktioniert set rgb über die Dropdown Auswahl im rgbww_controller.
dimdown/dimup will irgendwie nicht richtig funktionieren und so ganz durchschaut habe ich es noch nicht.

Gruß
weekeda

Markus M.

Probiert mal die hier - ohne die zusätzliche 00
FHEM dev + HomeBridge + Lenovo Flex15 + HM-CFG-USB + RFXtrx433 + Fritz!Box 7590/7580/546E

HM Aktor/Sensor/Winmatic/Keymatic/Thermostat, HUE, Netatmo Weather/Security/Heating, Xiaomi AirPurifier/Vacuum, Withings Aura/BPM/Cardio/Go/Pulse/Thermo, VSX828, Harmony, Siro ERB15LE
https://paypal.me/mm0