Autor Thema: Milights steuern ohne WLAN (via openMili an USB)  (Gelesen 935 mal)

Offline KernSani

  • Hero Member
  • *****
  • Beiträge: 1439
Milights steuern ohne WLAN (via openMili an USB)
« am: 05 März 2017, 21:46:25 »
Hi zusammen,

mein kleines Bastelprojekt am Wochenende war die Abschaffung der Milight-Bridge... Dazu gibt es schon ein paar Lösungen, soweit ich das gesehen habe, aber keine, die ohne WLAN auskommt, daher möchte ich meine Lösung kurz vorstellen. Eines vorab: Das Ganze ist noch im Beta-Stadium, sicherlich noch nicht 100%ig stabil und Coding-technisch eher fragwürdig ;-)

Die Idee in Kurzform: Arduino Nano mit openmili (nRF24L01) hängt direkt am USB des FHEM-Raspi - Milights werden über den USB direkt angesteuert.

Schritt 1: Arduino Nano und Funkmodul (z.B. nRF024L01) zusammen stecken hier ist das ganz schön beschrieben.
Schritt 2: Den openMili Sketch auf dem Nano zum Laufen bringen.
Schritt 3: ID deiner Milights-Fernbedienung sniffen (Details dazu z.B. hier)
Schritt 4: Im openmili Sketch anpassen, damit der Nano beim Start auf Senden eingestellt ist:
static bool receiving = false;Schritt 5: Angehängtes Modul ins FHEM Verzeichnis packen (und reload)
Schritt 6: openMiliBridge Device anlegen (passenden USB port eintragen, der letzte Parameter ist der open gesniffte ID Code der Fernbedienung)
define openMili openMiliBridge /dev/ttyUSB3@115200 B81234Schritt 7: IODevice der Milight Devices anpassen, als Beispiel:
attr myMilight IODev openMiliSchritt 8: Milights über USB schalten und Bridge wegwerfen...

Wie gesagt, das Ganze ist noch eher experimentell und ob es tatsächlich besser funktioniert, als die Milight Bridge wird sich zeigen müssen...

ToDo: Modul-Coding überarbeiten - habe nur irgendwie eine USB-Ausgabe in die 30_MilightBridge.pm reingefummelt.

Über Feedback / Empfehlungen freue ich mich natürlich...

Grüße,

Oli

Edit 06.03.
* bessere Behandlung des USB Devices (insbesondere bei disconnect/reconnect)
* Set Befehle für disconnect/connect
* Vom Nano zurückgelieferte Daten werden geloggt (Level 4)
* Beschreibung (Schritt 7) angepasst um Reihenfolge-Probleme in fhem.cfg zu vermeiden.
« Letzte Änderung: 06 März 2017, 22:54:24 von KernSani »
RasPi: RFXTRX, HM, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...
Gefällt mir Gefällt mir x 1 Liste anzeigen

Offline ToM_ToM

  • Full Member
  • ***
  • Beiträge: 284
    • ThomasZFoto
Antw:Milights steuern ohne WLAN (via openMili an USB)
« Antwort #1 am: 27 April 2017, 12:53:07 »
Hallo KernSani,

das klingt interessant.
Ich besitzte jedoch nur das MiLight Modul "Wireless WiFi Steuermodul LED-Controller Wlan 2.4G RGBW".
Das heißt, ich habe keine Fernbedienung dazu.

Gibt es hierzu auch eine Lösung?

VG, Thomas
Hardware: BananaPi, Busmaster CUL, SanDisk 16GB Ultra SD, Kingston 1GB USB-Stick | Software: Bananian, FHEM 5.7

Offline Beta-User

  • Hero Member
  • *****
  • Beiträge: 1297
  • Hausaufgaben schon gemacht?
    • Perpetual beta
Antw:Milights steuern ohne WLAN (via openMili an USB)
« Antwort #2 am: 27 April 2017, 14:11:16 »
Gibt es hierzu auch eine Lösung?

Du kannst dann entweder die ID Deines WLAN-Controllers sniffen (was mir am naheliegendsten erscheint) oder auch willkürlich eine ID festlegen (6-stellige HEX), mußt dann aber noch pairen, also gleich nach power-on der Leuchtmittel einen Befehl absetzen. Ist wohl beliebig, am besten ist aber nach meiner Erfahrung weiß, volle Leuchtstärke ohne ramp.

@KernSani:
Klasse Sache, werde ich bei Gelegenheit mal ausprobieren und hätte dann WLAN aus meiner FHEM-Installation vollends verbannt :).
Wie ich das verstanden habe, gibt es bei diesem Ansatz pro FB-Kanal je ein IO-Modul-define, hat man also 16 Leuchtmittelgruppen, braucht man 2x16 defines (jeweils Milight-Bridge+Milight-Device)?
Hast Du schon Ideen, wie man den output aus den FB-Empfängen weiter verarbeiten könnte?  Die FB-ID als userattr bei den Milight-Devices hinterlegen, bei Empfang auswerten, welche Devices das als attr. hinterlegt hatten und dann den Status mit setreading (?) anpassen? Dafür müßte man doch eigentlich "nur noch" aus dem Sendecode den richtigen Status rückrechnen. Das dürfte aber kein Problem sein. Oder doch, weil es dann im obigen 16-er Beispiel auch viele Devices wären, die den USB-Code verarbeiten wollen? ...könnte man ggf. aber auch mit einem "Ist Empfangs-Master-Device-Attribut" umgehen.?

