attrTemplate für ZigBee2Tasmota

Begonnen von kimbolero, 19 Juni 2020, 21:02:50

Vorheriges Thema - Nächstes Thema

psycho160

In der Color.pm gibts auch nur xyY2rgb und xyY2hex leider nix umgekerhtes wie z.B. hex2xy oder rgb2xy

Auf der Tasmota Seite "passt alles".. Der Workarround war nur weil das template falsche Werte für die Tradfri Lampe liefert.

Fürs erste kann ich es nur so belassen, weil ich nicht weiß wie man von RGB oder HEX auf X und Y kommt.
- 2013@FHEM - 2020 Setup: Pi 4 4GB Systeme: Shelly, Tasmota, Zigbee und mittlerweile nur noch wenig Homematic. Entwicker von: tado-FHEM Modul (perlcritic 3 ^^)(https://git.wolfmajer.at/Public/FHEM-Tado)

Beta-User

Zitat von: psycho160 am 01 Oktober 2020, 14:08:17
In der Color.pm gibts auch nur xyY2rgb und xyY2hex leider nix umgekerhtes wie z.B. hex2xy oder rgb2xy
...das ist mir durchaus klar, aber ggf. _kann man_ (du?) den Code mal durchsehen, ob man daraus den "Rückweg" ableiten kann...?!? Warum schreibe ich denn sonst, dass man einen patch brauchen könnte...?

Zitat
Auf der Tasmota Seite "passt alles".. Der Workarround war nur weil das template falsche Werte für die Tradfri Lampe liefert.
Da wäre ich mir nicht so sicher. Der ESP sollte (lt. der Wiki-Seite zu z2t) eine "Hue-Emulation" können, aber das muss man irgendwie aktivieren. Die erste Frage wäre also, _ob_ das denn aktiviert ist oder nicht (und wenn nein, wie man es ggf. aktivieren kann). Wenn die Emulation möglich ist und auch aktiviert, ist ggf. der "Vorwurf" korrekt, dass das template "falsch" ist, ansonsten ist es eben noch nicht so, dass auf der Tasmota-Seite "alles paßt".
(Sorry, bin grade etwas unzufrieden, weil mein Geschreibsel scheinbar unverständlich ist. Bitte berücksichtige, dass das ganze Thema z2t ziemlich "jung" ist und auch etwas "tricky", so dass ich die (ggf. nur von mir so empfundene) Erwartungshaltung, dass alles gleich ootb funktioniert, etwas "überzogen" finde und an der Stelle nur was sinnvolles bereitstellen kann, wenn der eine oder andere, der die jeweilige Hardware hat, auch entsprechend mit "um die Ecke" denkt. Bitte versuche also nochmal rauszufinden, ob der Tasmota den Konfigurationsbefehl für diese Bulb "gefressen" hat oder nicht - und nein, ich habe keine Ahnung, wie das ggf. geht...).
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

psycho160

#122
Hi nochmal, ich hab nun die Konvertierung selbst (fürs erste nur in der 99_myUtils.pm) programmiert und nach ersten Tests funktioniert das sehr gut. IKEA Lampe gibt die Fabren des FHEM Colorpickers wieder :-)

Sub für die Umrechung:

99_myUtils.pm
sub ColorConvert($)
{

my ($hex) = @_;
my $red = 0;
my $green= 0;
my $blue = 0;

if ( uc($hex) =~ /^(..)(..)(..)$/ ) {
( $red, $green, $blue ) = ( hex($1), hex($2), hex($3) );
}

# debug
#print "red: " . $red . " green: " .$green . " blue " . $blue ."\n";

$red = $red/255;
$green = $green/255;
$blue = $blue/255;

$red=$red**2.19921875;
$green=$green**2.19921875;
$blue=$blue**2.19921875;

$red=$red*100;
$green=$green*100;
$blue=$blue*100;

# X, Y and Z output refer to a D65/2° standard illuminant.
my $x=$red * 0.7161046 + $green * 0.1009296 + $blue * 0.1471858;
my $y=$red * 0.2581874 + $green * 0.7249378 + $blue * 0.0168748;
# z wird nicht benötigt
# my $z=$red * 0.0000000 + $green * 0.0517813 + $blue * 0.7734287;

# conversation to XY colorspace for IKEA blub
$x = ($x / 100) * 65534;
$y = ($y / 100) * 65534;

return (int($x),int($y));

}


