Wifilight.pm

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

Vorheriges Thema - Nächstes Thema

schka17

Zitat von: hexenmeister am 07 Oktober 2016, 21:02:04
Hm... Klingt sehr spannend. Ob ich dafür meine WLAN-MySensors-Gateway Platine verwenden kann?  ;)

Da bin ich mir relativ sicher, deswegen habe ich mir das letzte bei dir bestellt  :)
M: Thinclient x64 Debian | CUL FS20, HMS100WD, HMS100TF, HMS100T, HMS100CO, S300, S555TH | OWServer DS1420, DS18B20, DS2408 | RFXCOM UVN128, THWR800, THGR228N,RTGR328, PCR800 |Jeelink PCA301 EC3000|CUNO+IR|HMLAN|HMUSB|CUL433 Somfy|mySensors|espEasy
S1:Raspberry mit BPM810, Jeelink EC3000

hexenmeister

Ohje, ich werde wohl doch wieder Platinen in China bestellen müssen ;D

herrmannj

hmmm.

erste Bestellung hiermit eingetroffen. :)
Du wohnst nicht so weit weg. Kann ich mit milight hardware unterstützen ? An dem sketch geht bestimmt noch einiges  ...

vg
joerg

hexenmeister

Wir können gerne was daraus machen. Zuerst wären die Änderungswünsche (if any) für die Hardware zu erfassen. Ideal wäre natürlich so nehmen können, wie es ist. Muss man sehen, ob die Verfrahtung so passt (sollte eigentlich). Bin zeittechnisch gerade etwas eingeschränkt, für kleine Änderungen / PCB-Bestellungen finde ich natürlich shon Zeit.
Wenn Du zum Testen eine PCB haben willst, würde ich bestimmt noch was auf die Schnelle auftreiben können (habe zwar praktisch alles verteilt, aber aich hattevon allen Versionen Testboards zur Seite gelegt gehabt. Darunter müsste sich bestimmt noch was brauchbares finden.)

schka17

Zum coden reicht eine NodeMCU mit NRF, so habe ich es mal zusammengesteckt, sobald ich deine Platine habe, sollte nächste Woche da sein, flashe ich den Sketch mal drauf, aber ich sehe hier kein Problem mit der Pinbelegung verglichen mit dem MS Gateway
/*
* nRF24L01+  ESP8266 NodeMCU
* VCC        VCC            VCC
* CE          GPIO4          D2         
* CSN/CS     GPIO15     D8
* SCK        GPIO14        D5
* MISO       GPIO12       D6
* MOSI       GPIO13       D7
* GND        GND            GND
*/



Übrigens, danke Jörg, eigentlich wollte ich nur die Bridges ersetzen, aber jetzt habe ich schon einige Ideen....

Zitatna da hast Du doch ein Projekt :)

Generell könnte der NRF2401 ja auch empfangen (ne FB ? ;) ).
Und auf rf Kollisionen achten.
Und TCP (nicht UDP) sprechen.

Da wäre schon einiges möglich ....

M: Thinclient x64 Debian | CUL FS20, HMS100WD, HMS100TF, HMS100T, HMS100CO, S300, S555TH | OWServer DS1420, DS18B20, DS2408 | RFXCOM UVN128, THWR800, THGR228N,RTGR328, PCR800 |Jeelink PCA301 EC3000|CUNO+IR|HMLAN|HMUSB|CUL433 Somfy|mySensors|espEasy
S1:Raspberry mit BPM810, Jeelink EC3000

herrmannj

ZitatÜbrigens, danke Jörg, eigentlich wollte ich nur die Bridges ersetzen, aber jetzt habe ich schon einige Ideen....
Wenn ich Dich von Seiten des fhem moduls unterstützen kann sag bitte Bescheid. Bin nur leider furchtbar im Rückstau im Augenblick.

Einen nodemcu habe ich rumliegen, leider kein NRF2401. Gibt es da eine Empfehlung welchen ich bestelle ? Gibt wohl verschiedene (?). Eine externe Antenne wäre mir bei dieser Gelegenheit ganz lieb. Das dürfte ja auch viel bringen können.