Mal schaun'...

Gruß, Beta-User
Ubuntu 16.04@ARM-TV-Box | ConfigDB | VCCU | MySensors seriell (2.2.0-beta, RS485+nRF24) | DS18B20@MySensors | Milight@ESP-GW | SIGNALduino | MapleCUN

Offline jlanzing

  • Newbie
  • Beiträge: 2
Antw:Milights steuern ohne WLAN (via openMili an USB)
« Antwort #3 am: 27 April 2017, 14:55:54 »
Hallo KernSani,
dein Vorschlag hat gut funktioniert. Habe mich dann aber aus Kompatibilitätsgründen dafür entschieden:

https://servernetworktech.com/2014/09/limitlessled-wifi-bridge-4-0-conversion-raspberry-pi/

Voraussetzung eine original Milight Bridge und ein wenig Lötkenntnisse.

Grüsse Jürgen

Offline KernSani

  • Hero Member
  • *****
  • Beiträge: 1439
Antw:Milights steuern ohne WLAN (via openMili an USB)
« Antwort #4 am: 29 April 2017, 00:04:08 »
Ich besitzte jedoch nur das MiLight Modul "Wireless WiFi Steuermodul LED-Controller Wlan 2.4G RGBW".
Das heißt, ich habe keine Fernbedienung dazu.
Gibt es hierzu auch eine Lösung?
Wenn die Birnen auf die selben Codes hören, wie bei der "normalen" Milight Bridge, sollte das so funktionieren, wie Beta-User sagt.

Wie ich das verstanden habe, gibt es bei diesem Ansatz pro FB-Kanal je ein IO-Modul-define, hat man also 16 Leuchtmittelgruppen, braucht man 2x16 defines (jeweils Milight-Bridge+Milight-Device)?
Beim oben dargestelltem Ansatz muss nur das Bridge Device definiert werden und das IODev-Attribut in den bestehenden Milight-Devices geändert werden. Aktuell wird bei "meiner" openmili-Bridge die ID in der DEF mitgegegeben, d.h. pro Bridge eine ID. Ich könnte mir aber vorstellen, dass man das erweitert, so dass ein Device mehrere IDs bedienen kann (das würde aber vermutlich eine Anpassung im MILIGHT_DEVICE Modul erfordern). Alternativ müsste es theoretisch funktionieren mehrere openmili-Bridge devices auf den selben physischen Nano zu legen, das habe ich aber nicht getestet.
[/quote]
Zitat
Hast Du schon Ideen, wie man den output aus den FB-Empfängen weiter verarbeiten könnte?  Die FB-ID als userattr bei den Milight-Devices hinterlegen, bei Empfang auswerten, welche Devices das als attr. hinterlegt hatten und dann den Status mit setreading (?) anpassen? Dafür müßte man doch eigentlich "nur noch" aus dem Sendecode den richtigen Status rückrechnen. Das dürfte aber kein Problem sein. Oder doch, weil es dann im obigen 16-er Beispiel auch viele Devices wären, die den USB-Code verarbeiten wollen? ...könnte man ggf. aber auch mit einem "Ist Empfangs-Master-Device-Attribut" umgehen.?
darüber habe ich mir noch nicht wirklich Gedanken gemacht, da ich meine FB nicht benutze... Das sollte aber auch über das Bridge-Device steuerbar sein...

Das Projekt liegt bei mir aktuell ein bisschen auf Eis, da ich a) die Nanos für mySensors-Nodes gebraucht habe und b) ich mit der Funkleistung der RF024Ns (ohne Antenne) nicht zufrieden war. Die nächste Lieferung aus China lässt auf sich warten, ich will aber am Wochenende mal versuchen meinem mySensors Gateway openmili beizubringen... Wenn das klappt, kann's weiter gehen

Grüße,

Oli
RasPi: RFXTRX, HM, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

Offline Beta-User

  • Hero Member
  • *****
  • Beiträge: 1297
  • Hausaufgaben schon gemacht?
    • Perpetual beta
