Autor Thema: Milight via MQTT (Modul für Sidoh-Bridge)  (Gelesen 440 mal)

Offline Beta-User

  • Hero Member
  • *****
  • Beiträge: 3433
Milight via MQTT (Modul für Sidoh-Bridge)
« am: 12 April 2018, 23:23:41 »
Hallo zusammen,

nachdem es so zu sein scheint, dass die MQTT-Schnittstelle der Milight-Bridge von Chris Mullins (sidoh) etwas speziell ist, kommt vermutlich eine Integration der Anpassungen für die Zusammensetzung der Sendemessages als JSON nicht wie hier diskutiert in Frage.

Anbei daher ein erster Entwurf der Weiterentwicklung des von @lufi erstmals hier vorgestellten Milight-MQTT-Moduls.

Neben der sendeseitigen Erstellung der JSON-Kommandos übernimmt das Modul auch direkt das Dekodieren der JSON-Rückmeldungen, man benötigt also nicht extra expandJSON.

Vorteil ggf. der HTTPMOD-Lösung, die hier vorgestellt wurde:
Die Rückmeldungen bei Schaltvorgängen über Fernbedienungen oder die Bridge selbst erfolgen direkt und müssen nicht gepollt werden (die Bridge ermöglicht aber auch eine websocket-Uterstützung).
Vorteil der Bridge an sich: Es kann praktisch eine unbegrenzte Anzahl von "Fernbedienungen" definiert werden, so dass Gruppenschaltungsszenarien recht einfach und vielseitig denkbar sind. Es könnte z.B. eine zentrale Fernbedienung definiert werden, über die sich alle bulbs mit einem Befehl an- oder ausschalten lassen, einzelne Stockwerke lassen sich auf einem Kanal zusammenfassen usw.. Allerdings scheint die Zahl der FB's begrenzt zu sein, an die eine bulb angelernt werden kann.

Ansonsten werden eine ganze Reihe von - zu den vorgeschlagenen Grundeinstellungen der Bridge passenden - Attributen gesetzt und es gibt auch ein dynamisches DevStateIcon (das aber leider noch nicht sinnvolle Farben zeigt).

Jedenfalls mit meinen Bulbs und LED-Kontrollern (alles RGBW-Modelle, die ehemals auf V4-Bridges gehört haben) scheint das zu passen, für CCT-Varianten kenne ich die passenden Einstellungen leider nicht, kann das aber gerne bei Bedarf nachpflegen.

Da die Bridge unmittelbar auch Fernbedienungscodes auswertet, kann eine entsprechende FB auch als reines input-Device genutzt werden (meine werden (bislang) leider nicht alle erkannt - die 1-kanaligen funktionieren nicht).

Beispiel für das Anlegen:
define Milightbeispiel MQTT_MILIGHTDEVICE 0xAB12 2 rgbw myMQTT

Danach sollte sich eine Bulb über einen on-Befehl anlernen lassen und dann auch steuern. Wer hat, sollte/kann natürlich auch eine FB benutzen, wobei der Status dann (weitestgehend) passen sollte, auch wenn z.B. die Bulb über die Gruppenfunktion der FB oder der Bridge geschaltet wird.

Es müssen in der Bridge neben der Einrichtung für MQTT allgemein noch teilweise weitere Infos ausgewählt werden, die per JSON jeweils gesendet werden sollen (insbes. level).

Was noch nicht paßt:
- Icon-Farbe (wer weiß, wie man aus den Angaben der Brigde einen verwertbaren RGB-Wert macht: Bitte melden...)
- Status bei Wechseln von/nach Nacht-Modus (über set_white, bislang eine Einschränkung der Firmware, ich hoffe auf einen baldigen update).
- CCT-Geräte (s.o.)

So ganz fertig ist es wie gesagt noch nicht, aber grundsätzlich verwendbar schon (für RGBW-Devices, für die anderen müssen ggf. eigene Anpassungen an den Attributen erfolgen). Konstruktive Beiträge sind bei Interesse willkommen.

EDIT: Anmerkungen zu Milight allgemein
Auch wenn hier eine Option zur besseren Snychronisation des wahren Zustands eines Milight-Leuchtmittels (bulb) angeboten wird, soll erwähnt werden, dass die Milight-Technologie auch Nachteile hat:
- Der Funkverkehr zwischen der Bridge und der bulb ist unverschlüsselt (ähnlich wie z.B. bei IT-Komponenten)
- Es gibt keinen Rückkanal, über den das Leuchtmittel melden könnte, ob ein Befehl auch tatsächlich angekommen ist (ebenfalls wie bei IT)
- Kurz nach dem Einschalten der Spannung befinden sich die bulb kurz im Programmiermodus und wird ggf. an jede Fernbedienung angelernt, die zu diesem Zeitpunkt irgendeinen Befehl sendet. Beispiel: Es könnte ein unbeabsichtigtes Pairing an eine Bridge des Nachbarn erfolgen, der gerade einen Sonnenuntergang simuliert und viele Befehle sendet. Die bulbs sind daher nur sehr bedingt für einen Einsatz hinter Schaltern zu empfehlen.
Eine etwas umfassendere Diskussion hierzu ist um diesen Beitrag hier herum zu finden.

