Sunricher SR 2820 Wifi

Begonnen von mike1992, 23 Februar 2015, 17:06:33

Vorheriges Thema - Nächstes Thema

turi

Ja, das Zeit-Problem kenne ich nur zu gut. Habe schon mal in Deinen Code geschaut, aber sehe noch nicht ganz durch. Man müsste ja eigentlich nur die Codes anpassen, das Prinzip ist ja ähnlich, und dann die Funktionen implementieren. Na mal sehen, vielleicht kann mir noch jemand dabei helfen.

herrmannj

Hi turi

weiß Du wie die bytes 1..3 (beginn 0) zu interpretieren sind ? Adresse ? Wenn ja, wo bekommt man die denn her ?

vg
joerg

turi

Hallo Jörg,

hier mal die Routine aus dem Code, welche die Ausgabe-Bytes zusammen stellt:


private byte[] getMessage(List<Integer> zones, byte category, byte channel, int value) {
byte[] result = new byte[12];

// remote identifier
result[0] = 0x55;
result[1] = 0x33;
result[2] = 0x61;
result[3] = 0x39;
result[4] = 0x02;
// zone
result[5] = this.generateZoneByte(zones);
// category - rgb vaules
result[6] = category;
// color channel
result[7] = channel;
// value
result[8] = (byte) value;
// checksum
result[9] = (byte) (result[8] + result[7] + result[6] + result[5] + result[4]);
// marker bytes
result[10] = (byte) 0xaa;
result[11] = (byte) 0xaa;

return result;
}


Die Bytes vorn sind einfach fest (denke ich zumindest), auch hinten die beiden 0xAA. Ich hatte auch mal analysiert und da aber andere Werte ermittelt. Werde einfach nochmal Florian zur Sicherheit fragen, er hatte das ja geschrieben.

Man muss ein wenig verstehen, wie diese Controller arbeiten (sollen). Die Zonen stammen aus dem RF-Bereich, also mit der normalen Fernbedienung. Will man mit der Original-App mehrere Controller steuern, so muss man eine umständliche Konfiguration machen, eine Art Client-Server-Betrieb. Man kann in der App nämlich nur eine IP-Adresse konfigurieren. Dieser eine Controller leitet die Befehle dann (per RF oder WLAN, weiß ich nicht) an die anderen über die Zonen weiter. Das ist nicht nur umständlich, auch die Konfiguration ist eher Glüchssache.

Einfacher ist es, man gibt jedem Controller einfach eine eigene IP und sendet die Daten dann dahin. Damit sind die Zonen dann eigentlich überflüssig. Falls der Controller allerdings auf eine bestimmte Zone eingerichtet ist, muss man auch an diese oder alle senden. Ich hoffe, ich habe mich verständlich ausgedrückt.

VG
Nino

herrmannj

Hi nino,

zu den Zonen fehlt mir noch ein wenig der gedankliche Zugang ;) Ich denke aber das kann man ein wenig nach hinten schieben.

Ich habe gerade im wifilight thread einen anderen sniff gesehen - da sind die bytes 1..3 andere. Die sind also (ganau wie oben bei mike) jeweils individuell pro controller. Das muss was mit der Adressierung / ip zu tun haben.

Lassen sich die bytes irgendwie aus der MAC Adresse ableiten ?

vg
joerg

turi

Ich habe jetzt im Code nicht gesehen, dass die verändert werden und es ist so, dass die App aber mit allen bisher getesteten Controller funktioniert. Also kann man sagen, dass die fest sind, vielleicht auch MAC/IP, aber offensichtlich nichts mit der Adressierung zu tun haben. Ich kann mir das nochmal ansehen in den nächsten Tagen.

Zonen kannst Du wirklich erst mal ignorieren, in dem an alle Zonen gesendet wird.

herrmannj

hast Du zugriff auf verschiedene Controller ? Dann könnte man das auch nach hinten schieben. Mach ich erst mal Nullen rein und wenn es läuft ist jut .. oder ? ;)

Für die Farben muss ich einen neuen color converter schreiben - der Rest ist wohl dann eher Fleißarbeit.

vg
joerg

herrmannj

beinahe vergessen: was ich auch echt noch nicht gerafft habe. Können die jetzt Gleichzeitig RGB und Weiß oder nur RGB oder Weiß ?

vg
joerg

peterk_de

