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

Beta-User

Zitat von: Heimweh am 06 Juni 2019, 10:27:57
[...]damit ist dann die Milight innerhalb von 5 Sekunden hochgedimmt. Geht das mit der SIDOH/MQTT2 Lösung auch?
Ich finde den Effekt sehr viel angenehmer als wenn die LEDs "paff" alle schlagartig angehen...
Im Prinzip: Jein....

Full story:
- Die Bridge kann das (noch) nicht verwalten, siehe https://github.com/sidoh/esp8266_milight_hub/issues/113, da müßte sich also jemand dran machen, dafür einen patch zu liefern. Kurz: Alle Kommandos werden direkt rausgesandt, wie sie ankommen.
- Bisher hast du vermutlich dafür WiFiLight genutzt. Das verwaltet die Transitions intern, sendet also (via UDP) jeweils den nächsten step auf dem Weg zum Ziel. Das kannst du (im Prinzip) auch weiter parallel nutzen, die per UDP angewiesenen Befehle sollten auch wieder auf dem MQTT-Weg als Info in den MQTT2-Devices landen.

- Die andere Option ist, dafür selbst den Perl-Code zu schreiben und das z.B. in ein weiteres setList-Element reinzupacken. Als Bausteine würden sich anbieten:
-- der vorhandene Code aus WiFiLight (ich nehme an, der Autor würde dabei unterstützen, das generischer verfügbar zu machen;
-- alternativ: Es gibt diverse "Sonnenaufgangs-Farbverlaufs-Threads", aus denen man sich bedienen kann
Ergebnis => eigene myUtils (wäre mein Vorschlag)

-- A_15_shellybulb: Da ist ein Beispiel, wie man über die setList Perl-Code aufrufen kann.

Insgesamt ist das aber m.E. ein Thema, das man von hier auslagern könnte. Wenn, sollte man das so lösen, dass das Ergebnis z.B. auch mit den Shelly-RGB-Bulbs (und/oder tasmota) "kann".
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Heimweh

Ja Du hast recht, Wifilight konnte das und hat das dimmen "intern" übernommen.

Wenn ich so darüber nachdenke, ich bin von Wifilight auf sie Sidoh Lösung umgestiegen weil ich das CCT Protokoll gebraucht habe.
Und vermutlich, würde ich jetzt Wifilight verwenden zusätzlich zu Deiner Template Lösung - würde das keine saubere Lösung sein. Und auch nur für das alte Protokoll von Milight.

Danke für Deine Ansätze, ich beschäftige mich mal weiter mit diesem Thema.
RaspberryPi, 8 x Intertechnosteckdosen, ETA PU15 über HTTPMOD, Youless Eneergiemonitor, 8 x Technoline Funk Temperatur / Feuchtesensoren über jeeLink, Fritzbox Anbindung, Homematic Rolladen Aktoren, MAX Heizkörperventile + Cube, SONOFF S20, S26, POW, 4ch, OWD, Alexa-fhem, enOcean / Eltako,

Heimweh

Hallo Beta-User,

ich stehe erneut vor einer Frage... Ich habe mit meinen Milights nun eine Lichtszene erstellt.

Der Befehl um eine Lampe einzuschalten wird klein geschrieben, also so:


set Lampe on


Im State steht das on dann aber gross geschrieben, also "ON". Wenn ich nun alle Lampen so einstelle wie ich es in einer Szene gerne hätte,
dann gibt es dort mit "SAVE" die Möglichkeit, den eingestellten Zustand der Lampen einzulesen und als Szene abzuspeichern.
Dummerweise zieht das Lichtszenen Modul aber den State als "ON" und nicht als "on" (eigentlich ja auch logisch), ABER
wenn ich nun Szenen wechseln will, sendet er den Befehl auch (wie abgespeichert) in gross - also "set Lampe ON" - und damit
kommt die Milight nicht klar, ich bekomme ein unknown Argument.

Ich habe nun das Attribut "setlist" angepasst, also das große "ON" auf "on" geändert, nur zeigt sich keine Wirkung.
Was muss ich anpassen damit alles klein geschrieben ist?

Hier noch das list der Lampe:


Internals:
   CID        milight_0x15B1_2
   DEF        milight_0x15B1_2
   DEVICETOPIC MQTT2_milight_0x15B1_2
   FUUID      5cf6b120-f33f-55ed-97a1-d4277d4f57a2b4b3
   IODev      MQTTServer
   NAME       MQTT2_milight_0x15B1_2
   NR         559
   STATE      OFF
   TYPE       MQTT2_DEVICE
   READINGS:
     2019-06-04 17:57:52   associatedWith  MQTT2_milight_hub_317564
     2019-06-07 12:16:23   brightness      214
     2019-06-07 12:16:23   bulb_mode       color
     2019-06-06 20:21:18   color_b         255
     2019-06-06 20:21:18   color_g         255
     2019-06-07 12:16:23   color_r         0
     2019-06-06 21:10:46   command         night_mode
     2019-06-06 20:21:18   device_id       5553
     2019-06-06 20:21:18   effect          night_mode
     2019-06-07 12:16:23   hex             00FFFF
     2019-06-07 12:16:23   hue             126
     2019-06-07 12:16:23   level           84
     2019-06-06 20:20:45   mode            0
     2019-06-07 12:16:23   state           OFF
     2019-06-07 12:16:23   status          OFF
Attributes:
   IODev      MQTTServer
   alexaName  Fernsehbeleuchtung
   alias      Milight_TV
   devStateIcon {zigbee2mqtt_devStateIcon255($name,"hex",1)}
   eventMap   /set_white:Weiss/night_mode:Nacht/white_mode:white/
   genericDeviceType light
   homebridgeMapping Brightness=brightness::brightness,minValue=0,maxValue=100,max=255
   icon       light_control
   lightSceneParamsToSave brightness,hue,state
   model      X_01_esp_milight_hub_rgbw_bulb
   readingList milight/states/0x15B1/rgbw/2:.* { json2nameValue($EVENT) }
  milight/states/0x15B1/rgbw/0:.* { json2nameValue($EVENT) }
  milight/updates/0x15B1/rgbw/2:.* { json2nameValue($EVENT) }
  milight/updates/0x15B1/rgbw/0:.* { json2nameValue($EVENT) }
   room       MQTT2_DEVICE,alexa
   setExtensionsEvent 1
   setList    on milight/0x15B1/rgbw/2 {"status":"on"}
  off milight/0x15B1/rgbw/2 {"status":"off"}
  brightness:colorpicker,BRI,0,15,255 milight/0x15B1/rgbw/2 {"$EVTPART0":"$EVTPART1"}
  hue:colorpicker,HUE,0,1,359 milight/0x15B1/rgbw/2 {"$EVTPART0":"$EVTPART1"}
  command:uzsuSelectRadio,Weiss,Nacht milight/0x15B1/rgbw/2 {"$EVTPART0":"$EVTPART1"}
   setStateList on off
   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"}
   userattr   lightSceneParamsToSave lightSceneRestoreOnlyIfChanged:1,0
   webCmd     brightness:hue:command

RaspberryPi, 8 x Intertechnosteckdosen, ETA PU15 über HTTPMOD, Youless Eneergiemonitor, 8 x Technoline Funk Temperatur / Feuchtesensoren über jeeLink, Fritzbox Anbindung, Homematic Rolladen Aktoren, MAX Heizkörperventile + Cube, SONOFF S20, S26, POW, 4ch, OWD, Alexa-fhem, enOcean / Eltako,

Beta-User

Hmmm, also:

Mit lightscene habe ich noch keine Erfahrung, kann daher erst mal nur etwas "graue Theorie" liefern in der Hoffnung, dass du damit klarkommst...

M.E. gibt es zwei Ansatzpunkte, die wir selber in der Hand haben.
Zum einen könnten wir versuchen, "state" zu manipulieren. Dafür gibt es zum einen eventMap (in etwa so: { 'ON'=>'on','OFF'=>'off'}). Kann sein, dass diese Art "Kosmetik" schon reicht. Etwas tiefergreifend wäre, das mit einem userreadings-Eintrag zu machen, der auf state.(ON|OFF) triggert und dann lc (vermutlich von $EVTPART1) zurückliefert.

Oder eben sendeseitig (was durch obige eventMap ggf. auch abgefangen wird), indem man weitere Einträge mit ON und OFF zur setList hinzufügt.

Die dritte Option wäre, sidoh zu überreden, die on/off-Zustände konfigurierbar zu machen (wie bei Tasmota), damit wir dort auf Kleinschreibung umstellen können :) . Das wäre das einfachste...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Heimweh