Gruß, Beta-User
« Letzte Änderung: 13 April 2018, 08:57:48 von Beta-User »
Server: HP-T5740 mit Debian stretch (i386) + aktuellem FHEM | ConfigDB | VCCU mit einiger HM-Hardware | MySensors seriell (2.3.0-alpha@RS485, div. konkrete Hardware, u.a. einige DS18B20) | Milight@ESP-GW | SIGNALduino | MapleCUN

Offline tomcat089

  • New Member
  • *
  • Beiträge: 9
Antw:Milight via MQTT (Modul für Sidoh-Bridge)
« Antwort #1 am: 09 Juli 2018, 22:35:10 »
Hallo Beta-User
finde ich super, daß Du Dir die Arbeit gemacht hast. Funktioniert ausgezeichnet mit der sidoh-Firmware. Der einzige kleine Schönheitsfehler ist die fehlende Unterstützung der RGB-CCT devices. Ich habe versucht in den Attributen etwas "herumzupfuschen", aber leider ohne Erfolg. Du hattest angeboten, das noch einzubringen. Ist das noch aktuell?
Gruß Joachim

Offline Beta-User

  • Hero Member
  • *****
  • Beiträge: 3433
Antw:Milight via MQTT (Modul für Sidoh-Bridge)
« Antwort #2 am: 09 Juli 2018, 23:18:40 »
Hi Joachim,

Danke für das Interesse, kann ich gerne machen, im Moment habe ich allerdings eine "kleine" andere Baustelle und scheinbar funktioniert das mit dem JSON-Expandieren auch (nicht?) mehr, da muß ich also eh' ran.
Für die CCT-Sache benötige ich aber in jedem Fall Rückmeldung, wie das "eigentlich" aussehen soll. Kannst du mal einen Mitschnitt des Traffics zu einer CCT liefern?
Gruß, Beta-User
Server: HP-T5740 mit Debian stretch (i386) + aktuellem FHEM | ConfigDB | VCCU mit einiger HM-Hardware | MySensors seriell (2.3.0-alpha@RS485, div. konkrete Hardware, u.a. einige DS18B20) | Milight@ESP-GW | SIGNALduino | MapleCUN

Offline JackKilby

  • Newbie
  • Beiträge: 1
Antw:Milight via MQTT (Modul für Sidoh-Bridge)
« Antwort #3 am: 17 Juli 2018, 09:56:47 »
Hallo zusammen, nach dem ich bisher immer nur gelesen habe hier mal ein Lösungsvorschlag wie ich das mit cct LED-Streifen gelöst habe. Die cct-LED-Streifen werden bei mir unter RGB+CCT gesteuert. Das MQTT-Modul ist wie folgt eingerichtet:

MQTT topic pattern:
milight/:device_id/:device_type/:group_id
MQTT update topic pattern:
milight/update/:hex_device_id/:device_id/:device_type/:group_id
MQTT state topic pattern:
milight/state/:hex_device_id/:device_id/:device_type/:group_id
Das Modul installieren wie beschrieben und ein Device neu anlegen:
define Milightbeispiel MQTT_MILIGHTDEVICE 0x0815 2 rgb_cct myMQTT
neues publish anlegen:
attr Milightbeispiel publishSet_color_temp milight/0x0815/rgb_cct/2
webCmd ändern in:
level:color_temp:command
und widgetOverride ändern in:
command:uzsuSelectRadio,Weiss,Nacht color_temp:colorpicker,CT,153,1,357 level:colorpicker,BRI,0,1,100
Bei mir läuft die Milight Bridge auf dem ESP8266. Bei den subscribeReading_* Kanälen darauf achten das milight/state/... steht und bei update milight/update/... sowohl unter der MQTT-Weboberfläche des Milight-Hub als auch in fhem, dann werden auch die Werte in FHEM aktualisiert.

« Letzte Änderung: 17 Juli 2018, 10:47:05 von JackKilby »

Offline Beta-User

  • Hero Member
  • *****
  • Beiträge: 3433
Antw:Milight via MQTT (Modul für Sidoh-Bridge)
« Antwort #4 am: 17 Juli 2018, 10:22:42 »
Danke für die Info bzgl. der richtigen Einstellungen für cct_rgb, baue ich bei Gelegenheit automatisiert ein.

Das mit der fehlenden Auswertung der FB ist bei mir auch so, das hat mal funktioniert... Schaue es mir an, wird aber etwas dauern. Über Zuarbeit an der Stelle würde ich mich sehr freuen, das kann eigentlich nichts größeres sein.

Gruß, Beta-User
Server: HP-T5740 mit Debian stretch (i386) + aktuellem FHEM | ConfigDB | VCCU mit einiger HM-Hardware | MySensors seriell (2.3.0-alpha@RS485, div. konkrete Hardware, u.a. einige DS18B20) | Milight@ESP-GW | SIGNALduino | MapleCUN

Offline tomcat089

  • New Member
  • *
  • Beiträge: 9
Antw:Milight via MQTT (Modul für Sidoh-Bridge)
« Antwort #5 am: Gestern um 21:55:00 »
Bzgl. des Mitschnitts des Traffics zu einer CCT. Was benötigst Du genau und wie kann ich Dir die Daten liefern?
Gruß Joachim