Zitat von: turi am 30 Dezember 2015, 23:57:01
Man muss ein wenig verstehen, wie diese Controller arbeiten (sollen). Die Zonen stammen aus dem RF-Bereich, also mit der normalen Fernbedienung. Will man mit der Original-App mehrere Controller steuern, so muss man eine umständliche Konfiguration machen, eine Art Client-Server-Betrieb. Man kann in der App nämlich nur eine IP-Adresse konfigurieren. Dieser eine Controller leitet die Befehle dann (per RF oder WLAN, weiß ich nicht) an die anderen über die Zonen weiter. Das ist nicht nur umständlich, auch die Konfiguration ist eher Glüchssache.

Einfacher ist es, man gibt jedem Controller einfach eine eigene IP und sendet die Daten dann dahin. Damit sind die Zonen dann eigentlich überflüssig. Falls der Controller allerdings auf eine bestimmte Zone eingerichtet ist, muss man auch an diese oder alle senden. Ich hoffe, ich habe mich verständlich ausgedrückt.

Diese Vermutung kann ich für die - wie Jörg richtig kombiniert hat - identische Steuerung der Lead Energy-Lampen unterschreiben. Die App sieht so eine umständliche Kopplung da nämlich auch vor - siehe Screenshot im Wifilight-Thread ... vermutlich braucht man diesen Kram gar nicht, definitiv nicht bei nur einer Lampe dieses Typs - und höchstwahrscheinlich auch wenn man mehrere Lampen hat nicht. Denn würde ich jetzt einfach eine Zweite auspacken und ins WLAN hängen, würde sie ab Werk wohl die exakt gleichen Kommandos verstehen (Bytes 1-3 sind ja egal; der rest ist bei dir ja 100% gleich) und wäre über die andere IP eindeutig adressierbar - also alles wie es sein soll ^^

BTW ja RGB und W geht bei den RGBWs gleichzeitig, es gibt 4 Schieberegler für die Farben.
FHEM auf Ubuntu-VM / 2xNUC Proxmox Cluster
UI: HomeKit, TabletUI, Grafana
IOdevs: 2xHueBridge, RaspiMatic-CCU, CUL868, 2xHarmonyHub, 6xRaspi-Roomnode mit CO2, VOC und lepresenced
Devices: 107xHomematic(IP), 96xPhilips Hue, 17xTECHEM, 12xBTLE, 8xSONOS, 2xHomeConnect, 1xShelly 3em, 1xNanoleaf ...

herrmannj

ah. Die cmds können aber scheinbar nur RGB oder Weiß.

Wenn ich also RGB und Weiß gleichzeitig möchte muss ich vmtl die Farbe (byte 7/8 0x01) setzen und danach Weiß.

Wobei ich gerade suche wie man weiß bei RGBW einzeln einstellt.
Könnte jemand sniffen wie das aussieht wenn man die Helligkeit bei Farbe und die Helligkeit bei weiß verändert ?
Der dim befehl .. worauf wirkt der denn. Auf alles, nur white, nur color oder das letzte was man gesetzt hat .. ?

Aber für heute ist Feierabend . und für morgen: Guten Rutsch @all :)

Danke und vg
Joerg

peterk_de

Die ersten 3 Bytes sind definitiv eine Absenderadresse (also vom Client und nicht von der Lampe abhängig). Ich habe die App eben mal zusätzlich zu meinem iPhone noch auf nem iPad und nem Android-Tablet installiert.

1. iPhone
2. iPad
3. Android-Tablet

Anfang vom Befehl ... aktive MAC-Adresse des Clients... aktuelle IP des Clients

1. 55 99 80 a4 ...  38:71:DE:8A:1A:A7 ... C0.A8.B2.1E
2. 55 99 77 cb ... B8:E8:56:7A:F2:F0 ... C0.A8.B2.1B
3. 55 43 38 45 ... 6C:AD:F8:F2:00:97 ... C0.A8.B2.21

Anhand dieser Beobachtung habe ich keine Idee, wie sich die Absenderadresse genau berechnet, wohl aber, dass Byte 1 wohl je Controller(-App) fest ist (bei meinen beiden iOS-Geräten gleich!) und Bytes 2+3 die Instanz kennzeichnen...

... nun ja aber eigentlich ist das vermutlich ja auch egal ;-)

RGBW-Regler sniffe ich noch.
FHEM auf Ubuntu-VM / 2xNUC Proxmox Cluster
UI: HomeKit, TabletUI, Grafana
IOdevs: 2xHueBridge, RaspiMatic-CCU, CUL868, 2xHarmonyHub, 6xRaspi-Roomnode mit CO2, VOC und lepresenced
Devices: 107xHomematic(IP), 96xPhilips Hue, 17xTECHEM, 12xBTLE, 8xSONOS, 2xHomeConnect, 1xShelly 3em, 1xNanoleaf ...

peterk_de

