Milight via MQTT (war: Modul für Sidoh-Bridge, jetzt: MQTT2)

Begonnen von Beta-User, 12 April 2018, 23:23:41

Vorheriges Thema - Nächstes Thema

Snocksman

#270
Ich habe esp_milight_hub_rgb_cct_bulb ausgewählt.

Wenn ich der setList einen Eintrag für RBG hinzufüge, bekomme ich die Farbbuble im webCmd richtig angezeigt; Allerdings kann ich damit trotzdem die Farbe der Milight Bulb nicht umschalten...

Hier einmal der Eintrag in meiner setList:

  RGB:colorpicker,RGB,0,6.25,100 milight/0x647/rgb_cct/1 {"$EVTPART0":"$EVTPART1"}


Ich vermute mal, dass ich damit noch irgendwas falsch gemacht habe...

Beta-User

Hmm, die Bridge ist eigentlich nicht wirklich "gut", was RGB in "FHEM-typischem" Format angeht. Das dürfte der Grund gewesen sein, warum hier ausschließlich hue auftaucht.

Siehe https://github.com/sidoh/esp8266_milight_hub/blob/master/docs/openapi.yaml

Die Anforderung umzusetzen könnte eventuell klappen, wenn man hex_color verwendet:
Zitat* `hex_color` - same as `color` except in hex color (e.g., `#FF0000` for red).

Würde mal folgendes ins Rennen schicken:
RGB:colorpicker,RGB,0,6.25,100 milight/0x647/rgb_cct/1 {"hex_color":"#$EVTPART1"}
(Wobei mir RGB in Großschreibung nicht behagt und ggf. die Rückmeldung nicht zum versendeten Inhalt paßt => jsonMap verwenden/anpassen... Will sagen: Wenn man das anfassen will, muss man "richtig modernisieren", die MiLight-Geschichte gehört zum "Urschlamm" aus der Zeit vor vielen Erweiterungen bei MQTT2_DEVICE/json2nameValue(). Ich nehme gerne eure Vorschläge entgegen... ;) )
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Snocksman

#272
Macht es einen wirklichen Unterschied, ob RGB oder rgb (außer der Optik) ? Ich habs jetzt mal klein geschrieben...

also in der setList:

rgb:colorpicker,RGB,0,6.25,100 milight/0x647/rgb_cct/1 {"hex_color":"#$EVTPART1"}


und im webCmd dann:

rgb ff0000


Ich bekomme dann im webCmd auch eine rote Bubble angezeigt, aber wenn ich drauf klicke reagiert die Lampe nicht.
Muss ich in dem Milight Hub unter Group State Fields dann auch hex_color aktivieren...? (Probert hab ichs mal, hat aber nichts gebracht...)
Kann ich mir eigentlich irgendwie anzeigen lassen, was FHEM dann wirklich an den Milight-Hub schickt ? ...Also um mal sicherzustellen, dass die MQTT Message an den Hub auch passt...

@Mitch: Wenn es bei dir funktioniert, wäre es wirklich cool, wenn du dein Device hier mal reinpasten könntest.

Beta-User

 ::) Ich kann dir die Frage nicht abschließend beantorten, ob rgb-Kleinschreibung einen wirklichen Vorteil bringt. Das generelle Thema bei allen settern ist Folgendes: einige externe Anbindungen (angefangen bei Sprachsteuerung wie alexa) holen sich die vorhandenen setter und "mappen" in ihren "Sprachraum", was sie (er-) kennen. Was nicht bekannt ist, muss man selbst anlegen... (u.A. deswegen ist es nicht ganz unwichtig, welcher der modes bei einem Heizungsgerät denn jetzt "mode" heißt...)
Da in mqtt2.template für rgb-Geräte bisher (jedenfalls soweit ich das auf die Schnelle gesehen habe) die Kleinschreibung verwendet wurde, gehe ich einfach mal von der Unterstellung aus, das sei eben unproblematisch, und von der "großen Schwester" weiß ich es nicht ;D ...

Was den MQTT-Verkehr angeht, kann man entweder rawEvents am IO (+Event-Monitor) passend einstellen, oder eben ein externes Tool wie mosquitto_sub darauf ansetzen.

Wenn es "richtig" versendet wird, müßte die Bridge das auch auswerten, die "fields" dienen afaik nur dazu, was gewünschtes (z.B. als Information über Fernbedienungsaktionen) rauszuschicken (kann aber sein, dass das sinnvoll ist, um "den Informationskreis" zu schließen).
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Snocksman

Ich habs hinbekommen !  8)

