Läuft: zigbee2mqtt mit MQTT2_SERVER und MQTT2_DEVICE

Begonnen von supernova1963, 23 September 2018, 19:17:21

Vorheriges Thema - Nächstes Thema

Beta-User

Zitat von: Badflex am 07 Oktober 2018, 18:39:57
Gibt es schon eine Möglichkeit bei den Tradfri lampen die Farbtemperatur oder die Farbe darüber zu ändern?
Das sollte "eigentlich" kein Problem sein: Im Prinzip sollte sich der brightness-code entsprechend anpassen lassen (setList ergänzen, webCmd und widgetOverride). Da aber meine Bulbs keine Farbtemperatur kennen und schon gleich keine Farbe, kann ich das nicht testen. Bei der Farbtemperatur müßten dann einfach auch die Grenzwerte für den Colorpicker-Slider angepaßt werden.

Notfalls kannst du mir die Topics nennen, auf die das gesendet werden muß, und das "Schlüsselwort" für den JSON-Blob, dann kann ich das per "Fernwartung" versuchen. Ansonsten gerne das Ergebnis posten, dann kommt's für Nachahmer ins Wiki ;) .
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

rudolfkoenig

Seit heute ist widgetOverride nicht unbedingt notwendig, man kann die modifier direkt ins setList schreiben, siehe https://forum.fhem.de/index.php/topic,90145.msg843370.html#msg843370

Beta-User

Danke für das mit der erweiterten setList, das ist m.E. wieder eine Vereinfachung, die dem Anfänger helfen dürfte.

Gestern bin ich noch über einen Punkt gestolpert: Will man in der setList $EVENT oder Teile davon verwenden, muß man das noch in geschweifte Klammern packen (siehe oben bei brightness), sonst wird das als Text behandelt und so versendet. Wäre es möglich, das auch noch zu vereinfachen oder habe ich mal wieder etwas übersehen?