vg
joerg


gloob

Raspberry Pi 3 | miniCUL 433MHz | nanoCUL 868 MHz | nanoCUL 433 MHz | MySensors WLAN Gateway | LaCrosse WLAN Gateway | SignalESP 433 MHz | SignalESP 868 MHz | HM-MOD-UART WLAN Gateway | IR - 360 Grad WLAN Gateway

herrmannj

Vielen Dank. Direkt mal bestellt. Ein Glück das die Lieferzeiten haben.  ;)

Nicht das ich nicht ready bin wenn Schka17 eine Super dooper firmware klöppelt.  8) Wäre schon schön die doofe bridge mal zu ersetzen.

Danke und vg
Joerg

schka17

Tja, also hat mir keine Ruhe gelassen, habe mein mysensorGW umgeflasht, was soll ich sagen flutscht. Zur weiteren Diskussion habe ich ein Thema im Bastelforum aufgemacht

https://forum.fhem.de/index.php/topic,58742.0.html

M: Thinclient x64 Debian | CUL FS20, HMS100WD, HMS100TF, HMS100T, HMS100CO, S300, S555TH | OWServer DS1420, DS18B20, DS2408 | RFXCOM UVN128, THWR800, THGR228N,RTGR328, PCR800 |Jeelink PCA301 EC3000|CUNO+IR|HMLAN|HMUSB|CUL433 Somfy|mySensors|espEasy
S1:Raspberry mit BPM810, Jeelink EC3000

schka17

Hallo Joerg

ZitatDas wiederum geht doch jetzt schon? Einfach den port nach der ip angeben. -> 192.168.178.32:8898

Habe jetzt meine ESP Bridge in Betrieb nehmen wollen, ich kann zwar beliebige Ports angeben, aber insgesamt trotzdem nur vier Devices pro IP-Adresse anlegen, beim 5. (mit Port 8898) kommt die Meldung dass kein Slot frei ist.

Und dann bin ich wieder auf ein altes Problem gestossen dass ich bisher mit der Milight App umgangen haben, das Pairen und unpairen funktioniert aus FHEM nicht, ich verstehe es nicht aber im gesnifften Funkverkehr schaut es genauso aus wie mit der App, funkt aber trotzdem nicht, die einzige Erklärung vielleicht etwas mit dem Timing....
M: Thinclient x64 Debian | CUL FS20, HMS100WD, HMS100TF, HMS100T, HMS100CO, S300, S555TH | OWServer DS1420, DS18B20, DS2408 | RFXCOM UVN128, THWR800, THGR228N,RTGR328, PCR800 |Jeelink PCA301 EC3000|CUNO+IR|HMLAN|HMUSB|CUL433 Somfy|mySensors|espEasy
S1:Raspberry mit BPM810, Jeelink EC3000

herrmannj

Das mit den slots, da hatte sich auch gleich was vor mein Unterbewusstsein geschoben ich habs aber nicht aufgegriffen.

Muss da kurz ausholen:
Ein Kommando an eine milight bulb besteht aus mindestens 2 (Helligkeit) oder 3 (Helligkeit und Farbe) Blöcken mit 100ms Pause dazwischen. Wirst das auf der rf Ebene kennen. Wenn jetzt mehrere Bulbs über eine bridge laufen die unter Umständen gleichzeitig angesteuert werden muss das modul dafür sorgen das die Kommandos sich auch in den Pausen nicht überlagern. Daher wird schön bulb für bulb inkl der Pausen nacheinander abgearbeitet.

Ich ahne das ich, als ich das geschrieben habe, nie an solche Chaoten [SIC] gedacht habe die auf einer IP 4 bridges laufen lassen wollen.  ;)
(Nur Spass! ).

Ich befürchte das heil zumachen ist gar nicht so einfach ... 

Selbst wenn man das auf der Ebene der bridge im modul aufdröseln würde, diese fifo Prinzip hat ja einen Grund. Wenn man das weg programmiert und die eine ip auf die vier ports trennt kommen sich die Kommandos auf RF Ebene ja trotzdem in die Quere.