PS: Die Formel hab ich von diesem Forum (https://community.openhab.org/t/solved-convert-hsbtype-to-cie-xy-needed-for-ikea-tradfri-control-through-deconz-rest/48825/13) und hab es nur nach Perl übersetzt.

Vielleicht kann ich damit ja jemandem weiterhelfen der den gleichen Systemaufbau (IKEA Tradfri direkt mit zigbee2tasmota steuern) hat und auch vor dem Problem steht, dass er die Farbe einer IKEA RGB LED (LED1624G9) nicht einstellen kann.

Für mich ist das Problem nun gelöst  :D
lg
- 2013@FHEM - 2020 Setup: Pi 4 4GB Systeme: Shelly, Tasmota, Zigbee und mittlerweile nur noch wenig Homematic. Entwicker von: tado-FHEM Modul (perlcritic 3 ^^)(https://git.wolfmajer.at/Public/FHEM-Tado)

SirUli

Will mich da gar nicht groß einmischen aber evtl. kann ich etwas klarheit bringen:

Zitat von: Beta-User am 01 Oktober 2020, 14:20:54Der ESP sollte (lt. der Wiki-Seite zu z2t) eine "Hue-Emulation" können

Wenn du damit die Hue Emulation als "Kann eine Hue Bridge emulieren" meinst (was Tasmota bereit stellt), dann würde das hier nicht helfen - das ist wirklich nur für die Steuerung einer "On-Off" Funktion via Alexa.

Beta-User

#124
Zitat von: SirUli am 01 Oktober 2020, 22:35:51
Wenn du damit die Hue Emulation als "Kann eine Hue Bridge emulieren" meinst (was Tasmota bereit stellt), dann würde das hier nicht helfen - das ist wirklich nur für die Steuerung einer "On-Off" Funktion via Alexa.
Hmm, die möglichen Stufen 10-5, die in https://tasmota.github.io/docs/Zigbee/#zigbee-and-hue-emulation-for-alexa genannt sind, deuten eher auf mehr wie "on/off" hin, aber zugegebenermaßen stochere ich da auch nur im Nebel rum. Meine Arbeitshypothese ist die: Wenn man das Setzen kann, kann man das Ergebnis irgendwo sehen und auch feststellen, ob es Auswirkungen hat... (Und wenn nein, _könnte_ man an der Quelle (beim Tasmota-Team) nachfragen, welchen Fehler man gemacht hat, oder ob die Doku da nicht passt...)

Was den Code angeht: Glückwunsch, dass das geklappt hat. Nett wäre, wenn du zum einen einen patch-Vorschlag bei "Sonstiges" platzieren könntest (justme1968 sieht das hier sonst vermutlich nicht, evtl. müsste man den etwas dynamisieren, dass man den/die Bulb-Spezifischen Anpassungsfaktor(en) (65534) mit übergeben kann?), und zum anderen dann ein RAW-list von dem fertigen Device (oder besser gleich: ein attrTemlate?) liefern könntest, das zu dieser Bulb passt.
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

TL60

Hallo,
ich hole das mal wieder hoch, denn die neuen Zigbee2Tasmota Versionen (>Vers.9) bringen doch einige Veränderungen mit sich. Meiner Meinung nach bedeutet das auch, das zumindest am Bridge template kleinere(?)  Anpassungen vorgenommen werden sollten. Bislang konnte über den Befehl ZbStatus1bzw.2oder3 (ohne Angabe einer short id) eine Liste aller angelernten Devices mit mehr oder weniger Detailangaben ausgegeben werden. Das funktioniert so nicht mehr, lediglich ZbStatus1 liefert noch: 11:23:53 MQT: stat/zb2tasmota/RESULT = {"ZbStatus1":[{"Device":"0x235E"},{"Device":"0x1469"},{"Device":"0xF6F8"},{"Device":"0xF5A6"},{"Device":"0x35ED"},{"Device":"0x6301"},{"Device":"0xC2BC"},{"Device":"0xAA21"},{"Device":"0x4B21"},{"Device":"0x6AC1"},{"Device":"0x15A5"},{"Device":"0x20E4"},{"Device":"0x3C11"}]} eine relativ nichtssagende Liste der short ids. Die anderen beiden Befehle ZBStatus2 und ZbStatus3 benötigen nun zwingend die Angabe einer Short id, sind also zur Darstellung einer Übersicht ungeeignet. Ersatz für die vorgenannten Befehle ist der Befehl ZbInfo (ohne Parameter), dieser liefert jedoch
ZitatZbInfo
   <device> = display all information known about a device, equivalent to ZbStatus3 with a simpler JSON output
einen anderen Json String nämlich
11:15:30.406 CMD: ZbInfo
11:15:30.414 MQT: tele/tasmota/62ED/SENSOR = {"ZbInfo":{"0x62ED":{"Device":"0x62ED","IEEEAddr":"0x00158D000572E78B","ModelId":"lumi.sensor_magnet.aq2","Manufacturer":"LUMI","Endpoints":[1],"Config":["O01.1","A01"],"ZoneStatus":0,"Reachable":true,"BatteryPercentage":100,"LastSeen":1188,"LastSeenEpoch":1610358942,"LinkQuality":170}}}
11:15:30.421 MQT: tele/tasmota/888A/SENSOR = {"ZbInfo":{"0x888A":{"Device":"0x888A","IEEEAddr":"0x00158D00045CF803","ModelId":"lumi.sensor_magnet.aq2","Manufacturer":"LUMI","Endpoints":[1],"Config":["O01.1","A01"],"ZoneStatus":0,"Reachable":true,"BatteryPercentage":100,"LastSeen":1210,"LastSeenEpoch":1610358920,"LinkQuality":175}}}
11:15:30.426 MQT: tele/tasmota/8502/SENSOR = {"ZbInfo":{"0x8502":{"Device":"0x8502","IEEEAddr":"0x14B457FFFE71DC4A","ModelId":"TRADFRI on/off switch","Manufacturer":"IKEA of Sweden","Endpoints":[1],"Config":[],"Reachable":true,"LastSeen":4137,"LastSeenEpoch":1610355993,"LinkQuality":149}}}
11:15:30.431 MQT: tele/tasmota/AB10/SENSOR = {"ZbInfo":{"0xAB10":{"Device":"0xAB10","IEEEAddr":"0x000B57FFFED6277A","ModelId":"TRADFRI bulb GU10 W 400lm","Manufacturer":"IKEA of Sweden","Endpoints":[1],"Config":["O01","L01"],"Power":0,"Dimmer":250,"Reachable":true,"LastSeen":4140,"LastSeenEpoch":1610355990,"LinkQuality":86}}}
11:15:30.433 MQT: stat/tasmota/RESULT = {"ZbInfo":"Done"}
Davon sieht man im Bridge Device von FHEM nach Ausführung nur 1:33:15.020 MQT: stat/tasmota_3809AB/RESULT = {"ZbInfo":"Done"} was auch logisch ist und sich aus den Topics ergibt. Daraus ergibt sich die Frage : Kann man das attrTemplate für di Zigbee2Tasmota Bridge erweitern, so daß man in FHEM wieder detailierte Infos zu den angelernten Geräten erhalten kann oder sollte man nur im Wiki einen entsprechenden Abschnitt mit Hinweise auf die Konsole und den Befehl ZbInfo geben?
Der 2.Punkt betrifft den neuen Befehl ZbMap, der direkt im Webinterface von Tasmota als Button hinterlegt ist und eine grafische Anzeige des Zigbee-Netzes zeigt, aber auch über die Konsole eingegeben werden kann, hier kann man vielleicht, ähnlich wie bei Zigbee2mqtt eine grafische Darstellung des Zigbee-Netzes in FHEM realisieren. 
Gruß Thomas

Beta-User

Aua...

Das ist ja mal wieder so eine Geschichte. Das auszuwerten wird relativ kompliziert. Kann Sinn machen, wenn man einen wirklichen Mehrwert hat, das kann ich im Moment nicht überblicken. Tendenziell sind die Infos bei den einzelnen Geräten "besser" aufgehoben als in der bridge (ich weiß aber grade nicht, ob die dort ausgepackt werden).

Kochrezept könnte sein, den 12CD/SENSOR-Topic in der bridge per regex zu abonnieren, und dann payload auf Start mit ZbInfo zu checken und dann die Device-Short-ID als Präfix für's Auspacken des inneren JSON zu verwenden... (Alles klar...?!?)



ZbMap existiert nur intern/im Web-Interface und nicht als MQTT-Topic? Dann können wir da relativ wenig machen (und es wäre die Frage, ob man diese Art der Funktionalität doppelt braucht). Würde den Inhalt dazu auch nicht im Wiki doppeln, sondern nur zeigen, dass es geht und dann auf das Tasmota-Wiki verweisen (so es da erklärt ist....).
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

TL60

Der Mehrwert hält sich sicher in Grenzen,  die Liste der am Zigbee Gateway angelernten Geräte ist ja auch im Webinterface sichtbar, man hat dann natürlich keine Übersicht über alle Geräte in FHEM. ZbMap schau ich mir nachher zu Hause an, meine aber das was per Mqtt ein Output erfolgt.
Gruß Thomas

Beta-User

Na ja, man kann den JSON auch komplett von json2nameValue() zerlegen lassen, das sollte auch "lesbare" Readings ergeben, aber eben viele...

Was die map-Daten angeht, sollte man vermutlich den JSON unausgepackt lassen, das dürfte "ähnlich" aussehen wie bei zigbee2mqtt; dafür hatte aber Rudi (?) dann eine Funktion geschrieben, die die Daten visualisiert.
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

TL60

Hallo
die Eingabe von ZbMap in die Konsole vom Bridge Device führt zu folgender Ausgabe 15:12:24.289 CMD: ZbMap
15:12:24.296 MQT: stat/tasmota_3809AB/RESULT = {"ZbMap":"Done"}
15:12:24.372 ZIG: sending `ZbMap 0x0000`
15:12:24.486 MQT: tele/tasmota_3809AB/RESULT = {"ZbMap":{"Device":"0x0000","Status":0,"StatusMessage":"SUCCESS","Total":6,"Start":1,"Map":[{"Device":"0xC5ED","DeviceType":"Router","RxOnWhenIdle":true,"Relationship":"Child","PermitJoin":null,"Depth":1,"LinkQuality":0},{"Device":"0x2F64","DeviceType":"Device","RxOnWhenIdle":false,"Relationship":"Child","PermitJoin":null,"Depth":1,"LinkQuality":170},{"Device":"0x6557","DeviceType":"Device","RxOnWhenIdle":false,"Relationship":"Child","PermitJoin":null,"Depth":1,"LinkQuality":170}]}}
15:12:24.587 MQT: tele/tasmota_3809AB/RESULT = {"ZbMap":{"Device":"0x0000","Status":0,"StatusMessage":"SUCCESS","Total":6,"Start":4,"Map":[{"Device":"0x1DD1","DeviceType":"Router","RxOnWhenIdle":true,"Relationship":"Child","PermitJoin":null,"Depth":1,"LinkQuality":146},{"Device":"0x9B47","DeviceType":"Router","RxOnWhenIdle":null,"Relationship":"None","PermitJoin":null,"Depth":255,"LinkQuality":124},{"Device":"0x6B3E","DeviceType":"Router","RxOnWhenIdle":null,"Relationship":"None","PermitJoin":null,"Depth":255,"LinkQuality":109}]}}
15:12:26.331 ZIG: sending `ZbMap 0x1DD1`
15:12:26.487 MQT: tele/tasmota_3809AB/RESULT = {"ZbMap":{"Device":"0x1DD1","Status":0,"StatusMessage":"SUCCESS","Total":4,"Start":1,"Map":[{"Device":"0x0000","DeviceType":"Coordinator","RxOnWhenIdle":true,"Relationship":"Parent","PermitJoin":null,"Depth":0,"LinkQuality":255},{"Device":"0x6B3E","DeviceType":"Router","RxOnWhenIdle":true,"Relationship":"Sibling","PermitJoin":null,"Depth":15,"LinkQuality":255},{"Device":"0x9B47","DeviceType":"Router","RxOnWhenIdle":true,"Relationship":"Sibling","PermitJoin":null,"Depth":15,"LinkQuality":255}]}}
15:12:26.637 MQT: tele/tasmota_3809AB/RESULT = {"ZbMap":{"Device":"0x1DD1","Status":0,"StatusMessage":"SUCCESS","Total":4,"Start":4,"Map":[{"Device":"0xA2F1","DeviceType":"Device","RxOnWhenIdle":false,"Relationship":"Child","PermitJoin":false,"Depth":2,"LinkQuality":201}]}}
15:12:28.339 ZIG: sending `ZbMap 0xA2F1`
15:12:30.302 ZIG: sending `ZbMap 0x6B3E`
15:12:30.458 MQT: tele/tasmota_3809AB/RESULT = {"ZbMap":{"Device":"0x6B3E","Status":0,"StatusMessage":"SUCCESS","Total":3,"Start":1,"Map":[{"Device":"0x0000","DeviceType":"Coordinator","RxOnWhenIdle":true,"Relationship":"Sibling","PermitJoin":null,"Depth":0,"LinkQuality":203},{"Device":"0x1DD1","DeviceType":"Router","RxOnWhenIdle":true,"Relationship":"Parent","PermitJoin":null,"Depth":15,"LinkQuality":255},{"Device":"0x9B47","DeviceType":"Router","RxOnWhenIdle":true,"Relationship":"Sibling","PermitJoin":null,"Depth":15,"LinkQuality":255}]}}
15:12:32.341 ZIG: sending `ZbMap 0x9B47`
15:12:32.497 MQT: tele/tasmota_3809AB/RESULT = {"ZbMap":{"Device":"0x9B47","Status":0,"StatusMessage":"SUCCESS","Total":3,"Start":1,"Map":[{"Device":"0x1DD1","DeviceType":"Router","RxOnWhenIdle":true,"Relationship":"Parent","PermitJoin":false,"Depth":1,"LinkQuality":255},{"Device":"0x0000","DeviceType":"Coordinator","RxOnWhenIdle":true,"Relationship":"None","PermitJoin":false,"Depth":0,"LinkQuality":252}]}}
15:12:32.646 MQT: tele/tasmota_3809AB/RESULT = {"ZbMap":{"Device":"0x9B47","Status":0,"StatusMessage":"SUCCESS","Total":3,"Start":3,"Map":[{"Device":"0x6B3E","DeviceType":"Router","RxOnWhenIdle":true,"Relationship":"None","PermitJoin":false,"Depth":2,"LinkQuality":255}]}}
15:12:38.339 ZIG: ZbMap done
Dabei fällt mir das Device 0X000 auf welches gar nicht existent ist. es wird jedenfalls nicht mitgelistet beim Befehl ZbStatus 15:26:07.275 CMD: ZbStatus
15:26:07.284 MQT: stat/tasmota_3809AB/RESULT = {"ZbStatus1":[{"Device":"0x1DD1"},{"Device":"0xA2F1"},{"Device":"0x6B3E"},{"Device":"0x9B47"}]}
Vieles ist komisch in den neuen Versionen. Ach ja folgenden Syntax habe ich für den Befehl ZbMap gefunden
ZitatZbMap<n>    Asks the device for its view of the Zigbee topology
<device> the device to query
<n> the start index for the request, 1 is the default. This is used to scan through all values since devices usually return only 3 values per request.

Beta-User

...das wieder zusammenzubasteln, ist vermutlich lustig, aber wenn es eine halbwegs ordentliche Option gibt, das auf dem ESP anzusehen, sollten wir uns mit Map-Daten wohl eher nicht rumschlagen (es sei denn, es hat jemand Lust und Muße dazu...).

Man "muss" ja nicht alles verwerten, von dem jemand glaubt, dass man es via MQTT unbedingt auch versenden muss... (von daher ist dann nur die Frage, ob das unnütze Events generiert bzw. wie man die ggf. verhindern 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

TL60

was da reinkommtist schon einiges
Zitat021-01-11_15:12:24 MQTT2_DVES_3809AB ZbMap: Done
2021-01-11_15:12:24 MQTT2_DVES_3809AB ZbMap_Map_1_LinkQuality: 0
2021-01-11_15:12:24 MQTT2_DVES_3809AB ZbMap_Map_3_DeviceType: Device
2021-01-11_15:12:24 MQTT2_DVES_3809AB ZbMap_Map_2_DeviceType: Device
2021-01-11_15:12:24 MQTT2_DVES_3809AB ZbMap_Map_1_RxOnWhenIdle: true
2021-01-11_15:12:24 MQTT2_DVES_3809AB ZbMap_Map_1_Depth: 1
2021-01-11_15:12:24 MQTT2_DVES_3809AB ZbMap_Map_3_Relationship: Child
2021-01-11_15:12:24 MQTT2_DVES_3809AB ZbMap_Map_1_Device: 0xC5ED
2021-01-11_15:12:24 MQTT2_DVES_3809AB ZbMap_Total: 6
2021-01-11_15:12:24 MQTT2_DVES_3809AB ZbMap_Device: 0x0000
2021-01-11_15:12:24 MQTT2_DVES_3809AB ZbMap_Map_2_Relationship: Child
2021-01-11_15:12:24 MQTT2_DVES_3809AB ZbMap_StatusMessage: SUCCESS
2021-01-11_15:12:24 MQTT2_DVES_3809AB ZbMap_Status: 0
2021-01-11_15:12:24 MQTT2_DVES_3809AB ZbMap_Map_3_Device: 0x6557
2021-01-11_15:12:24 MQTT2_DVES_3809AB ZbMap_Start: 1
2021-01-11_15:12:24 MQTT2_DVES_3809AB ZbMap_Map_3_RxOnWhenIdle: false
2021-01-11_15:12:24 MQTT2_DVES_3809AB ZbMap_Map_3_Depth: 1
2021-01-11_15:12:24 MQTT2_DVES_3809AB ZbMap_Map_1_Relationship: Child
2021-01-11_15:12:24 MQTT2_DVES_3809AB ZbMap_Map_2_Depth: 1
2021-01-11_15:12:24 MQTT2_DVES_3809AB ZbMap_Map_2_RxOnWhenIdle: false
2021-01-11_15:12:24 MQTT2_DVES_3809AB ZbMap_Map_2_Device: 0x2F64
2021-01-11_15:12:24 MQTT2_DVES_3809AB ZbMap_Map_1_DeviceType: Router
2021-01-11_15:12:24 MQTT2_DVES_3809AB ZbMap_Map_3_LinkQuality: 170
2021-01-11_15:12:24 MQTT2_DVES_3809AB ZbMap_Map_2_LinkQuality: 170
2021-01-11_15:12:24 MQTT2_DVES_3809AB ZbMap_Map_2_Device: 0x9B47
2021-01-11_15:12:24 MQTT2_DVES_3809AB ZbMap_Map_2_Depth: 255
2021-01-11_15:12:24 MQTT2_DVES_3809AB ZbMap_Map_1_Relationship: Child
2021-01-11_15:12:24 MQTT2_DVES_3809AB ZbMap_Map_3_Depth: 255
2021-01-11_15:12:24 MQTT2_DVES_3809AB ZbMap_Start: 4
2021-01-11_15:12:24 MQTT2_DVES_3809AB ZbMap_Map_3_Device: 0x6B3E
2021-01-11_15:12:24 MQTT2_DVES_3809AB ZbMap_Status: 0
2021-01-11_15:12:24 MQTT2_DVES_3809AB ZbMap_StatusMessage: SUCCESS
2021-01-11_15:12:24 MQTT2_DVES_3809AB ZbMap_Map_2_LinkQuality: 124
2021-01-11_15:12:24 MQTT2_DVES_3809AB ZbMap_Map_1_DeviceType: Router
2021-01-11_15:12:24 MQTT2_DVES_3809AB ZbMap_Map_3_LinkQuality: 109
2021-01-11_15:12:24 MQTT2_DVES_3809AB ZbMap_Map_2_DeviceType: Router
2021-01-11_15:12:24 MQTT2_DVES_3809AB ZbMap_Map_3_DeviceType: Router
2021-01-11_15:12:24 MQTT2_DVES_3809AB ZbMap_Map_1_LinkQuality: 146
2021-01-11_15:12:24 MQTT2_DVES_3809AB ZbMap_Map_2_Relationship: None
2021-01-11_15:12:24 MQTT2_DVES_3809AB ZbMap_Device: 0x0000
2021-01-11_15:12:24 MQTT2_DVES_3809AB ZbMap_Map_1_Device: 0x1DD1
2021-01-11_15:12:24 MQTT2_DVES_3809AB ZbMap_Total: 6
2021-01-11_15:12:24 MQTT2_DVES_3809AB ZbMap_Map_3_Relationship: None
2021-01-11_15:12:24 MQTT2_DVES_3809AB ZbMap_Map_1_RxOnWhenIdle: true
2021-01-11_15:12:24 MQTT2_DVES_3809AB ZbMap_Map_1_Depth: 1
2021-01-11_15:12:26 MQTT2_DVES_3809AB ZbMap_Map_2_LinkQuality: 255
2021-01-11_15:12:26 MQTT2_DVES_3809AB ZbMap_Map_1_DeviceType: Coordinator
2021-01-11_15:12:26 MQTT2_DVES_3809AB ZbMap_Map_3_LinkQuality: 255
2021-01-11_15:12:26 MQTT2_DVES_3809AB ZbMap_Map_2_Depth: 15
2021-01-11_15:12:26 MQTT2_DVES_3809AB ZbMap_Map_2_RxOnWhenIdle: true
2021-01-11_15:12:26 MQTT2_DVES_3809AB ZbMap_Map_2_Device: 0x6B3E
2021-01-11_15:12:26 MQTT2_DVES_3809AB ZbMap_StatusMessage: SUCCESS
2021-01-11_15:12:26 MQTT2_DVES_3809AB ZbMap_Status: 0
2021-01-11_15:12:26 MQTT2_DVES_3809AB ZbMap_Map_3_Device: 0x9B47
2021-01-11_15:12:26 MQTT2_DVES_3809AB ZbMap_Start: 1
2021-01-11_15:12:26 MQTT2_DVES_3809AB ZbMap_Map_3_Depth: 15
2021-01-11_15:12:26 MQTT2_DVES_3809AB ZbMap_Map_3_RxOnWhenIdle: true
2021-01-11_15:12:26 MQTT2_DVES_3809AB ZbMap_Map_1_Relationship: Parent
2021-01-11_15:12:26 MQTT2_DVES_3809AB ZbMap_Map_2_Relationship: Sibling
2021-01-11_15:12:26 MQTT2_DVES_3809AB ZbMap_Map_1_Depth: 0
2021-01-11_15:12:26 MQTT2_DVES_3809AB ZbMap_Map_1_RxOnWhenIdle: true
2021-01-11_15:12:26 MQTT2_DVES_3809AB ZbMap_Map_3_Relationship: Sibling
2021-01-11_15:12:26 MQTT2_DVES_3809AB ZbMap_Total: 4
2021-01-11_15:12:26 MQTT2_DVES_3809AB ZbMap_Map_1_Device: 0x0000
2021-01-11_15:12:26 MQTT2_DVES_3809AB ZbMap_Device: 0x1DD1
2021-01-11_15:12:26 MQTT2_DVES_3809AB ZbMap_Map_2_DeviceType: Router
2021-01-11_15:12:26 MQTT2_DVES_3809AB ZbMap_Map_1_LinkQuality: 255
2021-01-11_15:12:26 MQTT2_DVES_3809AB ZbMap_Map_3_DeviceType: Router
2021-01-11_15:12:26 MQTT2_DVES_3809AB ZbMap_Map_1_RxOnWhenIdle: false
2021-01-11_15:12:26 MQTT2_DVES_3809AB ZbMap_Map_1_Depth: 2
2021-01-11_15:12:26 MQTT2_DVES_3809AB ZbMap_Map_1_PermitJoin: false
2021-01-11_15:12:26 MQTT2_DVES_3809AB ZbMap_Total: 4
2021-01-11_15:12:26 MQTT2_DVES_3809AB ZbMap_Map_1_DeviceType: Device
2021-01-11_15:12:26 MQTT2_DVES_3809AB ZbMap_Map_1_Device: 0xA2F1
2021-01-11_15:12:26 MQTT2_DVES_3809AB ZbMap_Device: 0x1DD1
2021-01-11_15:12:26 MQTT2_DVES_3809AB ZbMap_StatusMessage: SUCCESS
2021-01-11_15:12:26 MQTT2_DVES_3809AB ZbMap_Status: 0
2021-01-11_15:12:26 MQTT2_DVES_3809AB ZbMap_Map_1_LinkQuality: 201
2021-01-11_15:12:26 MQTT2_DVES_3809AB ZbMap_Start: 4
2021-01-11_15:12:26 MQTT2_DVES_3809AB ZbMap_Map_1_Relationship: Child
2021-01-11_15:12:30 MQTT2_DVES_3809AB ZbMap_Total: 3
2021-01-11_15:12:30 MQTT2_DVES_3809AB ZbMap_Map_1_Device: 0x0000
2021-01-11_15:12:30 MQTT2_DVES_3809AB ZbMap_Device: 0x6B3E
2021-01-11_15:12:30 MQTT2_DVES_3809AB ZbMap_Map_3_Relationship: Sibling
2021-01-11_15:12:30 MQTT2_DVES_3809AB ZbMap_Map_1_Depth: 0
2021-01-11_15:12:30 MQTT2_DVES_3809AB ZbMap_Map_1_RxOnWhenIdle: true
2021-01-11_15:12:30 MQTT2_DVES_3809AB ZbMap_Map_2_Relationship: Parent
2021-01-11_15:12:30 MQTT2_DVES_3809AB ZbMap_Map_1_LinkQuality: 203
2021-01-11_15:12:30 MQTT2_DVES_3809AB ZbMap_Map_3_DeviceType: Router
2021-01-11_15:12:30 MQTT2_DVES_3809AB ZbMap_Map_2_DeviceType: Router
2021-01-11_15:12:30 MQTT2_DVES_3809AB ZbMap_Map_3_LinkQuality: 255
2021-01-11_15:12:30 MQTT2_DVES_3809AB ZbMap_Map_1_DeviceType: Coordinator
2021-01-11_15:12:30 MQTT2_DVES_3809AB ZbMap_Map_2_LinkQuality: 255
2021-01-11_15:12:30 MQTT2_DVES_3809AB ZbMap_Start: 1
2021-01-11_15:12:30 MQTT2_DVES_3809AB ZbMap_Map_1_Relationship: Sibling
2021-01-11_15:12:30 MQTT2_DVES_3809AB ZbMap_Map_3_Depth: 15
2021-01-11_15:12:30 MQTT2_DVES_3809AB ZbMap_Map_3_RxOnWhenIdle: true
2021-01-11_15:12:30 MQTT2_DVES_3809AB ZbMap_StatusMessage: SUCCESS
2021-01-11_15:12:30 MQTT2_DVES_3809AB ZbMap_Map_3_Device: 0x9B47
2021-01-11_15:12:30 MQTT2_DVES_3809AB ZbMap_Status: 0
2021-01-11_15:12:30 MQTT2_DVES_3809AB ZbMap_Map_2_Device: 0x1DD1
Ausschnitt aus dem log von heute  :)
Ich brauche mal Lesetipps. Ich habe gedacht diese Fakedevice 0x0000 zu missbrauchen um dort die Readings Device Manufacturer und ModelID zu sammeln und  darzustellen,(quasi als Übersicht) funktioniert prinzipell auch,(1Gerät) ich hatte nur nicht bedacht, das wenn ich mehrere Geräte definiere, das letzte Gerät alle anderen überschreibt, weil die Readings ja gleich heissen. D.h. ich müsste irgendwas finden was den Json aufteilt und den Devicenamen entweder vor das Reading setzt oder ihn anhängt. Geht sowas überhaupt ? Und wenn ja hast du Stichworte bzw.Links.
Danke und Gruß
Thomas

Beta-User

Das geht schon... Bausteinchen für sowas sind m.E. am ehesten in den OpenMQTTGateway-attrTemplates zu finden, wobei da in der Regel der $TOPIC durchsucht wird; hier kannst du aber m.E. auch mehr oder weniger direkt $EVENT verwenden; man ermittelt eben den Prefix für json2nameValue(), da steht dann in der Regel im 2. Parameter $1 bzw. ${1}_, also das Ergebnis aus der Suche mit capturing group.
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

betonkelle

Hallo,

ich hätte da auch nochmal eine Frage und zwar zu dem Quick Fix in Post #122

Die Zeilen wurden in die Myutils pm eingetragen.
Ich habe so eine Datei bisher nicht angelegt, würde das dann aber versuchen, jedoch wollte ich vorab fragen, ob der code es schon irgendwie in das normale Repository geschafft hat, so wie Beta-User es vorgeschlagen hat.

Ich habe hier das selbe Phänomen, das ein LED Streifen keine Hue Werte akzeptiert aber die X und Y Koordinate im Raum von 0-65000.
Ich könnte auch mithelfen, bei der Entwicklung des Templates obwohl ich vom coden keinen Plan habe, kann ich beim debuggen hilfreich sein.

Besten Dank
Martin

NCom

#134
Hallo,

Ich habe deine SubRoutine von User psycho160 (RGB Color to XZ) umgeschrieben das gleich die Werte so rauskommen z.b. 46930,16922.

99_myUtils.pm

# ZigBee RGB Led Convert
# https://forum.fhem.de/index.php/topic,112253.msg1089165.html#msg1089165
sub
ZbRGBColorConvert($) {
  my ($hex) = @_;
  my $red = 0;
  my $green= 0;
  my $blue = 0;

  if ( uc($hex) =~ /^(..)(..)(..)$/ ) {
    ( $red, $green, $blue ) = ( hex($1), hex($2), hex($3) );
  }

  # debug
  # printf("R:*%s* G:*%s* B:*%s*\n",$red, $green, $blue);

  $red = $red/255;
  $green = $green/255;
  $blue = $blue/255;

  $red=$red**2.19921875;
  $green=$green**2.19921875;
  $blue=$blue**2.19921875;

  $red=$red*100;
  $green=$green*100;
  $blue=$blue*100;

  # X, Y and Z output refer to a D65/2° standard illuminant.
  my $x=$red * 0.7161046 + $green * 0.1009296 + $blue * 0.1471858;
  my $y=$red * 0.2581874 + $green * 0.7249378 + $blue * 0.0168748;
  # z wird nicht benötigt
  # my $z=$red * 0.0000000 + $green * 0.0517813 + $blue * 0.7734287;

  # conversation to XY colorspace for IKEA blub
  $x = ($x / 100) * 65534;
  $y = ($y / 100) * 65534;

  # debug
  # printf("X:*%s* Y:*%s*\n",int($x),int($y));

  my $xy_color = sprintf("%d,%d",int($x),int($y));

# return (int($x),int($y));
  return ($xy_color);
}


setlist:

rgb:colorpicker,RGB {'cmnd/DVES_22EE5F/ZbSend '. '{ "device":"0x99A1", "send":{"color":"' . ZbRGBColorConvert($EVTPART1). '"}}'}


Mein Device schaut jetzt so aus
ZigBee Bridge (SONOFF ZBBridge mit Tasmota)

defmod mqtt2.og.zbridge1 MQTT2_DEVICE DVES_22EE5F
attr mqtt2.og.zbridge1 IODev mqtt2.raspberry
attr mqtt2.og.zbridge1 bridgeRegexp tele/DVES_22EE5F/([^/]+)/SENSOR:.* "z2t_$1"
attr mqtt2.og.zbridge1 devStateIcon Online:10px-kreis-gruen@green Offline:10px-kreis-rot@red
attr mqtt2.og.zbridge1 getList ZbStatus1:noArg ZbStatus1 cmnd/DVES_22EE5F/ZbStatus1\
  ZbStatus2:textField ZbStatus2 cmnd/DVES_22EE5F/ZbStatus2 $EVTPART1
attr mqtt2.og.zbridge1 group ZigBee
attr mqtt2.og.zbridge1 icon zigbee_1
attr mqtt2.og.zbridge1 model tasmota_zigbee2tasmota_bridge
attr mqtt2.og.zbridge1 readingList tele/DVES_22EE5F/LWT:.* LWT\
tele/DVES_22EE5F/INFO.:.* { json2nameValue($EVENT,'',$JSONMAP) }\
tele/DVES_22EE5F/UPTIME:.* { json2nameValue($EVENT,'',$JSONMAP) }\
tele/DVES_22EE5F/STATE:.* { json2nameValue($EVENT) }\
tele/DVES_22EE5F/RESULT:.* { json2nameValue($EVENT) }\
stat/DVES_22EE5F/RESULT:.* { $EVENT =~ m,(ZbStatus.), ? { $1=>$EVENT } : json2nameValue($EVENT,'',$JSONMAP) }\
stat/DVES_22EE5F/POWER:.* LED\
stat/DVES_22EE5F/UPGRADE:.* { json2nameValue($EVENT, 'UPGRADE_', $JSONMAP) }\
stat/DVES_22EE5F/POWER1:.* POWER1
attr mqtt2.og.zbridge1 room MQTT
attr mqtt2.og.zbridge1 setList permit_join:0,1,99        cmnd/DVES_22EE5F/ZbPermitJoin $EVTPART1\
x_Reboot:noArg            cmnd/DVES_22EE5F/restart 1\
x_ZbSend:textField        cmnd/DVES_22EE5F/ZbSend {"device":"0x$EVTPART1","send":{"$EVTPART2":"$EVTPART3"}}\
z_ZbBind_single:textField cmnd/DVES_22EE5F/ZbBind {"Device":"$EVTPART1","ToDevice":"0x$EVTPART2","Endpoint":$EVTPART3,"ToEndpoint":$EVTPART4,"Cluster":$EVTPART5}\
z_ZbBind_group:textField  cmnd/DVES_22EE5F/ZbBind {"Device":"$EVTPART1","ToGroup":"0x$EVTPART2","Endpoint":$EVTPART3,"Cluster":$EVTPART4}\
join                      cmnd/DVES_22EE5F/ZbPermitJoin 1\
reboot                    cmnd/DVES_22EE5F/restart 1\
zbinfo                    cmnd/DVES_22EE5F/ZbInfo\
x_setFwOtaUrl:noArg       cmnd/DVES_22EE5F/OtaUrl http://ota.tasmota.com/tasmota/release/tasmota-zbbridge.bin\
x_FwUpgrade:noArg         cmnd/DVES_22EE5F/upgrade 1
attr mqtt2.og.zbridge1 setStateList on off
attr mqtt2.og.zbridge1 stateFormat LWT\
<a href="http://IPAddress" target="_blank">Hostname</a><br>
attr mqtt2.og.zbridge1 webCmd join:zbinfo:reboot


Lidl ZigBee Lampe

defmod mqtt2.zb.og.br.led MQTT2_DEVICE z2t_99A1
attr mqtt2.zb.og.br.led IODev mqtt2.raspberry
attr mqtt2.zb.og.br.led devStateIcon {zigbee2mqtt_devStateIcon255($name)}
attr mqtt2.zb.og.br.led group ZigBee
attr mqtt2.zb.og.br.led icon light_control
attr mqtt2.zb.og.br.led jsonMap Dimmer:brightness Power:state Device:0 Hue:hue Sat:saturation CT:ct
attr mqtt2.zb.og.br.led model tasmota_zigbee2tasmota_light_cct_hue
attr mqtt2.zb.og.br.led readingList tele/DVES_22EE5F/63E8/SENSOR:.* { $EVENT =~ s/"Power":1/"Power":"on"/g;; $EVENT =~ s/"Power":0/"Power":"off"/g;; $EVENT =~ m,^.*(..Device.+)..$, ?  json2nameValue($1,'',$JSONMAP) : $EVENT =~ m,0x99A1.:(.*).., ?  json2nameValue($1,'',$JSONMAP) : undef  }
attr mqtt2.zb.og.br.led room MQTT
attr mqtt2.zb.og.br.led setExtensionsEvent 1
attr mqtt2.zb.og.br.led setList brightness:colorpicker,BRI,0,5,254 cmnd/DVES_22EE5F/ZbSend { "device":"0x99A1", "send":{"Dimmer":$EVTPART1} }\
dimup:noArg cmnd/DVES_22EE5F/ZbSend { "device":"0x99A1", "send":{"DimmerUp":""} }\
dimdown:noArg cmnd/DVES_22EE5F/ZbSend { "device":"0x99A1", "send":{"DimmerDown":""} }\
saturation:colorpicker,BRI,0,1,254 cmnd/DVES_22EE5F/ZbSend { "device":"0x99A1", "send":{"Sat":$EVTPART1} }\
on cmnd/DVES_22EE5F/ZbSend {"device":"0x99A1","send":{"Power":"On"}}\
off cmnd/DVES_22EE5F/ZbSend {"device":"0x99A1","send":{"Power":"Off"}}\
ct:colorpicker,CT,153,5,370 cmnd/DVES_22EE5F/ZbSend { "device":"0x99A1", "send":{"CT":$EVTPART1} }\
red:noArg           {'cmnd/DVES_22EE5F/ZbSend '. '{ "device":"0x99A1", "send":{"color":"' . ZbRGBColorConvert("FF0000"). '"}}'}\
green:noArg         {'cmnd/DVES_22EE5F/ZbSend '. '{ "device":"0x99A1", "send":{"color":"' . ZbRGBColorConvert("00FF00"). '"}}'}\
blue:noArg          {'cmnd/DVES_22EE5F/ZbSend '. '{ "device":"0x99A1", "send":{"color":"' . ZbRGBColorConvert("0000FF"). '"}}'}\
yellow:noArg        {'cmnd/DVES_22EE5F/ZbSend '. '{ "device":"0x99A1", "send":{"color":"' . ZbRGBColorConvert("FFFF00"). '"}}'}\
orange:noArg        {'cmnd/DVES_22EE5F/ZbSend '. '{ "device":"0x99A1", "send":{"color":"' . ZbRGBColorConvert("FF6600"). '"}}'}\
cyan:noArg          {'cmnd/DVES_22EE5F/ZbSend '. '{ "device":"0x99A1", "send":{"color":"' . ZbRGBColorConvert("00FF99"). '"}}'}\
lila:noArg          {'cmnd/DVES_22EE5F/ZbSend '. '{ "device":"0x99A1", "send":{"color":"' . ZbRGBColorConvert("FF00BF"). '"}}'}\
rgb:colorpicker,RGB {'cmnd/DVES_22EE5F/ZbSend '. '{ "device":"0x99A1", "send":{"color":"' . ZbRGBColorConvert($EVTPART1). '"}}'}
attr mqtt2.zb.og.br.led setStateList on off
attr mqtt2.zb.og.br.led webCmd on:off:rgb