#55
So, hier mal die aktuellen Sniffing-Erkenntnisse zusammengefasst und ergänzt um die RGBW-Regler für die Trafos mit RGBW-LEDs:




Lead Energy Dynamic Control-Lampen bzw. Trafotypen

http://www.lead-energy.com/dynamic-control/

In der "Lead Dynamic"-Smartphone-App sind 3 Typen Lampen vorgesehen:l

- Dynamic White ("PDW"): Weiße LEDs mit wählbarer Farbtemperatur (warm ... kalt), getestet mit PDW30
- Dynamic Color ("PDC"): RGBW-LEDs, z.B. PDC30, ungetestet
- Static White ("SW"): Monochrom weiße LEDs, ungetestet, vermutlich z.B. LED Strip Set SSW68 Wifi

Aufbau eines Befehls:
0x55AABBbbWWwwXXxxYYZZaaaa

AA = Controler-Art (offensichtlich der Lampe egal)
BBbb = Absender-ID (offensichtlich der Lampe egal)
WWww = Gruppen-Adressierung
XXxx = Befehl
YY = Wert
ZZ = Checksumme = (WW + ww + XX + xx + YY) & 0xff
Anmerkung: Wird z.B. der Dimm-Regler der App sehr schnell bewegt, sind mehrere Befehle in einem TCP-Paket enthalten.


Gruppen-Adressierung:

WW = ist bislang immer 0x02 (bei PDW-, PDC- und einfarbigen Trafos)
ww:
0x00 = Alle Gruppen + alle Geräte, die keine Gruppe zugewiesen haben!
0x01 = Nur Gruppe 1
0x02 = Nur Gruppe 2
0x03 = Nur Gruppe 1 + Gruppe 2
...
Anmerkung: Bei Lead Dynamic heißen die Gruppen in der App "Räume". Man kann das Gerät per Knopf anlernen, dann reagiert es auch  auf Gruppen-IDs ungleich 0. Auf Gruppen-ID Null reagieren offenbar alle Geräte, auch wenn sie in einer Gruppe aufgenommen sind.


Befehle:

An / Aus (PDW-, PDC- und SW-Trafos, also alle):
XXxx = 0x0212
YY = An: 0xab  Aus: 0xa9
Anmerkung: Lässt sich nicht durch Dimmbefehl einschalten, wenn mit diesem Befehl ausgeschaltet!


Dimmen (Nur PDW-Trafos):
XXxx = 0x0833
YY = Dimmwert in 64 Stufen (0x00..0x40)
Anmerkung: 0x00 ist aus und lässt sich durch Dimmen wieder einschalten!


Dimmen (Nur PDC-Trafos):
XXxx = 0x084c
YY = Dimmwert in 63 Stufen (0x01..0x40)
Anmerkung: 0x00 ist vermutlich wie bei den PDW-Trafos "aus" und lässt sich durch Dimmen wieder einschalten; konnte aber ohne Lampe nicht getestet werden.


Dimmen (Nur SW-Trafos):
XXxx = 0x0838
YY = Dimmwert in 255 Stufen (0x01..0xff)
Anmerkung: 0x00 ist vermutlich wie bei den PDW-Trafos "aus" und lässt sich durch Dimmen wieder einschalten; konnte aber ohne Lampe nicht getestet werden.


Farbtemperatur (Nur PDW-Trafos):
XXxx = 0x0836
YY = Temperatur von kalt zu warm in 32 Stufen (0x00..0x20)
ZZ = Checksumme = YY + 0x40

HSV-Rad (Nur PDC-Trafos):
XXxx = 0x0101
YY = HSV-Wert in 95 Stufen (0x01..0x60)
Anmerkung: Mangels Lampe schwer zu sagen wo 0 Grad sind - müsste geprüft werden!

W-Taste (Nur PDC-Trafos):
XXxx = 0x0205
Wert = 0x8a oder 0x8b
Anmerkung: Funktion unbekannt - vermutlich weiße LEDs an/aus



R-Regler (Nur PDC-Trafos):
XXxx = 0x0848
YY = Rot-Wert in 256 Stufen (0x00..0xff)

G-Regler (Nur PDC-Trafos):
XXxx = 0x0849
YY = Grün-Wert in 256 Stufen (0x00..0xff)

B-Regler (Nur PDC-Trafos):
XXxx = 0x084a
YY = Blau-Wert in 256 Stufen (0x00..0xff)

W-Regler (Nur PDC-Trafos):
XXxx = 0x084b
YY = Weiß-Wert in 256 Stufen (0x00..0xff)