Das ist auch keine rein akademische Frage. Wenn verschiedene Transitions laufen kommen die sich ganz real in die quere. Zur besseren Erklärung:
Helligkeit setzen sind 2 Blöcke. Zuerst "Hallo Lampe 1", 100ms warten dann "mach mal Helligkeit 10". In einer Transition gehen da auch viele Blöcke in Reihe raus.

Jetzt sind 2 Transitions zum Beispiel 50ms versetzt, die eine läuft auf bridge A die andere auf bridge B:

000ms: Bridge A : "Hallo Lampe 1"
050ms: Bridge B : "Hallo Lampe 2"
100ms: Bridge A:  "mach mal Helligkeit 0"
150ms: Bridge B:  "mach mal Helligkeit 20"

Wird genau Lampe 2 ausgehen obwohl die eigentlich volle Helligkeit machen sollte. Genau genommen passiert das heute mit zwei bridges auch ohne das ich das bedacht hätte.

Aber jetzt das modul mit durchaus einigem Aufwand umbauen in dem Wissen das es "schwach" ist ? Eigentlich müsste man die fw der esp gleichzeitig auch um bauen und dort die slot Begrenzung raus nehmen. Gleichzeitig dann das fhem modul. Das wäre irgendwie sauberer ...

Das mit pairing geht bei mir, unpair geht nicht.

vg
joerg



herrmannj

Sind die 100ms Pause eigentlich auf rf ebene notwendig ? Mir ist bekannt das die erste Notwendigkeit in der bridge entsteht weil dort das WLAN moul seriell an den Sender gebunden ist. Damit der eingegangene bytestream an das sende modul gegeben wird braucht das wlan modul 100ms Pause. Diese Pause sagt dem WLAN Modul "Message vollständig, kannste weitergeben".

Wenn man jetzt auf der rf Ebene die Pause garnicht braucht (weil die Bulb das sowieso ohne Pause versteht) könnte man sich den ganzen Zinnober sparen. Das wäre dann auch richtig ein Gewinn. Fast ein Fünfer. Dann würde auch die framerate bei transition drastisch nach oben geschraubt werden können.

Kannst Du das irgendwie testen ? (Meine NRF24 sind leider noch nicht da  :D )

vg
joerg


schka17

#1948
Hallo Jörg,

ZitatSelbst wenn man das auf der Ebene der bridge im modul aufdröseln würde, diese fifo Prinzip hat ja einen Grund. Wenn man das weg programmiert und die eine ip auf die vier ports trennt kommen sich die Kommandos auf RF Ebene ja trotzdem in die Quere.

Auf der rf Ebene habe ich die selben Themen wie mit 4 Controllern/FB, es wird ja dem Command dann auf rf Ebene eine 2 Byte ID hinzugefügt, hier ein Beispiel (ID= 63 xx):