Ich habe im Milight-Hub nochmal das Feld x_color unter Group State Fields aktiviert und dann die Lampe auf eine andere Farbe eingestellt. Dabei ist mir aufgefallen, das FHEM per MQTT gar nicht x_color, sondern nur color als reading zurückgeliefert bekommt. Also in der setList von x_color auf color geändert und siehe da, es geht !!!

KNET

Ich habe es geschafft die "esp8266_milight_hub_bridge" zum Laufen zu bringen. Einer mit 4 Zonen funktioniert. Da ich jedoch noch mehr Zonen möchte, habe ich versucht, einen zweiten zu integrieren. Leider funktioniert das bei mir nicht. Ich kann zwar zwei anlegen, aber sie schalten beide immer gleichzeitig.

Was habe ich den falsch gemacht? Ich würde mich über Hilfe freuen.

Gruss KNET

Beta-User

Na ja, vermutlich (...list fehlen (!)...) verwendest du dieselben Topics...?

Aber warum überhaupt einen 2. Hub? Du kannst praktisch beliebig viele "Remote-ID's" mit nur einem Hub simulieren (und damit mehr Zonen steuern als in einem typischen Ein- oder Mehrfamilienhaus erforderlich) - die Frage ist dann nur, ob die Funkreichweite des Hub ausreicht, um alle Bulbs zu erreichen.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

KNET

Hallo Bata-User

Danke für deine Antwort. Ich habe das auch Bemerkt mit den Topics. Ich habe die jetzt nummeriert mit einer _1 und _2 erweitert.

Anscheinend habe nicht ganz verstanden, wie die "esp8266_milight_hub_bridge" funktioniert.

Ich habe die Lampe auf dem Hub_1 auf die Zone 1 angelernt. Ich musste jedoch feststellen, dass wenn ich im WEB-GUI vom Hub_2 die Zone 1 einschalte, die Lampe vom Hup_1 Zone 1 angeht. Also Hub_1 und Hub_2 machen im WEB-GUI immer dasselbe. Das verstehe ich nicht ganz. Wie funktioniert den das ganze? Ich bin davon ausgegangen, dass beim "Pair" die Lampe sich im Hub in die Zone ausgewählte Zone einträgt.

Wie kann ich den beliebige "Remote-IDs" machen? Ich gehe davon aus, dass "Remote-IDs" Lampen sind, oder? Mir würde ein vorerst ein Hub reichen von der Distanz.

Gruss KNET

Beta-User

Zitat von: Beta-User am 18 Februar 2021, 09:49:00
...list fehlen (!)...
Du solltest dir die Topics genauer ansehen, und mit der etwas diffusen Beschreibung kann ich wenig anfangen.

Bei https://github.com/sidoh/esp8266_milight_hub#use-it gibt es einen screenshot vom Web-Interface. Du kannst statt "0x1111" alles mögliche (4 HEX-Stellen) eingeben und musst dann eben die passende "remote type" links einstellen, was genau, hängt von deinen Leuchtmitteln ab.

Und die "Lampen" machen bei MiLight gar nichts auf dem Hub, das sind schlicht "dumme Empfänger". Wer auch immer das passende Signal sendet, den aktzeptieren die.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

KNET

Hallo Beta-User

Jetzt habe ich es begriffen, wie ich die Sidoh Bridge einrichten muss. Jetzt funktioniert es so wie es soll.

Danke für die Hilfe

TomLee

@Jörg

Falls es dir in dem at aufgefallen sein sollte, folgende Änderungen hab ich dazu in meinem Milight-Device vorgenommen:

Zitatdefmod MQTT2_Mi_Wecklicht MQTT2_DEVICE milight
attr MQTT2_Mi_Wecklicht userattr lightSceneParamsToSave lightSceneRestoreOnlyIfChanged:1,0
attr MQTT2_Mi_Wecklicht IODev MQTT2_Server
attr MQTT2_Mi_Wecklicht alexaName jupiter
attr MQTT2_Mi_Wecklicht comment To switch device also on when changing brightness, change payload pattern to {"status":"ON","$EVTPART0":"$EVTPART1"} or add a new element to setList, similar to brightness, e.g.brightness_on and change payload pattern as described.
attr MQTT2_Mi_Wecklicht devStateIcon {zigbee2mqtt_devStateIcon255($name,"hex",1)}
attr MQTT2_Mi_Wecklicht eventMap /set_white:Weiss/night_mode:Nacht/white_mode:white/
attr MQTT2_Mi_Wecklicht genericDeviceType light
attr MQTT2_Mi_Wecklicht group Wohnzimmer
attr MQTT2_Mi_Wecklicht homebridgeMapping On=state,valueOn=ON,valueOff=OFF\
Brightness=brightness::brightness,maxValue=100,factor=0.39216,delay=true\
Hue=hue,factor=0.0054,cmd=hue
attr MQTT2_Mi_Wecklicht icon light_control
attr MQTT2_Mi_Wecklicht jsonMap color:rgb
attr MQTT2_Mi_Wecklicht model esp_milight_hub_rgbw_bulb
attr MQTT2_Mi_Wecklicht readingList milight/states/0x8D56/rgbw/1:.* { my $ret=json2nameValue($EVENT,'',$JSONMAP);;$ret->{state}=lc($ret->{state});; return $ret }\
milight/updates/0x8D56/rgbw/1:.* { json2nameValue($EVENT) }]

