Lösung! - Tradfri Zigbee2MQTT - Dimmen/Farbtemperatur wechseln nicht möglich

Begonnen von bromosky, 07 November 2018, 18:20:36

Vorheriges Thema - Nächstes Thema

bromosky

Lösung im letzten Beitrag dieses Threads!

Hallo ihr Lieben,

meine Forenerfahrung ist schon etwas eingerostet, daher seht es mir nach. Ich habe jedoch Google und auch die Forumsuche ein wenig bemüht, aber leider keine konkrete Hilfe zu dem Problem gefunden.

Ich experimentiere nun schon etwas länger mit FHEM herum, heißt ich bin kein blutiger Anfänger mehr. Jedoch habe ich mir gestern mein System auf dem Raspberry komplett zerschossen. Somit ist die Installation von FHEM,Mosquitto und auch von Zigbee2MQTT komplett frisch. Die Services laufen tadellos.
Eine GU10-Lampe konnte ich auch anlernen. Mittlerweile ist es mir sogar möglich, die Lampe an- sowie auszuschalten. Nur sollte sie auch laut IKEA dimmbar und einstellbar von der Temperatur her sein.
Und nun bin ich etwas überfordert. Wie muss ich die Attribute einstellen, sodass ich diese beiden Sachen bewerkstelligen kann?
Das Beispiel half mir leider auch nicht wirklich weiter: https://wiki.fhem.de/wiki/MQTT2-Module_-_Praxisbeispiele#IKEA-Tradfri-Birne
Zumal es sich hierum um MQTT2 handelt, und nicht wie in meinem Fall um MQTT.

Auch habe ich in die Services hineingeschaut. Besonderes konnte ich nicht erkennen, als ich Mosquitto und Zigbee2MQTT überwacht habe. Leider keine Hilfe für mich.

So konnte ich zwar Teile meines Planes umsetzen, zwar durch reines Ausprobieren, aber immerhin. Jedoch würde es mich freuen, wenn ihr noch ein paar Tipps für mich auf Lager habt.

Ich hänge euch kurz nochmals mein Raw Definition an:


defmod Max_Lampe XiaomiMQTTDevice LED1537R6 0xd0cf5efffe1f5a5f
attr Max_Lampe DbLogExclude .*
attr Max_Lampe IODev MQTT
attr Max_Lampe eventMap toggle:on:off:brightness
attr Max_Lampe icon light_control
attr Max_Lampe room XiaomiMQTTDevice
attr Max_Lampe webCmd toggle:on:off:brightness

setstate Max_Lampe ON
setstate Max_Lampe 2018-11-07 17:43:53 state ON
setstate Max_Lampe 2018-11-07 17:43:53 transmission-state incoming publish received



Liebe Grüße und danke fürs Lesen und vielleicht auch Antworten,
Max :)

Beta-User

...ich habe damals den Schwenk zu MQTT2 gemacht, weil mir die Konfiguration in dem xiaomi-Modul auch nicht so recht gelungen war.

Aber eigentlich sollte es genügen, einen slider für "level" als widgetOverride anzugeben (das hatte ich nach einem Beispiel im thread am laufen), und für color_temp gab es auch was in dem thread (zumindest eine Andeutung, für die temp 3 Stufen, müsste aber auch mit einem spider gehen). Hatte beides mal konfiguriert, aber meine Bulb kann keine temp und statt einem einfachen spider würde ich verschiedene aus color nehmen (siehe wiki zu color).
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

Beta-User

Wenn du morgen nach 8 ein update gemacht hast, sollte das Beispiel aus dem wiki funktionieren, wenn du ein MQTT2_CLIENT-Device als IO einrichtest (zusätzlich/neben dem MQTT-IO).
Bei Fragen bitte melden oder am besten den Thread zu Problemen mit dem Modul nutzen.
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

bromosky

Nabend,