Gruppe 1 einschalten: auf Port 8899 (command #45)

das kommt von von FHEM:
Contents: 45 0 55 <\r><\n>
das wird über NRF gesendet
Write : B0 63 D2 F 81 3 35  -->RFID D2

Gruppe 2 einschalten: auf Port 8898 (command #47)
Contents: 47 0 55 <\r><\n>
Write : B0 63 D3 F 81 5 38 <\r><\n> -->RFID D3

Gruppe 2 einschalten: auf Port 8899 (command #47)
Contents: 47 0 55 <\r><\n>
Write : B0 63 D2 F 81 5 43 <\r><\n> -->RFID D2

Gruppe 2 einschalten: auf Port 8897 (command #47)
Contents: 47 0 55 <\r><\n>
Write : B0 63 D0 F 81 5 49 <\r><\n>  -->RFID D0

Gruppe 2 einschalten: auf Port 8896 (command #47)
Contents: 47 0 55 <\r><\n>
Write : B0 63 C2 F 81 5 4F <\r><\n>  -->RFID C2

Gruppe 1 einschalten: auf Port 8899 (command #45)
Contents: 45 0 55 <\r><\n>
das wird über NRF gesendet
Write : B0 63 C2 F 81 3 55  -->RFID C2

Ich habe immer nur eine Zeile rauskopiert, die anderen unterscheiden sich nur durch das letzte Byte (Zähler)

hier eine ganze Sequenz, setzte Gruppe#1 auf RGB FF0000

Contents: 45 0 55 <\r><\n>
Write : B0 63 C2 0 81 3 6 <\r><\n>
................<\r><\n>
Contents: 40 B0 55 <\r><\n>
Write : B0 63 C2 F 1 F 7 <\r><\n>
................<\r><\n>
Contents: 4E 1B 55 <\r><\n>
Write : B0 63 C2 F B9 E 8 <\r><\n>
................<\r><\n>
Contents: 45 0 55 <\r><\n>
Write : B0 63 C2 F B9 3 9 <\r><\n>
...........<\r><\n>
Contents: 40 B0 55 <\r><\n>
Write : B0 63 C2 F 1 F A <\r><\n>
..<\r><\n>
Contents: 4E 1B 55 <\r><\n>
Write : B0 63 C2 F B9 E B <\r><\n>
................<\r><\n>
Contents: 45 0 55 <\r><\n>
Write : B0 63 C2 F B9 3 C <\r><\n>
................<\r><\n>
Contents: 40 B0 55 <\r><\n>
Write : B0 63 C2 F 1 F D <\r><\n>
................<\r><\n>
Contents: 4E 1B 55 <\r><\n>
Write : B0 63 C2 F B9 E E <\r><\n>
................


Die Punkte sind Wiederholungen mit dem gleichen Inhalt und werden daher nicht dargestellt.

Also auf RF Ebene wird immer eine ID mitgeschickt.
Hier als Vergleich eine FB
Gruppe#1 einschalten
B0 38 2C 58 B9 03 65 .
Gruppe#1 ausschalten
B0 38 2C 58 B9 04 66
Gruppe#1 unpair
B0 38 2C 58 B9 03 68 .
B0 38 2C 58 B9 13 69 .
B0 38 2C 58 B9 13 6A .
B0 38 2C 58 B9 13 6B .
B0 38 2C 58 B9 13 6C .
B0 38 2C 58 B9 13 6D
B0 38 2C 58 B9 13 6E .
B0 38 2C 58 B9 13 6F .
B0 38 2C 58 B9 13 70 .
B0 38 2C 58 B9 13 71 .
B0 38 2C 58 B9 13 72 .
B0 38 2C 58 B9 13 73 .
B0 38 2C 58 B9 13 74 .
 
Also der Unterschied beim unpair zwischen der Original FB und der FB ist hier auch klar ersichtlich, bei der FB wird zuerst Taste#3 gesendet
dann sofort Taste#13 mehrmals.
Über des WifiLight Modul wird permanent Taste#1 gesendet (so sollte das lt. Anleitung ja auch gehen, geht bei mir aber nicht, habe ich auch mit der FB getestet. Wenn ich auf der FB die Taste#3, Group1 on, gedrückt halte, dann entsteht diese Sequenz und das unpair funktioniert)
Unpair Sequenz WifiLight aus dem Controller

Contents: 45 0 55 <\r><\n>
Write : B0 63 C2 F B9 3 F <\r><\n>
................<\r><\n>
Contents: 45 0 55 <\r><\n>
Write : B0 63 C2 F B9 3 10 <\r><\n>
................<\r><\n>
Contents: 45 0 55 <\r><\n>
Write : B0 63 C2 F B9 3 11 <\r><\n>
................<\r><\n>
Contents: 45 0 55 <\r><\n>
Write : B0 63 C2 F B9 3 12 <\r><\n>
................<\r><\n>
Contents: 45 0 55 <\r><\n>
Write : B0 63 C2 F B9 3 13 <\r><\n>
................<\r><\n>
Contents: 45 0 55 <\r><\n>
Write : B0 63 C2 F B9 3 14 <\r><\n>
................<\r><\n>
Contents: 45 0 55 <\r><\n>
Write : B0 63 C2 F B9 3 15 <\r><\n>
................<\r><\n>
Contents: 45 0 55 <\r><\n>
Write : B0 63 C2 F B9 3 16 <\r><\n>
................<\r><\n>
Contents: 45 0 55 <\r><\n>
Write : B0 63 C2 F B9 3 17 <\r><\n>
................<\r><\n>
Contents: 45 0 55 <\r><\n>
Write : B0 63 C2 F B9 3 18 <\r><\n>
................<\r><\n>
Contents: 45 0 55 <\r><\n>
Write : B0 63 C2 F B9 3 19 <\r><\n>
................<\r><\n>
Contents: 45 0 55 <\r><\n>
Write : B0 63 C2 F B9 3 1A <\r><\n>
................<\r><\n>
Contents: 45 0 55 <\r><\n>
Write : B0 63 C2 F B9 3 1B <\r><\n>
................<\r><\n>
Contents: 45 0 55 <\r><\n>
Write : B0 63 C2 F B9 3 1C <\r><\n>
................<\r><\n>
Contents: 45 0 55 <\r><\n>
Write : B0 63 C2 F B9 3 1D <\r><\n>
................<\r><\n>
Contents: 45 0 55 <\r><\n>
Write : B0 63 C2 F B9 3 1E <\r><\n>
................<\r><\n>
Contents: 45 0 55 <\r><\n>
Write : B0 63 C2 F B9 3 1F <\r><\n>
................<\r><\n>
Contents: 45 0 55 <\r><\n>
Write : B0 63 C2 F B9 3 20 <\r><\n>
................<\r><\n>
Contents: 45 0 55 <\r><\n>
Write : B0 63 C2 F B9 3 21 <\r><\n>
................<\r><\n>
Contents: 45 0 55 <\r><\n>
Write : B0 63 C2 F B9 3 22 <\r><\n>
................


Und hier aus dem Sniffer:
B0 63 C2 0F B9 03 0F
B0 63 C2 0F B9 03 10
B0 63 C2 0F B9 03 11
B0 63 C2 0F B9 03 12
B0 63 C2 0F B9 03 13
B0 63 C2 0F B9 03 14
B0 63 C2 0F B9 03 15
B0 63 C2 0F B9 03 16
B0 63 C2 0F B9 03 17
B0 63 C2 0F B9 03 18
B0 63 C2 0F B9 03 19
B0 63 C2 0F B9 03 1A
B0 63 C2 0F B9 03 1B
B0 63 C2 0F B9 03 1C
B0 63 C2 0F B9 03 1D
B0 63 C2 0F B9 03 1E
B0 63 C2 0F B9 03 1F
B0 63 C2 0F B9 03 20
B0 63 C2 0F B9 03 21


Beim Timing bin ich mir nicht sicher. Im Code meines Gateways gibt es keine timer, aber ich kann mir nicht vorstellen dass das timing über eine UDP Verbindung (aus einer App oder FHEM) so zuverlässig ist um eventuelles RF Timing sicherzustellen, ich vermute da schon eher wie du dass das nur für die Steuerung des Wifi Teils notwendig ist. Mir fehlt nur im Moment eine Idee wie ich das testen könnte?


vg

Karl



M: Thinclient x64 Debian | CUL FS20, HMS100WD, HMS100TF, HMS100T, HMS100CO, S300, S555TH | OWServer DS1420, DS18B20, DS2408 | RFXCOM UVN128, THWR800, THGR228N,RTGR328, PCR800 |Jeelink PCA301 EC3000|CUNO+IR|HMLAN|HMUSB|CUL433 Somfy|mySensors|espEasy
S1:Raspberry mit BPM810, Jeelink EC3000

herrmannj

Moin Karl

Denke wir sollten das komplett in deinem neuen Bridge Thread weiterführen.

Zum pairen: lass uns das doch noch hinten schieben, evtl löst sich das im Verlauf einfacher.

Zum Tuning. Du müsstest den Sketch so umbauen das er testweise die Sequenz Group 1 on/ set color xxx direkt am Stück raus haut.

Vielleicht eine mini Pause, vielleicht Group on 3x repeat, Color auch. Must du mal mit spielen. dann halt schauen ob die bulb das annimmt. Wenn ja: Jackpot

Vg
Joerg