milight/LWT:.* { json2nameValue($EVENT) }
attr MQTT2_Mi_Wecklicht room Deko,MQTT2_DEVICE,Privat->OG->Wohnzimmer
attr MQTT2_Mi_Wecklicht setExtensionsEvent 1
attr MQTT2_Mi_Wecklicht setList on:noArg milight/0x8D56/rgbw/1 {"status":"ON"}\
on_transition:slider,3,10,3600 milight/0x8D56/rgbw/1 {"status":"ON","transition":$EVTPART1}\
off:noArg milight/0x8D56/rgbw/1 {"status":"OFF"}\
off_transition:slider,3,10,3600 milight/0x8D56/rgbw/1 {"status":"OFF","transition":$EVTPART1}\
brightness:colorpicker,BRI,0,15,255 milight/0x8D56/rgbw/1 {"$EVTPART0":"$EVTPART1"}\
hue:colorpicker,HUE,0,1,358 milight/0x8D56/rgbw/1 {"$EVTPART0":"$EVTPART1"}\
command:uzsuSelectRadio,Weiss,Nacht milight/0x8D56/rgbw/1 {"$EVTPART0":"$EVTPART1"}\
sun:noArg milight/0x8D56/rgbw/1 {"status":"ON","level":"1","hue":"25","brightness":128,"transition":600}\
color_temp:colorpicker,CT,153,1,370 milight/0x8D56/rgbw/1 {"$EVTPART0":"$EVTPART1"}\\
saturation:colorpicker,BRI,0,1,100 milight/0x8D56/rgbw/1 {"$EVTPART0":"$EVTPART1"}\\
command:uzsuSelectRadio,Weiss,Nacht milight/0x8D56/rgbw/1 {"$EVTPART0":"$EVTPART1"}\\
program:uzsuSelectRadio,Mode,Faster,Slower milight/0x8D56/rgbw/1 {"command":"$EVTPART1"}\\
mode:select,0,1,2,3,4,5,6,7,8 milight/0x8D56/rgbw/1 {"$EVTPART0":"$EVTPART1"}\\
dim:uzsuSelectRadio,Up,Down milight/0x8D56/rgbw/1 {"command":"$EVTPART1"}\
b:colorpicker,BRI,0,15,255 {my $v=ReadingsNum('MQTT2_Mi_Wecklicht','color_g','5');;qq(milight/0x8D56/rgbw/1 {"brightness":200,"transition": $v})}\
rgb:colorpicker,RGB {"milight/0x8D56/rgbw/1 ".zigbee2mqtt_RGB2JSON($EVTPART1)}\
modeToggle:noArg {ReadingsVal($NAME, 'status', 'flip' ) eq 'ON' ? return fhem("set OG_Echo_Wohnzimmer speak bla;;sleep 4;;set OG_Echo_Wohnzimmer speak bli") : return fhem("set OG_Echo_Wohnzimmer speak bla;;sleep 4;;set OG_Echo_Wohnzimmer speak bli");;}\
modeToggle:noArg {return 'milight/0x8D56/rgbw/1 {"status":"ON"}';;fhem("set OG_Echo_Wohnzimmer speak bli");;}
attr MQTT2_Mi_Wecklicht setStateList on off sun
attr MQTT2_Mi_Wecklicht userReadings hex:color_r.* {Color::rgb2hex(ReadingsVal($name,"color_r",255),ReadingsVal($name,"color_g",255),ReadingsVal($name,"color_b",255))}, hue:bulb_mode.*white {"0"}
attr MQTT2_Mi_Wecklicht verbose 2
attr MQTT2_Mi_Wecklicht webCmd brightness:hue:command
attr MQTT2_Mi_Wecklicht webCmdLabel Helligkeit\
:Farbe\
:Modus\
:
setstate MQTT2_Mi_Wecklicht off
setstate MQTT2_Mi_Wecklicht 2022-09-13 12:03:19 brightness 51
setstate MQTT2_Mi_Wecklicht 2022-09-13 12:03:19 bulb_mode color
setstate MQTT2_Mi_Wecklicht 2022-09-13 12:03:19 device_id 36182
setstate MQTT2_Mi_Wecklicht 2022-09-12 17:42:09 firmware milight-hub
setstate MQTT2_Mi_Wecklicht 2022-09-13 12:03:19 hue 71
setstate MQTT2_Mi_Wecklicht 2022-09-12 17:42:09 ip_address 192.168.188.35
setstate MQTT2_Mi_Wecklicht 2022-09-12 17:42:09 reset_reason Software/System restart
setstate MQTT2_Mi_Wecklicht 2022-09-13 12:03:19 rgb #D0FF00
setstate MQTT2_Mi_Wecklicht 2022-09-13 12:03:19 state off
setstate MQTT2_Mi_Wecklicht 2022-09-12 17:42:09 status connected
setstate MQTT2_Mi_Wecklicht 2022-09-12 17:42:09 version 1.10.8