es hat mir einfach keine Ruhe gelassen und so habe ich meinen Schlaf der Lampe geopfert.
Ich habe Fortschritt zu vermelden.
Ich kann nun über Slider sowohl Brightness als auch color_temp gezielt steuern.
Immerhin weiß ich nun, es ist möglich.
Nun beschäftigt mich aber das nächste Problem. So kann ich zwar über set "TradfriLampe" on/off die Lampe aus und anschalten, aber keine Helligkeit oder Farbtemperatur bestimmen.
Das von mir erstellte DropDown-Menü (eventMap) führt auch die vorgegebenen Befehle nicht aus. Dabei ist das Beispiel, welches in Anhängen werde, nur eines von vielen Versuchen, das endlich zum Laufen zu bekommen.
Zudem, und ich steuere oft Sachen über die andFHEM-App, gibt es offensichtlich kein Slider in der App, bzw. wird Brightness und Color_temp lediglich als Button angezeigt. Auch hier brachte eine Suche nicht wirklich Erfolg.
Hat dort jemand noch eine Idee, denn es ist zwar schön über das Web-Interface und dem Slider Dimmen/Temperaturänderungen vorzunehmen, aber so richtig das Gelbe vom Ei ist's nicht.

Vorläufige Lösung des Problemes dank @Beta-User:


defmod Max_Lampe XiaomiMQTTDevice LED1537R6 0xd0cf5efffe1f5a5f
attr Max_Lampe DbLogExclude .*
attr Max_Lampe IODev MQTT
attr Max_Lampe eventMap 250:kalt 300:standart 400:warm
attr Max_Lampe icon light_control
attr Max_Lampe room XiaomiMQTTDevice
attr Max_Lampe stateFormat state
attr Max_Lampe webCmd toggle:brightness:color_temp
attr Max_Lampe widgetOverride widgetOverride color_temp:slider,250,1,454 brightness:slider,0,1,254


Beiträge zur Lösung:
https://forum.fhem.de/index.php/topic,84790.180.html
https://forum.fhem.de/index.php/topic,88846.0.html

Nochmals vielen Dank an Beta-User. Es waren zwar nur kleine Hinweise, aber letztendlich haben sie mich dem Ziel näher gebracht.

Grüße, Max.

Beta-User

Grundsätzlich würde ich weiter empfehlen, nachher ein update zu machen und MQTT2_CLIENT und MQTT2_DEVICE zu verwenden. Damit ist es aber etwas anders als nachfolgend dargestellt, die Elemente wären dann anders anzuordnen.

Dann kannst du statt slider einen colorpicker verwenden, das sieht hübscher aus.

Wird denn Brightness so weitergegeben? Klang nicht danach, sollte aber eigentlich funktionieren.
EventMap brauchst du bei dem spider/colorpicker nicht, es sollen ja keine festen Werte mehr gemappt werden, sondern der slider verstellt.
Zuletzt brauchst du auch entsprechende publish-Angaben.
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

Beta-User

Zu andFHEM noch: manches wird über die widget-Definition auf dem Handy korrekt angezeigt. Wo das nicht der Fall ist, kann man entsprechende Attribute am Device setzen. Steht im Detail (?) in der Doku zu andFHEM und gilt für beide mqtt-Wege.
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

bromosky

#6
Hallo nochmals,

heute habe ich mir die Mühe gemacht, komplett FHEM nochmals aufzusetzen.
Läuft alles soweit es soll, auch Zigbee2MQTT.

Auf Anraten von @BetaUser habe ich anstatt Mosquitto nun den MQTT2_SERVER benutzt. Den Fix über das Wiki definiert, dazu noch die Bridge, damit ich es auch fein pairen kann.
Thaha, denkste.