Da logs manchmal mehr sagen als lange Erklärungen:
Ändert man das oben zu
brightness zigbee2mqtt/Kueche_Durchgang_A2/set {\"state\":\"on\",\"$EVTPART0\":\"$EVTPART1\"}kommt das hier raus:Client mosqsub/... received PUBLISH (d0, q0, r0, m0, 'zigbee2mqtt/Kueche_Durchgang_A1/set', ... (50 bytes))
{\"state\":\"on\",\"$EVTPART0\":\"$EVTPART1\"} 165

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

rudolfkoenig

Falls man in einer setList Zeile kein {} verwendet, dann werden alle Argumente des Befehls hinter dem spezifizierten topic als message geschrieben.
Ich habe Schwierigkeiten mir vorzustellen, wie das sinnvoll mit $EVENT zusammenspielen soll.

MarkusN

Zitat von: Beta-User am 07 Oktober 2018, 20:24:51
Das sollte "eigentlich" kein Problem sein: Im Prinzip sollte sich der brightness-code entsprechend anpassen lassen (setList ergänzen, webCmd und widgetOverride). Da aber meine Bulbs keine Farbtemperatur kennen und schon gleich keine Farbe, kann ich das nicht testen. Bei der Farbtemperatur müßten dann einfach auch die Grenzwerte für den Colorpicker-Slider angepaßt werden.

Notfalls kannst du mir die Topics nennen, auf die das gesendet werden muß, und das "Schlüsselwort" für den JSON-Blob, dann kann ich das per "Fernwartung" versuchen. Ansonsten gerne das Ergebnis posten, dann kommt's für Nachahmer ins Wiki ;) .

Hier meine Definition, die ich mal um colortemp erweitert habe:

defmod ikea_flur_oben MQTT2_DEVICE
attr ikea_flur_oben IODev mqtt_server
attr ikea_flur_oben alias Licht Flur Oben
attr ikea_flur_oben eventMap on:ON off:OFF
attr ikea_flur_oben group group_licht
attr ikea_flur_oben icon light_control
attr ikea_flur_oben readingList zigbee2mqtt:zigbee2mqtt/ikea_flur_oben:.* { json2nameValue($EVENT) }
attr ikea_flur_oben room 110_Flur,23_MQTT
attr ikea_flur_oben setList on {'zigbee2mqtt/ikea_flur_oben/set {"state":"ON"}'}\
off {'zigbee2mqtt/ikea_flur_oben/set {"state":"OFF"}'}\
brightness {"zigbee2mqtt/ikea_flur_oben/set {\"$EVTPART0\":\"$EVTPART1\"}"}\
color_temp {"zigbee2mqtt/ikea_flur_oben/set {\"$EVTPART0\":\"$EVTPART1\"}"}
attr ikea_flur_oben webCmd brightness:on:off
attr ikea_flur_oben widgetOverride brightness:colorpicker,BRI,0,1,255 color_temp:colorpicker,CT,250,1,454


Die Range 250 - 454 bezieht sich auf die LED Panels, bei Gluehbirnen koennten diese Werte anders aussehen.

rudolfkoenig

ZitatIch habe Schwierigkeiten mir vorzustellen, wie das sinnvoll mit $EVENT zusammenspielen soll.
Ist mir doch was eingefallen: falls die Zeile $EV enthaelt, dann wird sie speziell behandelt: in diesem Fall wird $EVENT und $EVTPARTx ersetzt. d.h. "set md brightness 10" liefert mit
attr md setList brightness zigbee2mqtt/Kueche_Durchgang_A2/set {"state":"on","$EVTPART0":"$EVTPART1"}die Topic/Message Kombination:zigbee2mqtt/Kueche_Durchgang_A2/set {"state":"on","brightness":"10"}Gilt fuer setList und getList.

Beta-User

@rudolfkoenig:
Es geht mehr um $EVTPARTx, weniger um den ganzen $EVENT. Bisher kenne ich keinen sinnvollen anderen Weg, z.B. das eigentliche Reading in JSON-Blobs zu bekommen als über die Verwendung von $EVTPART1 usw..

Für das rename muß es z.B. auszugsweise so aussehen:
... rename {"zigbee2mqtt/bridge/config/rename  { \"old\":\"$EVTPART1\",\"new\":\"$EVTPART2\"}"}\

@MarkusN
Danke für die Rückmeldung.
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

rudolfkoenig

ZitatEs geht mehr um $EVTPARTx, weniger um den ganzen $EVENT
Das klingt so, als ob Du noch was vermissen wuerdest.
Rename geht jetzt auch so:
rename zigbee2mqtt/bridge/config/rename  {"old":"$EVTPART1","new":"$EVTPART2"}

Beta-User

(Sorry, der zwischenzeitliche Post von 9:42 ist mir durchgerutscht gewesen, so wie das in den letzten Posts von 9:42 und 10:42 Uhr geschildert ist, ist das super, jedenfalls vorläufig vermisse ich nichts)

Wow, also Verwenden von $EVTPARTx und auch noch ohne die Maskiererei!

Super Service!
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

Beta-User

So, letzter Stand der Dinge (svn-Version) ist am Start, das vereinfacht die setList usw. wirklich nochmal sehr:
defmod IKEA_Bulb1 MQTT2_DEVICE
attr IKEA_Bulb1 IODev MQTT2_FHEM_Server
attr IKEA_Bulb1 devStateIcon {devStateIcon255($name)}
attr IKEA_Bulb1 eventMap on:ON off:OFF
attr IKEA_Bulb1 icon light_control
attr IKEA_Bulb1 readingList zigbee_pi:zigbee2mqtt/Kueche_Durchgang_A1:.* { json2nameValue($EVENT) }
attr IKEA_Bulb1 room Esszimmer
attr IKEA_Bulb1 setList on zigbee2mqtt/Kueche_Durchgang_A1/set {"state":"ON"}\
off zigbee2mqtt/Kueche_Durchgang_A1/set {"state":"OFF"}\
brightness:colorpicker,BRI,0,15,255 zigbee2mqtt/Kueche_Durchgang_A1/set {"state":"ON","$EVTPART0":"$EVTPART1"}
attr IKEA_Bulb1 webCmd brightness
Nix mehr widgetoverride usw.
Den gekürzten Code habe ich gleich in's Wiki gepackt (funktioniert aber erst ab morgen bzw. mit der svn-Version).
Noch der devStateIcon-Code:
##############################################
# $Id: myUtils_Color.pm 08-15 2018-10-08 18:31:44Z Beta-User $
#

package main;

use strict;
use warnings;
use POSIX;

sub
myUtils_Color_Initialize($$)
{
  my ($hash) = @_;
}

# Enter you functions below _this_ line.

sub devStateIcon255($) {
my $name = shift(@_);
return ".*:off:toggle" if( ReadingsVal($name,"state","ON") eq "OFF" );
my %dim_values = (
   0 => "dim06%",
   1 => "dim12%",
   2 => "dim18%",
   3 => "dim25%",
   4 => "dim31%",
   5 => "dim37%",
   6 => "dim43%",
   7 => "dim50%",
   8 => "dim56%",
   9 => "dim62%",
  10 => "dim68%",
  11 => "dim75%",
  12 => "dim81%",
  13 => "dim87%",
  14 => "dim93%",
);

my $pct = ReadingsVal($name,"brightness","255");
my $s = $dim_values{int($pct/18)};
$s="on" if( $pct > 253 );
return ".*:$s:off";
}

1;
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

Beta-User

Zitat von: rudolfkoenig am 08 Oktober 2018, 10:42:19
Das klingt so, als ob Du noch was vermissen wuerdest.
...vielleicht eine Sache noch, aber eher als Wunsch:
In den im Wiki verarbeiteten Fällen, gerade für $EVTPARTx, steht praktisch immer derselbe code, das einzige Unterscheidungsmerkmal ist vorne die set-Angabe. Vielleicht könnte man das noch "vereinfachen", also

attr <device> setList (on|off) zigbee2mqtt/Kueche_Durchgang_A1/set {"state":"$EVENT"}\
(brightness:colorpicker,BRI,0,15,255|color_temp:colorpicker,CT,250,1,454) zigbee2mqtt/Kueche_Durchgang_A1/set {"state":"ON","$EVTPART0":"$EVTPART1"}
Oder "setList .* ..."

Aber zugegeben: das ist dann schon ein nicht wirklich dringender Wunsch, das muß man ja nur einmal einrichten, dass war es schon... So ist es schon klasse, vielen Dank!
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

rudolfkoenig

Danke fuers Nachdenken und Optimieren, aber ich werde diesen Vorschlag erstmal nicht realisieren, da:
- ist fuer Anfaenger (also Wiki-Benutzer) schwieriger zu verstehen. Aus pedagogischer Sicht ist vermutlich selbst die widgetOverride Variante besser, da man auf einmal weniger verstehen muss.
- ist relativ viel Programmierlogik erforderlich
- das Verwenden von | kollidiert evtl. mit irgendwelchen widget-Parametern

Es sei denn, es gibt andere Anwendungsfaelle, die diese Nachteile ueberwiegen.

Badflex

Hallo,
Kann es sein das die router/repeater Funktion mit mqtt2 nicht geht?
Wenn die Lampen dicht am stick sind gehen sie bei mir einwandfrei. Sobald ich sie an den ursprünglichen Ort bringe geht nur noch eine. Eine andere ist nur 2 Meter daneben und sie geht nicht mehr.

Bei dem mqtt1 Server gingen sie alle 3.
Raspberry Pi, CUL868(SlowRF), FB 7490, SmartVisu, fast nur HomeMatic wenig FS20, Netatmo

Beta-User

Unwahrscheinlich.
Die Verwaltung der zigbee-Geräte erfolgt durch den zigbee2mqtt-Dienst (kkoenk's Java-Code), und der wird nicht geändert, weil ein anderer Broker eingesetzt wird.
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

Badflex

Raspberry Pi, CUL868(SlowRF), FB 7490, SmartVisu, fast nur HomeMatic wenig FS20, Netatmo