Antw:Milights steuern ohne WLAN (via openMili an USB)
« Antwort #5 am: 29 April 2017, 06:40:49 »
Beim oben dargestelltem Ansatz muss nur das Bridge Device definiert werden und das IODev-Attribut in den bestehenden Milight-Devices geändert werden. Aktuell wird bei "meiner" openmili-Bridge die ID in der DEF mitgegegeben, d.h. pro Bridge eine ID.
OK, das bedeutet, die Kanalinfo (letztes Byte des zu sendenden Befehls) wird wie üblich generiert, für 16 Kanäle wären das also 4 Bridge-Defines wie bisher. Danke für die Erläuterung.
Zitat
Ich könnte mir aber vorstellen, dass man das erweitert, so dass ein Device mehrere IDs bedienen kann (das würde aber vermutlich eine Anpassung im MILIGHT_DEVICE Modul erfordern).
Das dachte ich auch erst. Habe mir den Quellcode von Milight_device noch nicht unter dem Gesichtspunkt näher angesehen, aber vielleicht könnte man mehr virtuelle Kanäle als sonst üblich definieren und dann die zugehörigen weiteren FB-ID's als Attribute bei der Bridge speichern?
Also: 1. ID aus dem Define wie bisher,
2. ID etc... bei Ansteuerung von Kanal 10-19 (?) bzw. 20-29 (?)
Muß ich mir bei Gelegenheit mal ansehen, ob Milight_device tollerant für sowas wäre...
Mehrere logische Devices auf ein physisches IO zu legen sollte gehen, werde das testen, habe noch ein WCH-Nano-MySensors-GW mit "großem" Modul hier rumliegen.
Aber auch bei mir eilt das alles nicht, viel Spaß beim Testen!

Gruß, Beta-User
Ubuntu 16.04@ARM-TV-Box | ConfigDB | VCCU | MySensors seriell (2.2.0-beta, RS485+nRF24) | DS18B20@MySensors | Milight@ESP-GW | SIGNALduino | MapleCUN

Offline bmilos

  • Jr. Member
  • **
  • Beiträge: 52
Antw:Milights steuern ohne WLAN (via openMili an USB)
« Antwort #6 am: 09 Juli 2017, 21:08:36 »
Hi,

hat jemand eine Idee ich konnte alles wie berschrieben ausführen, allerdings schaltet der nano Transmitter nichts, resp. den Controller nicht.
Ich sehe dass er verbunden ist und per SerialMonitor sehe ich auch das er etwas empfängt.

Log vom Empfangen und Senden:
2017.07.09 21:52:23 4 : openMili_Read: B0 D6 40 70 C1 03 68
2017.07.09 21:52:23 4 : openMili_Read: .
2017.07.09 21:52:23 4 : openMili_Read: .
2017.07.09 21:52:23 4 : openMili_Read: .
2017.07.09 21:52:23 4 : openMili_Read: .
2017.07.09 21:52:23 4 : openMili_Read: .
2017.07.09 21:52:23 4 : openMili_Read: .
2017.07.09 21:52:23 4 : openMili_Read: .
2017-07-09 21:52:27 MilightDevice Test_LED_Stripes transitionInProgress: 1
2017.07.09 21:52:27 4 : openMili_Write: Command: 45 00 552017.07.09 21:52:27 4 : openMili_Write: Command found: 32017.07.09 21:52:27 4 : openMili_Write: USBCommand: B0D6400000033C 2017.07.09 21:52:27 4 : openMili_Write: Command: 4E 1A 552017.07.09 21:52:27 4 : openMili_Write: Brightness: 1A..192 - C02017.07.09 21:52:27 4 : openMili_Write: USBCommand: B0D64000C00E3D 2017.07.09 21:52:27 4 : openMili_Write: Command: 40 B0 552017.07.09 21:52:27 4 : openMili_Write: USBCommand: B0D64018000F3E 2017.07.09 21:52:27 4 : openMili_Write: Command: 45 00 552017.07.09 21:52:27 4 : openMili_Write: Command found: 32017.07.09 21:52:27 4 : openMili_Write: USBCommand: B0D6400000033F 2017.07.09 21:52:27 4 : openMili_Write: Command: 4E 1A 552017.07.09 21:52:27 4 : openMili_Write: Brightness: 1A..192 - C02017.07.09 21:52:27 4 : openMili_Write: USBCommand: B0D64000C00E40 2017.07.09 21:52:27 4 : openMili_Write: Command: 40 B0 552017.07.09 21:52:27 4 : openMili_Write: USBCommand: B0D64018000F41 2017-07-09 21:52:27 MilightDevice Test_LED_Stripes transitionInProgress: 0

Gruss
 
« Letzte Änderung: 09 Juli 2017, 21:53:38 von bmilos »
Raspberry Pi 3, nanoCUL 433, FHEMduino, HMLAN, Homematic, Intertechno, MiLight, MySensor

Offline bmilos

  • Jr. Member
  • **
  • Beiträge: 52
Antw:Milights steuern ohne WLAN (via openMili an USB)
« Antwort #7 am: 12 Juli 2017, 22:22:08 »
hat sich gelöst, der Scatch hatte einen Fehler :)
Raspberry Pi 3, nanoCUL 433, FHEMduino, HMLAN, Homematic, Intertechno, MiLight, MySensor