Nun habe ich mehrmals das Leuchtmittel, mittels 5x an und aus und beim 6. mal anlassen, zurückgesetzt auf Werkseinstellungen. Zusehen ist das Gelingen an dem kurzen Flimmern der Lampe.
Ich bin mir also sicher, dies hat funktioniert.
Nur auftauchen, über autocreate, will sie absolut nicht. Natürlich meine ich die Readingslist von dem IOdevice. Also habe ich die Lampe an und wieder ausgeschalten, in der Hoffnung, irgendwann wird sie wohl auftauchen.
Zigbee2MQTT sagt auch, es hätte sich mit einem MQTT-Server verbunden.
Letztendlich ist die Lampe doch irgendwann aufgetaucht in der service status des zigbee2mqtt-services. Da habe ich fix die "Adresse" kopiert und in die Beispiellampe (wiki) eingefügt. Nun lässt sie sich an und aus schalten. Nur wieso wurde sie als erstes Gerät nicht per autocreate erstellt/ nicht in den readings des IODevices angezeigt?

defmod MQTT2_Server MQTT2_SERVER 1883 localhost

setstate MQTT2_Server 2018-11-08 14:59:51 RETAIN {"zigbee2mqtt/bridge/state":"online"}
setstate MQTT2_Server 2018-11-08 14:59:51 nrclients 1
setstate MQTT2_Server 2018-11-08 14:43:32 state Initialized



defmod MQTT2_zigbee_pi MQTT2_DEVICE zigbee_pi
attr MQTT2_zigbee_pi IODev MQTT2_Server
attr MQTT2_zigbee_pi setList permit_join:true,false zigbee2mqtt/bridge/config/permit_join $EVTPART1\
remove:textField zigbee2mqtt/bridge/config/remove $EVTPART1\
log_level:debug,info,warn,error zigbee2mqtt/bridge/config/log_level $EVTPART1\
rename:textField zigbee2mqtt/bridge/config/rename  {"old":"$EVTPART1","new":"$EVTPART2"}\
network_map:raw,graphviz zigbee2mqtt/bridge/networkmap  $EVTPART1\
devicelist:noArg zigbee2mqtt/bridge/config/devices

setstate MQTT2_zigbee_pi permit_join
setstate MQTT2_zigbee_pi 2018-11-08 15:00:30 state permit_join



Vor allem für den on-till bzw on-for-timer interessiere ich mich hierbei. Deshalb habe ich mich nun doch für MQTT2 entschieden.
Nur anscheinend habe ich mal wieder Tomaten auf den Augen.

Wäre jemand so gütig und zeigt mir meine Fehler auf?

Das mit dem andFHEM schaue ich mir sofort an, sobald ich es wieder zum laufen bekommen habe, danke BetaUser!

Sofern alles behoben ist, werde ich hier nochmals ein richtigen Beitrag heruntersetzen, damit es alles nicht so verwirrend ist.

Liebe Grüße, Max

Beta-User

Nochmals der Hinweis: das wiki ist nicht mehr ganz aktuell.

Rudi hat für die Bridge-Funkion ein Attribut bei ...DEVICE geschaffen, das den Prozess erleichtern sollte, bitte mal die commandref konsultieren. Fragen dazu dann besser in dem "läuft..."-thread, da liest Rudi bereits mit.
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

bromosky

Nabend,

ich möchte hier nur kurz abschließend meine Lösungen zeigen. Vielleicht hilft es ja jemandem.

Installation von Zigbee2MQTT wie gewohnt.
MQTT2 über FHEM definiert. define MQTT2_Server MQTT2_SERVER 1883 localhost
Danach eine Bridge definiert:
defmod MQTT2_zigbee_pi MQTT2_DEVICE zigbee_pi
attr MQTT2_zigbee_pi DbLogExclude .*
attr MQTT2_zigbee_pi IODev MQTT2_Server
attr MQTT2_zigbee_pi room 92_MQTT
attr MQTT2_zigbee_pi setList permit_join:true,false zigbee2mqtt/bridge/config/permit_join $EVTPART1\
remove:textField zigbee2mqtt/bridge/config/remove $EVTPART1\
log_level:debug,info,warn,error zigbee2mqtt/bridge/config/log_level $EVTPART1\
rename:textField zigbee2mqtt/bridge/config/rename  {"old":"$EVTPART1","new":"$EVTPART2"}\
network_map:raw,graphviz zigbee2mqtt/bridge/networkmap  $EVTPART1\
devicelist:noArg zigbee2mqtt/bridge/config/devices