Danke Dir!

eventMap hat nicht geklappt, aber dafür Setlist erweitern. Ich hatte jetzt nicht viel Zeit zum testen aber ich kann
mit


set lampe on


UND


set lampe ON


einschalten... Die Lichtszene ist eine tolle Sache, btw. Erstmal ein schönes WE und Danke!
RaspberryPi, 8 x Intertechnosteckdosen, ETA PU15 über HTTPMOD, Youless Eneergiemonitor, 8 x Technoline Funk Temperatur / Feuchtesensoren über jeeLink, Fritzbox Anbindung, Homematic Rolladen Aktoren, MAX Heizkörperventile + Cube, SONOFF S20, S26, POW, 4ch, OWD, Alexa-fhem, enOcean / Eltako,

Heimweh

Hallo Beta-User,

ich bin immer noch am tüfteln. Gestern habe ich mein Bett mit 2 Bewegungsmeldern ausgestattet, die ein LED Band (Milight Controller) ansteuern sollen. Auch hier habe ich
das gleiche "Problem" wie mit der Alexa Steuerung:

Wenn ich z.B. volle Helligkeit angesteuert habe und die Milight abschalte, bleibt die Helligkeit ja im Device gespeichert. Bei einem weiterem "On" Befehl" geht die Milight auf die
zuvor eingestellte Helligkeit (in meinem Beispiel) von 100%.
Wenn ich aber nun, sei es durch die Bewegungsmelder oder die Alexa, die Milights nur mit z.B. 20% einschalten will - geht das ja nicht. Ich müsste erst einen on Befehl senden (Milight geht auf 100%) und dann die Brightness auf 20% reduzieren richtig? Das ist in meinem Fall nicht erwünscht, ich würde gerne gleich mit 20% einschalten.
Ich habe auch schon überlegt, die Milights nicht auszuschalten, sondern auf 0% zu dimmen, und sie dann auf 20% hochziehen - nur sind die Milights bei 0% Brightness nicht aus sondern leuchten
ganz schwach....


