Eigentlich wollte ich nur die Milight Bridges durch einen ESP8266 ersetzen......

Begonnen von schka17, 09 Oktober 2016, 16:33:55

Vorheriges Thema - Nächstes Thema

herrmannj

Mit den alten Lampen ist möglich, die neuen werden nicht laufen weil das alte Protokoll zb keine Sättigung kann. Aber über mqtt geht's ja perfekt

patman1607

Hi zusammen,
ich habe die Tage mir auch eine MilightBridge von Sido (https://github.com/sidoh/esp8266_milight_hub) mit einem D1 Mini und dem NRF24L01+ gebastelt.
Übers Webinterface ist die Bridge erreichbar.
Mit einer ausgedachten Device ID (0x2000 und 0x2001) habe ich meine vorhandenen MiLight RGBW Controller (FUT038) gepairt und kann sie im Webinterface steuern. unter Settings habe ich für jede DeviceId ein Port angelegt.

Was ich leider noch nicht hin bekommen habe ist die Geräte in FHEM entweder über Milight mit Bridge oder WiFiLight anzusprechen. 

Wenn ich über Milight Konfiguriere sieht das in ca so auch:


define MyMilightHub MilightBridge 192.168.0.228
attr MyMilightHub room Kueche
attr MyMilightHub group MilightDevice

define MBaum MilightDevice RGBW MyMilightHub 5
attr MBaum group MilightDevice
attr MBaum room Kueche

define Kanal2 MilightDevice RGBW MyMilightHub 6
attr Kanal2 group MilightDevice
attr Kanal2 room Kueche

define Kanal3 MilightDevice RGBW MyMilightHub 7
attr Kanal3 group MilightDevice
attr Kanal3 room Kueche

define Kanal4 MilightDevice RGBW MyMilightHub 8
attr Kanal4 group MilightDevice
attr Kanal4 room Kueche


auch wenn ich beim Device MyMilightHub das Port 48899 oder 8899 oder 8801 angebe... passiert nichts.

wenn ich das ganze über WiFiLight versuche was in etwa so aussieht:

define Kanal1 WifiLight RGBW2 bridge-V3:192.168.0.228:8899
define Kanal2 WifiLight RGBW2 bridge-V3:192.168.0.228:8899
define Kanal3 WifiLight RGBW2 bridge-V3:192.168.0.228:8899
define Kanal4 WifiLight RGBW2 bridge-V3:192.168.0.228:8899


werden die Lampen auch nicht geschaltet.
Für mich stellt sich noch die Frage wer jetzt genau definiert das Device 0x2000 oder 0x2001 angesprochen werden  soll.
mit einem set...on oder off blinkt der D1 Mini zwar aber er schaltet nichts.
Ich möchte nicht erst einen Matt einrichten nur um die Lampen laufen zu lassen.

zur Info...mit meiner vorhanden originalen V3 Bridge funktioniert alles mit folgender cfg:

### MilightBridge
define MilightBridge MilightBridge 192.168.0.38
attr MilightBridge checkInterval 10
attr MilightBridge event-on-change-reading state
attr MilightBridge protocol udp
attr MilightBridge sendInterval 100

### Device Kueche
define MiLightKueche MilightDevice RGBW MiLightBridge 6
attr MiLightKueche IODev MilightBridge
attr MiLightKueche devStateIcon {(MilightDevice_devStateIcon($name),"toggle")}
attr MiLightKueche event-on-change-reading state,transitionInProgress
attr MiLightKueche lightSceneParamsToSave hsv
attr MiLightKueche restoreAtStart 1
attr MiLightKueche room Homekit,Kueche,alexa
attr MiLightKueche webCmd on:off:dim:hue:rgb ffffff:rgb ff0000:rgb 00ff00:rgb 0000ff:rgb ffff00

### Device Baum
define MiLightBaum MilightDevice RGBW MiLightBridge 5
attr MiLightBaum IODev MilightBridge
attr MiLightBaum devStateIcon {(MilightDevice_devStateIcon($name),"toggle")}
attr MiLightBaum event-on-change-reading state,transitionInProgress
attr MiLightBaum lightSceneParamsToSave hsv
attr MiLightBaum restoreAtStart 1
attr MiLightBaum room Homekit,Kueche,alexa
attr MiLightBaum webCmd on:off:dim:hue:rgb ffffff:rgb ff0000:rgb 00ff00:rgb 0000ff:rgb ffff00

### Device Baum
define MiLightDecke MilightDevice RGBW MiLightBridge 8
attr MiLightDecke IODev MilightBridge
attr MiLightDecke devStateIcon {(MilightDevice_devStateIcon($name),"toggle")}
attr MiLightDecke event-on-change-reading state,transitionInProgress
attr MiLightDecke lightSceneParamsToSave hsv
attr MiLightDecke restoreAtStart 1
attr MiLightDecke room Homekit,Kueche,alexa
attr MiLightDecke webCmd on:off:dim:hue:rgb ffffff:rgb ff0000:rgb 00ff00:rgb 0000ff:rgb ffff00

### Device Bett
define MiLightBett MilightDevice RGBW MiLightBridge 7
attr MiLightBett IODev MilightBridge
attr MiLightBett devStateIcon {(MilightDevice_devStateIcon($name),"toggle")}
attr MiLightBett event-on-change-reading state,transitionInProgress
attr MiLightBett lightSceneParamsToSave hsv
attr MiLightBett restoreAtStart 1
attr MiLightBett room Homekit,Schlafzimmer,alexa
attr MiLightBett webCmd on:off:dim:hue:rgb ffffff:rgb ff0000:rgb 00ff00:rgb 0000ff:rgb ffff00


Bitte helft mir bei der Einbindung in FHEM ohne MQTT
Fritte 7950
FHEM on RasPi 3

Beta-User

Da Milight_bridge blocking ist, sollte man mAn. heutzutage immer Wifilight nehmen, wenn man kein MQTT haben will. Hatte das die im Einsatz, meine aber, dass der Maintainer extra die Portangabe eingeführt hat, damit man die Sidoh-Bridge so universell nutzen kann wie sie konzipiert ist.

Also unter "UDP" im Hub je Fernbedienungs-ID einen Port anlegen und dann eben auch genau diesen Port (und nicht die Standardports) im Wifilight-Device angeben:
0x2000 => Port 8899 im Hub => define Kanal1 WifiLight RGBW2 bridge-V3:192.168.0.228:88990x2001 => Port 8898 im Hub => define KanalB1 WifiLight RGBW2 bridge-V3:192.168.0.228:8898
Einen MQTT2_SERVER anzulegen ist aber auch kein Hexenwerk und erzeugt auch keine nennenswerte Systemlast...
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

patman1607

Hi, Danke für deine Antwort.
Ich habe jetzt Mittlerweile mein FHEM mit MQQT2_Server ausgestattet und folgendes in die milight bridge eingetragen:
MQTT server
192.168.0.29:1883
MQTT topic pattern
milight/:device_id/:device_type/:group_id
MQTT update topic pattern
milight/updates/:hex_device_id/:device_type/:group_id
MQTT state topic pattern
MQTT Client Status Topic
milight/LWT
Publish state messages with retain flag Enabled
Client Status Messages Mode Detailed
nach einem Submit und einem ändern eines Wertes im WI zeigte es mir ein neues Device unter MQTT an welches ich mit dem Template esp_milight_hub_bridge ausgestattet habe.
beim erneuten senden eines Befehls aus dem WebIF der ESPBridge wurde wieder ein neues Device angelegt mit  MQTT2_milight_0x1000_1 welches ich mit dem Template esp_milight_hub_rgbw_bulb ausgestattet habe.
die Device ID habe ich übers WebIF erstellt und mit dem jeweiligen RGBW controller gepaart zb auf die 0x1000.

nur leider kann ich in FHEM klicken was ich will...nichts verändert sich an den LEDS. Wenn ich im WebIf der ESPBridge werte verändere gehts.
was kann ich noch tun damit die ESPBridge meine über FHEM gesendeten Daten auch an die LEDS überträgt.

Fritte 7950
FHEM on RasPi 3

TomLee

Ein List noch von MQTT2_milight_0x1000_1 zeigen (das immer aufschlussreicher als ein Screenshot) und einfach mal schauen ob was im LogFile steht.

Wenn du in der "ESPBridge" (Oben) Start Sniffing startest kommt da was an wenn du in Fhem irgendeinen Befehl absetzt ?

Bei MQTT state topic pattern ging was schief, was steht da drin ?

patman1607

ein list ergibt:
Internals:
   .eventMapCmd Weiss:noArg Nacht:noArg white:noArg
   CFGFN     
   CID        milight_0x1000_1
   DEF        milight_0x1000_1
   DEVICETOPIC MQTT2_milight_0x1000_1
   FUUID      5ffa320a-f33f-8acd-cdbe-a0ca32ec1a6ab739
   IODev      MQTT2_FHEM_Server
   NAME       MQTT2_milight_0x1000_1
   NR         30904
   STATE      set_off
   TYPE       MQTT2_DEVICE
   .attraggr:
   .attrminint:
   .userReadings:
     HASH(0x40272e0)
     HASH(0x546f730)
   OLDREADINGS:
   READINGS:
     2021-01-09 23:45:31   associatedWith  MQTT2_milight_hub_11377978
     2021-01-09 23:46:02   attrTemplateVersion 20200522 or prior
     2021-01-09 23:46:23   brightness      set 165
     2021-01-09 23:46:37   hue             set 129
     2021-01-09 23:45:31   level           99
     2021-01-09 23:46:48   state           set_off
     2021-01-09 23:45:31   status          ON
Attributes:
   IODev      MQTT2_FHEM_Server
   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.
   devStateIcon {zigbee2mqtt_devStateIcon255($name,"hex",1)}
   eventMap   /set_white:Weiss/night_mode:Nacht/white_mode:white/
   genericDeviceType light
   homebridgeMapping Brightness=brightness::brightness,maxValue=100,factor=0.39216,delay=true
   icon       light_control
   model      esp_milight_hub_rgbw_bulb
   readingList MiBaum/states/0x1000/rgb_cct/1:.* { json2nameValue($EVENT) }
  MiBaum/states/0x1000/rgb_cct/0:.* { json2nameValue($EVENT) }
  MiBaum/updates/0x1000/rgb_cct/1:.* { json2nameValue($EVENT) }
  MiBaum/updates/0x1000/rgb_cct/0:.* { json2nameValue($EVENT) }
   room       MQTT2_DEVICE
   setExtensionsEvent 1
   setList    on:noArg MiBaum/0x1000/rgb_cct/1 {"status":"ON"}
  on_transition:slider,3,10,3600 MiBaum/0x1000/rgb_cct/1 {"status":"ON","transition":$EVTPART1}
  off:noArg MiBaum/0x1000/rgb_cct/1 {"status":"OFF"}
  off_transition:slider,3,10,3600 MiBaum/0x1000/rgb_cct/1 {"status":"OFF","transition":$EVTPART1}
  brightness:colorpicker,BRI,0,15,255 MiBaum/0x1000/rgb_cct/1 {"$EVTPART0":"$EVTPART1"}
  hue:colorpicker,HUE,0,1,359 MiBaum/0x1000/rgb_cct/1 {"$EVTPART0":"$EVTPART1"}
  command:uzsuSelectRadio,Weiss,Nacht MiBaum/0x1000/rgb_cct/1 {"$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"}
   webCmd     brightness:hue:command


wenn ich sniffing starte und in FHEM ein Befehl abgebe kommt nichts an der Bridge an oder wird gesendet

auffällig ist zb:
2021-01-09 23:46:48   state           set_off
     2021-01-09 23:45:31   status          ON

mache ich ein set off steht im state set off...aber der Status ist nach wie vor ON da die Lampen auch noch an sind.
Fritte 7950
FHEM on RasPi 3

TomLee

Internals:
   .eventMapCmd Weiss:noArg Nacht:noArg white:noArg
   CFGFN     
   CID        milight_0x1000_1
   DEF        milight_0x1000_1
   DEVICETOPIC MQTT2_milight_0x1000_1
   FUUID      5ffa320a-f33f-8acd-cdbe-a0ca32ec1a6ab739
   IODev      MQTT2_FHEM_Server
   NAME       MQTT2_milight_0x1000_1
   NR         30904
   STATE      set_off
   TYPE       MQTT2_DEVICE
   .attraggr:
   .attrminint:
   .userReadings:
     HASH(0x40272e0)
     HASH(0x546f730)
   OLDREADINGS:
   READINGS:
     2021-01-09 23:45:31   associatedWith  MQTT2_milight_hub_11377978
     2021-01-09 23:46:02   attrTemplateVersion 20200522 or prior
     2021-01-09 23:46:23   brightness      set 165
     2021-01-09 23:46:37   hue             set 129
     2021-01-09 23:45:31   level           99
     2021-01-09 23:46:48   state           set_off
     2021-01-09 23:45:31   status          ON
Attributes:
   IODev      MQTT2_FHEM_Server
   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.
   devStateIcon {zigbee2mqtt_devStateIcon255($name,"hex",1)}
   eventMap   /set_white:Weiss/night_mode:Nacht/white_mode:white/
   genericDeviceType light
   homebridgeMapping Brightness=brightness::brightness,maxValue=100,factor=0.39216,delay=true
   icon       light_control
   model      esp_milight_hub_rgbw_bulb
   readingList MiBaum/states/0x1000/rgb_cct/1:.* { json2nameValue($EVENT) }
  MiBaum/states/0x1000/rgb_cct/0:.* { json2nameValue($EVENT) }
  MiBaum/updates/0x1000/rgb_cct/1:.* { json2nameValue($EVENT) }
  MiBaum/updates/0x1000/rgb_cct/0:.* { json2nameValue($EVENT) }
   room       MQTT2_DEVICE
   setExtensionsEvent 1
   setList    on:noArg MiBaum/0x1000/rgb_cct/1 {"status":"ON"}
  on_transition:slider,3,10,3600 MiBaum/0x1000/rgb_cct/1 {"status":"ON","transition":$EVTPART1}
  off:noArg MiBaum/0x1000/rgb_cct/1 {"status":"OFF"}
  off_transition:slider,3,10,3600 MiBaum/0x1000/rgb_cct/1 {"status":"OFF","transition":$EVTPART1}
  brightness:colorpicker,BRI,0,15,255 MiBaum/0x1000/rgb_cct/1 {"$EVTPART0":"$EVTPART1"}
  hue:colorpicker,HUE,0,1,359 MiBaum/0x1000/rgb_cct/1 {"$EVTPART0":"$EVTPART1"}
  command:uzsuSelectRadio,Weiss,Nacht MiBaum/0x1000/rgb_cct/1 {"$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"}
   webCmd     brightness:hue:command


Warum steht da in den Topic-Pfaden MiBaum ?

Wurde das Device so angelegt oder hast den Pfad so händisch angepasst ?

Da sollte eigentlich milight stehen.

patman1607

Ich bin davon ausgegangen das ich den Name frei vergeben kann zur besseren Identifikation.
Habe das device neu angelegt und milight eingegeben.

Internals:
   .eventMapCmd Weiss:noArg Nacht:noArg white:noArg
   CFGFN     
   CID        milight_0x1000_1
   DEF        milight_0x1000_1
   DEVICETOPIC MQTT2_milight_0x1000_1
   FUUID      5ffadc01-f33f-8acd-5e74-69b5593a58fb8005
   IODev      MQTT2_FHEM_Server
   NAME       MQTT2_milight_0x1000_1
   NR         69757
   STATE      set_on
   TYPE       MQTT2_DEVICE
   .attraggr:
   .attrminint:
   .userReadings:
     HASH(0x5551908)
     HASH(0x6a3f8d8)
   OLDREADINGS:
   READINGS:
     2021-01-10 11:50:41   associatedWith  MQTT2_milight_hub_11377978
     2021-01-10 11:51:53   attrTemplateVersion 20200522 or prior
     2021-01-10 11:50:41   brightness      252
     2021-01-10 11:54:27   hue             set 0
     2021-01-10 11:50:41   level           99
     2021-01-10 11:52:14   on_transition   set 3
     2021-01-10 11:54:25   state           set_on
     2021-01-10 11:50:41   status          ON
Attributes:
   IODev      MQTT2_FHEM_Server
   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.
   devStateIcon {zigbee2mqtt_devStateIcon255($name,"hex",1)}
   eventMap   /set_white:Weiss/night_mode:Nacht/white_mode:white/
   genericDeviceType light
   homebridgeMapping Brightness=brightness::brightness,maxValue=100,factor=0.39216,delay=true
   icon       light_control
   model      esp_milight_hub_rgbw_bulb
   readingList milight/states/0x1000/rgb_cct/1:.* { json2nameValue($EVENT) }
  milight/states/0x1000/rgb_cct/0:.* { json2nameValue($EVENT) }
  milight/updates/0x1000/rgb_cct/1:.* { json2nameValue($EVENT) }
  milight/updates/0x1000/rgb_cct/0:.* { json2nameValue($EVENT) }
   room       MQTT2_DEVICE
   setExtensionsEvent 1
   setList    on:noArg milight/0x1000/rgb_cct/1 {"status":"ON"}
  on_transition:slider,3,10,3600 milight/0x1000/rgb_cct/1 {"status":"ON","transition":$EVTPART1}
  off:noArg milight/0x1000/rgb_cct/1 {"status":"OFF"}
  off_transition:slider,3,10,3600 milight/0x1000/rgb_cct/1 {"status":"OFF","transition":$EVTPART1}
  brightness:colorpicker,BRI,0,15,255 milight/0x1000/rgb_cct/1 {"$EVTPART0":"$EVTPART1"}
  hue:colorpicker,HUE,0,1,359 milight/0x1000/rgb_cct/1 {"$EVTPART0":"$EVTPART1"}
  command:uzsuSelectRadio,Weiss,Nacht milight/0x1000/rgb_cct/1 {"$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"}
   webCmd     brightness:hue:command


Fritte 7950
FHEM on RasPi 3

TomLee

Seh leider nicht woran es liegt.

Glaubs zwar nicht, wenn du MQTT2_milight_0x1000_1 einfach nochmal löschst, in der Bridge einmal schaltest das das Device wieder neu angelegt wird und dann das esp_milight_hub_rgbw_bulb-Template anwendest (ohne zuvor was händisch zu ändern), klappts vlt. dann.

patman1607

Wenn ich die LEDS im webinterface veränder und wieder zu FHEM gehe hat sich der Status der Leuchte auch geändert. anscheinend geht nur nicht das senden eines Befehls über FHEM.
Kann das an den settings in der Bridge liegen?

MQTT topic pattern
milight/:device_id/:device_type/:group_id

MQTT update topic pattern
milight/updates/:hex_device_id/:device_type/:group_id

MQTT state topic pattern
milight/states/:hex_device_id/:device_type/:group_id

MQTT Client Status Topic
Milight/LWT

Nützt es was wenn ic mal die Json aus dem backup von der bridge hoch lade?
Fritte 7950
FHEM on RasPi 3

TomLee

rgb_cct

Hast du jetzt falsch angelernt (dann vermutlich RGBW unter Remote Type wählen und nochmal pairen) oder das falsche Template gewählt ?

edit:

wobei, schalten (ein/aus) sollte eigentlich (mein ich) egal mit welchem der beiden Templates möglich sein

pejonp

Hallo,

hier ist ein Beispiel (https://wiki.fhem.de/wiki/MQTT2-Module_-_Praxisbeispiele#Einf.C3.BChrung:_MQTT_bzw._MQTT2_in_FHEM) von Beta-User (https://forum.fhem.de/index.php/topic,103493.0.html).
Danach habe ich auch meine MiLight Fernbedienung und die MilightBridge von Sido (https://github.com/sidoh/esp8266_milight_hub) eingerichtet.
Und kann über die Frnbedienung verschieden Geräte schalten, Dimmen und Farbe ändern.

pejonp

LaCrossGW 868MHz:WT470+TFA+TX37-IT+EMT7110+W136+WH25A HP1003+WH2621
SignalD(CC1101):Bresser+WS-0101(868MHz WH1080)+Velux KLF200+MAX!+HM-MOD-UART:Smoke HM-SEC-SD+VITOSOLIC 200 RESOL VBUS-LAN+SolarEdge SE5K(Modbus)+Sonnen!eco8(10kWh)+TD3511+DRT710M(Modbus)+ZigBee+Z-Wave+MQTT+vitoconnect

patman1607

ah cool, danke an alle. Es funzt!!!
mein Fehler war das ich beim paaren der Geräte alles auf Gruppe 1 gepaart habe. also 0x1000 auf rgbw Gruppe 1 und 0x1001 auf rgbw Gruppe 1.
habe jetzt jedem device eine eigene Gruppe verpasst und siehe da. es geht!!!

Ich dachte nur das ich mit dieser Selbstbau Bridge so viele Lampen wie ich will paaren kann. zb LED1 0x1000 und LED 0x1001 und LED 0x1002 und so weiter

ich habe vor in meiner Neubau Garage 4 Neue GU10Spots zu meinen vorhandenen 4 LED Stripes im Haus zu installieren.
Fritte 7950
FHEM on RasPi 3