Dann die bridge auf set MQTT2_zigbee_pi permit_join
Dann noch die colorinit definieren, damit ihr Slider benutzen könnt.
define colorInit notify global:INITIALIZED {use Color}
Danach die Lampe dazu bringen, sich beim Server zu melden, an/ausschalten oder einfach auch anlassen.
Dann mittels sudo systemctl status zigbee2mqtt die Gerätevariable herausfinden. (In Linux-Konsole! In meinem Fall 0xd0cf5efffe1f5a5f, müsst ihr für eure Lampe entsprechend dann anpassen im nächsten Schritt!!!)

Raw-Definition für die IKEA-Tradfri Lampe, welche dimmbar und temperaturänderbar ist. Einfach in FHEM einfügen und Gerätevariable austauschen (+Namen).
defmod Max_Lampe MQTT2_DEVICE
attr Max_Lampe DbLogExclude .*
attr Max_Lampe IODev MQTT2_Server
attr Max_Lampe eventMap on:ON:off off:OFF:on
attr Max_Lampe icon light_control
attr Max_Lampe readingList zigbee_pi:zigbee2mqtt/0xd0cf5efffe1f5a5f:.* { json2nameValue($EVENT) }
attr Max_Lampe room 92_MQTT
attr Max_Lampe setList on zigbee2mqtt/0xd0cf5efffe1f5a5f/set {"state":"ON"}\
off zigbee2mqtt/0xd0cf5efffe1f5a5f/set {"state":"OFF"}\
brightness:colorpicker,BRI,0,15,255 zigbee2mqtt/0xd0cf5efffe1f5a5f/set {"state":"on","$EVTPART0":"$EVTPART1"}\
color_temp:colorpicker,CT,250,1,454 zigbee2mqtt/0xd0cf5efffe1f5a5f/set {"$EVTPART0":"$EVTPART1"}
attr Max_Lampe webCmd brightness:color_temp



Tada, eine Ikea Tradfri Lampe, welche sich sowohl über Slider als auch über Kommandos an/aus als auch regeln (Dimmen/Temperatur) lässt.

Ich hoffe ich konnte jemandem damit helfen.

Grüße, Max.

Beta-User

Danke für die Rückmeldung.
Ergänzend: an der Bridge das bridge-attribut setzen. Dann sollte man mit network-map raw auch an die regexp für die weiteren mqtt2-Devices kommen.
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

netbus

Hallo,
wisst ihr wie die definition aussieht für Ikea Tradfri RGB Lampen?
Hier meine def:
defmod TV_Lampe MQTT2_DEVICE
attr TV_Lampe IODev mqtt2
attr TV_Lampe eventMap on:ON:off off:OFF:on
attr TV_Lampe icon light_control
attr TV_Lampe readingList zigbee_pi:zigbee2mqtt/TV_Lampe:.* { json2nameValue($EVENT) }
attr TV_Lampe room MQTT2_DEVICE
attr TV_Lampe setList on zigbee2mqtt/TV_Lampe/set {"state":"ON"}\
off zigbee2mqtt/TV_Lampe/set {"state":"OFF"}\
brightness:colorpicker,BRI,0,15,255 zigbee2mqtt/TV_Lampe/set {"state":"on","$EVTPART0":"$EVTPART1"}\
rgb:colorpicker,color,0,1,359 zigbee2mqtt/TV_Lampe/set {"$EVTPART0":"$EVTPART1"}
attr TV_Lampe webCmd brightness:rgb


Mit dieser Def bekomme ich
zigbee2mqtt:error 2018-11-14 21:08:30 No converter available for 'rgb' (fff4d1)

Beta-User

Das Farbthema ist etwas "speziell"....
Im Moment gibt es dazu nur Fragmente, zu finden im " läuft: zigbee2mqtt mit mqtt2" oder so ähnlich. Das Problem besteht darin, dass der java-Dienst eine Farbangabe mit 2 oder 3 Detailangaben braucht.
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