Edit: Gruppen-Adressierung soweit wie möglich verstanden und ergänzt. Einfach an 0x0200 senden und gut ist - dann ist lediglich noch fraglich, ob die Lampe das an angelernte andere Lampen weiterleitet. 0x0200 scheint entweder zu heißen "alle gruppen einschalten bitte, und das auch allen per RF verbundenen Lampen bitte weitersagen" oder alternativ auch "nur du Lampe einschalten, mit der ich gerade spreche, egal welche gruppe du bist, leite das aber an keinen weiter" - das kann ich ohne zweite Lampe nicht herausfinden. Könnte ein Problem für diejenigen sein, die mit den zugehöroigen Schaltern etc. sich schon was komplexeres Aufgebaut haben.
FHEM auf Ubuntu-VM / 2xNUC Proxmox Cluster
UI: HomeKit, TabletUI, Grafana
IOdevs: 2xHueBridge, RaspiMatic-CCU, CUL868, 2xHarmonyHub, 6xRaspi-Roomnode mit CO2, VOC und lepresenced
Devices: 107xHomematic(IP), 96xPhilips Hue, 17xTECHEM, 12xBTLE, 8xSONOS, 2xHomeConnect, 1xShelly 3em, 1xNanoleaf ...

herrmannj

#56
Dann kann der PDC sowohl mit den HSV Werten und auch direkt mit RGB gesteuert werden ? Das wäre ja charmant.
Hat eigentlich jemand so ein RGBW Dingens ? Vmtl kann man dann alle vier (RGBW) Werte in einem Rutsch senden ..

Peter: hast Du mal ein Beispiel wie das aussieht wenn man den Regler schnell bewegt und der mehrere dim werte in einem Befehl überträgt ? RGBW geht bestimmt analog dazu. So langsam fange ich an die Dinger etwas zu verstehen...

vg
joerg

peterk_de

#57
Also ich hab leider keine RGBW-Lampe davon - aber in deren Demo-Video zeigen sie, wie sie munter zwischen RGB- und HSV-Regelung hin- und herwechseln. RGB ist da auch sicher zu bevorzugen, da mir bei HSV völlig unklar ist, wie man die Sättigung einstellen soll - da ist zwar noch ein Schieberegler von dem ich nicht weiß was er tut, mit "Play-Symbol", aber der produziert keinerlei Pakete.

Ja, schnelles Dimmen produziert TCP Pakete mit mehreren Befehlen direkt hintereinander ohne zusätzlichen Delimiter. 10 pro Paket hatte ich öfter. Ab welchem Timeout er ein neues Paket anfängt konnte ich noch nicht sicher feststellen, ich logge das per Fritzbox und die Zeitstempel scheinen nach dem Mond zu gehen und sind immer anders.
FHEM auf Ubuntu-VM / 2xNUC Proxmox Cluster
UI: HomeKit, TabletUI, Grafana
IOdevs: 2xHueBridge, RaspiMatic-CCU, CUL868, 2xHarmonyHub, 6xRaspi-Roomnode mit CO2, VOC und lepresenced
Devices: 107xHomematic(IP), 96xPhilips Hue, 17xTECHEM, 12xBTLE, 8xSONOS, 2xHomeConnect, 1xShelly 3em, 1xNanoleaf ...

peterk_de

Zitat von: szerb am 01 Januar 2016, 15:16:55
Hallo,
das ist ja mal cool, ich habe ein PDW 60 Dynamic White mit Controller, könnte also auch testen.
Dann kann ich ja den LW12 wieder abbauen...!
Und dann würde ich mir eine Funktion wünschen wie das Dimmen nur für CW/WW.

Markus

Super, mehr gleichgesinnte :-) Aber kurzgesagt, was du dir da wünschst, das geht nicht. Gibt der Befehlssatz des Controllors nicht her. An den kann man nur ne Gesamthelligkeit und ne Farbtemperatur schicken; die Warmweißen und kaltweißen LEDs lassen sich nicht direkt ansteuern.
FHEM auf Ubuntu-VM / 2xNUC Proxmox Cluster
UI: HomeKit, TabletUI, Grafana
IOdevs: 2xHueBridge, RaspiMatic-CCU, CUL868, 2xHarmonyHub, 6xRaspi-Roomnode mit CO2, VOC und lepresenced
Devices: 107xHomematic(IP), 96xPhilips Hue, 17xTECHEM, 12xBTLE, 8xSONOS, 2xHomeConnect, 1xShelly 3em, 1xNanoleaf ...

szerb

Habe mich etwas blöd ausgedrückt. Ich meine ja auch den "Colourpicker CT", gibt es doch so für die Farbtemperatur.
Und das ich das dann einfach auf ein Tastenpaar an der Wand abbilden kann wäre klasse.