Hast Du mir vielleicht einen Gedankenanstoß?
RaspberryPi, 8 x Intertechnosteckdosen, ETA PU15 über HTTPMOD, Youless Eneergiemonitor, 8 x Technoline Funk Temperatur / Feuchtesensoren über jeeLink, Fritzbox Anbindung, Homematic Rolladen Aktoren, MAX Heizkörperventile + Cube, SONOFF S20, S26, POW, 4ch, OWD, Alexa-fhem, enOcean / Eltako,

Beta-User

Mobile Kurzfassung: den on-Befehl mit in den brightness-json packen?
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

TomLee

Hat mich auch interessiert, funzt. DANKE

brightness:colorpicker,BRI,0,15,255 milight/0x8D56/rgbw/1 {"status":"ON","$EVTPART0":"$EVTPART1"}

Beta-User

Zitat von: TomLee am 22 Juni 2019, 15:08:58
Hat mich auch interessiert, funzt. DANKE

brightness:colorpicker,BRI,0,15,255 milight/0x8D56/rgbw/1 {"status":"ON","$EVTPART0":"$EVTPART1"}
Dank zurück für's "übersetzen".

Habe eben ein update ins svn geschubst, in der das via comment erläutert ist. Gibt natärlich wie immer viele Optionen, z.B. auch ein eigenes setList-Element mit einem fixen brightness-Wert usw..
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Heimweh

Danke :) Funzt bei mir auch, allerding mit einem kurzem "flash" beim einschalten. Ich habe mit Brightness 255 abgeschaltet, und
dann mit dem Beispiel von TomLee mit Brightness 30 eingeschaltet. Die Lampe wollte schon auf volle Helligkeit und ist dann schnell runter auf 30.

Im Prinzip schon ein sehr guter Ansatz, aber ich befürchte dieser Blitz reicht um meine Frau aufzuwecken...

Jörg, was meintest Du mit eigenen setlist-Elementen?
RaspberryPi, 8 x Intertechnosteckdosen, ETA PU15 über HTTPMOD, Youless Eneergiemonitor, 8 x Technoline Funk Temperatur / Feuchtesensoren über jeeLink, Fritzbox Anbindung, Homematic Rolladen Aktoren, MAX Heizkörperventile + Cube, SONOFF S20, S26, POW, 4ch, OWD, Alexa-fhem, enOcean / Eltako,