Ich hab keine Ahnung ob das mit dem rgb-Wert so korrekt umgesetzt ist (das liegt schon etwas länger zurück als ich mich damit ungern beschäftigte und das kam raus), aber das setzen eines "rgb"-Wert passt, auch wenn ein anderer Wert zurückkommt (dem müsste man noch die Raute abzwacken, das der setter die Farbe auch anzeigt ).

Wie man sieht ist das Template auch noch nicht auf devicetopic umgestellt.

Ach und milight/LWT:.* { json2nameValue($EVENT) } hab ich ergänzt das kommt im Template gar nicht vor ?


TomLee

Ergänzend, zum Verständnis mit dem rgb:

SENT
milight/0x8D56/rgbw/1
{"status":"ON"}
milight_hub_523894
milight/updates/0x8D56/rgbw/1
{"state":"ON"}
milight_hub_523894
milight/states/0x8D56/rgbw/1
{"state":"ON","brightness":51,"hue":71,"color":"#D0FF00","bulb_mode":"color","device_id":36182}
SENT
milight/0x8D56/rgbw/1
{"color":{"b":255,"g":60,"r":46},"transition":1}
milight_hub_523894
milight/updates/0x8D56/rgbw/1
{"hue":72}
milight_hub_523894
milight/states/0x8D56/rgbw/1
{"state":"ON","brightness":51,"hue":72,"color":"#CBFF00","bulb_mode":"color","device_id":36182}
milight_hub_523894
milight/updates/0x8D56/rgbw/1
{"hue":122}
milight_hub_523894
milight/states/0x8D56/rgbw/1
{"state":"ON","brightness":51,"hue":121,"color":null,"bulb_mode":"color","device_id":36182}

Beta-User

Gibt bei Gelegenheit ein update zu dem rgbw, habe mich mit dieser Sache schon ewig nicht mehr beschäftigt, zumal die meisten MiLight-Bulbs zwischenzeitlich getauscht sind.

Das sollte dann das mit rgb und Kleinschreibung im Griff haben.
devicetopic war mir jetzt zu viel (geht ja auch so und ist sowieso kaum veränderlich, dazu sind es mehrere Zweige, die in der readingList eine Rolle spielen.

LWT ist beim ESP, und da gehört es mAn. auch hin.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

TomLee

Kann ja auch nix dafür das die Bulb seit fast sieben Jahren nicht das Zeitliche segnet, die die ich hier jemandem zwischendurch abgekauft hatte war nach nem halben Jahr defekt.

Danke.

Ach klar, da war schon noch ein ?, wieso und weshalb das sein kann und wo denn der Pfad landet, ich hab gestern/heute irgendwie nicht mehr an die Bridge gedacht, schäm.

TomLee

Danke, nochmal, für das update.

Klappt soweit, auch das entfernen des ersten Zeichen vom rgb-Wert mit sprintf.

Hast du das mit der Funktion zigbee2mqtt_RGB2JSON jetzt einfach so übernommen ? Ist das so überhaupt korrekt, da hätt ich gerne noch ne Rückmeldung, ich bin da kein bisschen mehr drin in dem Thema, hab was im Kopf, müsste aber auch erst nochmal nachschauen was die genau macht ?

Ich hatte es in der kurzen Zeit (die letzte halbe Stunde seit dem update) dass das set xxxxxx im Reading rgb stehen bleibt, das war vorher mein ich auch schon so, ab und an kommt nix zurück ? Ich weiss es nicht, mir reichts wie es ist, beschäftige mich nicht mit.