TomLee

Oh ja, das geht gar nicht. Hat ich am Tag nicht gesehen, die Leuchte ist auch noch in einer Milchglaskugel.

Heimweh

Hardwaremäßig scheint es ja nicht anders möglich - aber vielleicht würde es funktionieren die Milights vor dem ausschalten auf 0% zu dimmen und dann abzuschalten,
und beim einschalten wieder "on" und "brightness XXX"?

Ich habe mal den Autor vom Wifilight Modul gefragt ob man den Code für rauf und runterdimmen nicht extrahieren kann
(wenn ich mich recht erinnere ging das da, also "on" und auf die gewünschte Helligkeit fahren),
aber das ist wohl der komplizierteste Teil des Moduls und nicht so einfach - und würde sowieso meine Fähigkeiten überschreiten....
RaspberryPi, 8 x Intertechnosteckdosen, ETA PU15 über HTTPMOD, Youless Eneergiemonitor, 8 x Technoline Funk Temperatur / Feuchtesensoren über jeeLink, Fritzbox Anbindung, Homematic Rolladen Aktoren, MAX Heizkörperventile + Cube, SONOFF S20, S26, POW, 4ch, OWD, Alexa-fhem, enOcean / Eltako,

Beta-User

Zu dem dim-on-Thema: Auch mit einer Fernbedienung muß man erst einschalten, bevor die Bulbs auf andere Befehle hören. Ergo wird man wohl den "flash" nur durch Dimmen vor dem Ausschalten vermeiden können.

Was das zusätzliche setList-Element angeht, hier zwei Beispiele:
...
brightness:colorpicker,BRI,0,15,255 milight/0x8D56/rgbw/1 {"$EVTPART0":"$EVTPART1"}
brightness_on:colorpicker,BRI,0,15,255 milight/0x8D56/rgbw/1 {"status":"ON","brightness":"$EVTPART1"}
brightness_35:colorpicker,BRI,0,15,255 milight/0x8D56/rgbw/1 {"status":"ON","brightness":"35"}...


Gruß, Beta-User
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

herrmannj

Zitat von: Heimweh am 22 Juni 2019, 22:59:11
Ich habe mal den Autor vom Wifilight Modul gefragt ob man den Code für rauf und runterdimmen nicht extrahieren kann
(wenn ich mich recht erinnere ging das da, also "on" und auf die gewünschte Helligkeit fahren),
aber das ist wohl der komplizierteste Teil des Moduls und nicht so einfach - und würde sowieso meine Fähigkeiten überschreiten....

Moin, ja - lese hier mit.

Zum Blitz:) In WifiLight mach ich das tatsächlich so, beim Ausschalten gleichzeitig Helligkeit 0 setzen. Ist der einzige Weg das Blitzen zu vermeiden. Wobei ich auch "on" und "off" direkt auf Helligkeitsbefehle umsetze. Für die Bulb, besser deren Stromverbrauch, war es zumindest bei allen die ich gemessen habe so das "off" und "Helligkeit 0" identisch sind. Macht auch Sinn: der Empfänger muss in beiden Zuständen "zuhören", der PWM ist in beiden Fällen aus. ...

Zum Dimmen:) ich möchte auch auf die Sidoh brigde gehen, hätte also a: ein Interesse und würde b: auch das schreiben des Dim codes übernehmen.

Ist aber in der Tat alles andere als trivial, daher nichts für morgen. Ich kann gern erklären was genau "nicht trivial" daran ist, möchte aber den thread hier nicht dafür kapern.

vg
joerg

Beta-User

Dann mal Willkommen an Bord!

Wenn du C kannst und man den Code leicht von Perl nach C übertragen könnte: Sidoh hat schon lange einen issue offen und ist nach meinem Eindruck sehr offen für Anregungen. Dann würde die Bridge die Arbeit selbst erledigen..?!?




Was das Abdimmen vor dem Ausschalten angeht: Das sollte auch via MQTT gehen (in den off-JSON reinbasteln), teste ich bei Gelegenheit mal, dann kommt es in die templates :) .
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files