[gelöst] Weshalb greift jsonMap nicht ?

Begonnen von TomLee, 30 November 2020, 16:16:20

Vorheriges Thema - Nächstes Thema

TomLee

Hallo,

bei folgenden zwei BMs mag jsonMap beim battery-Reading nicht greifen, hatte alle Readings gelöscht, es wird immer wieder das battery-Reading erzeugt, jsonMap ignoriert.

defmod MQTT2_zigbee_0x00158d00031c22fa MQTT2_DEVICE zigbee_0x00158d00031c22fa
attr MQTT2_zigbee_0x00158d00031c22fa IODev MQTT2_Server
attr MQTT2_zigbee_0x00158d00031c22fa devStateIcon 1.true:message_presence@red 1.false:message_presence@green
attr MQTT2_zigbee_0x00158d00031c22fa imageLink /fhem/deviceimages/mqtt2/RTCGQ01LM.jpg
attr MQTT2_zigbee_0x00158d00031c22fa jsonMap battery:batteryPercent
attr MQTT2_zigbee_0x00158d00031c22fa model L_08_Human_Motion_TempSensor
attr MQTT2_zigbee_0x00158d00031c22fa readingList zigbee2mqtt/0x00158d00031c22fa:.* { json2nameValue($EVENT)}
attr MQTT2_zigbee_0x00158d00031c22fa room MQTT2_DEVICE
attr MQTT2_zigbee_0x00158d00031c22fa stateFormat 1:occupancy\
Batterie: batteryPercent

setstate MQTT2_zigbee_0x00158d00031c22fa 1:true\
Batterie: batteryPercent
setstate MQTT2_zigbee_0x00158d00031c22fa 2020-11-30 16:04:26 battery 100
setstate MQTT2_zigbee_0x00158d00031c22fa 2020-11-30 16:04:26 linkquality 55
setstate MQTT2_zigbee_0x00158d00031c22fa 2020-11-30 16:04:26 occupancy true
setstate MQTT2_zigbee_0x00158d00031c22fa 2020-11-30 16:04:26 voltage 3005


defmod MQTT2_zigbee_0x00158d00032c6d54 MQTT2_DEVICE zigbee_0x00158d00032c6d54
attr MQTT2_zigbee_0x00158d00032c6d54 IODev MQTT2_Server
attr MQTT2_zigbee_0x00158d00032c6d54 comment voltage 3005 2020-03-05 12:21:47\
voltage 2975 2020-04-16 19:40:56
attr MQTT2_zigbee_0x00158d00032c6d54 devStateIcon 1.true:message_presence@red 1.false:message_presence@green
attr MQTT2_zigbee_0x00158d00032c6d54 imageLink /fhem/deviceimages/mqtt2/RTCGQ01LM.jpg
attr MQTT2_zigbee_0x00158d00032c6d54 jsonMap battery:batteryPercent
attr MQTT2_zigbee_0x00158d00032c6d54 model zigbee2mqtt_Human_Motion_Sensor
attr MQTT2_zigbee_0x00158d00032c6d54 readingList zigbee2mqtt/0x00158d00032c6d54:.* { json2nameValue($EVENT) }
attr MQTT2_zigbee_0x00158d00032c6d54 room MQTT2_DEVICE
attr MQTT2_zigbee_0x00158d00032c6d54 stateFormat 1:occupancy\
Batterie: batteryPercent

setstate MQTT2_zigbee_0x00158d00032c6d54 1:false\
Batterie: batteryPercent
setstate MQTT2_zigbee_0x00158d00032c6d54 2020-11-30 16:03:12 battery 86
setstate MQTT2_zigbee_0x00158d00032c6d54 2020-11-30 16:00:09 linkquality 23
setstate MQTT2_zigbee_0x00158d00032c6d54 2020-11-30 16:03:12 occupancy false
setstate MQTT2_zigbee_0x00158d00032c6d54 2020-11-30 16:03:12 voltage 2975


Hab noch einen BM mit Lichtsensor dort klappt das einwandfrei.
(Bemerkung noch: hab vor 2-3 Wochen ein update auf zigbee2mqtt 1.16.1 gemacht, ich mein erst seitdem gibts das illuminance_lux 61 (sehe es heute das erste mal))

defmod MQTT2_zigbee_0x00158d000302cc1e MQTT2_DEVICE zigbee_0x00158d000302cc1e
attr MQTT2_zigbee_0x00158d000302cc1e IODev MQTT2_Server
attr MQTT2_zigbee_0x00158d000302cc1e devStateIcon 1.true:message_presence@red 1.false:message_presence@green
attr MQTT2_zigbee_0x00158d000302cc1e event-on-change-reading illuminance,state
attr MQTT2_zigbee_0x00158d000302cc1e group Wohnzimmer
attr MQTT2_zigbee_0x00158d000302cc1e imageLink /fhem/deviceimages/mqtt2/RTCGQ11LM.jpg
attr MQTT2_zigbee_0x00158d000302cc1e jsonMap occupancy:state battery:batteryPercent
attr MQTT2_zigbee_0x00158d000302cc1e model L_08_Human_Motion_TempSensor
attr MQTT2_zigbee_0x00158d000302cc1e readingList zigbee2mqtt/0x00158d000302cc1e:.* { json2nameValue($EVENT,'',$JSONMAP) }
attr MQTT2_zigbee_0x00158d000302cc1e room MQTT2_DEVICE,Rollladen
attr MQTT2_zigbee_0x00158d000302cc1e stateFormat 1:state\
&nbspLicht: illuminance Batterie: batteryPercent

setstate MQTT2_zigbee_0x00158d000302cc1e 1:false\
&nbspLicht: 61 Batterie: 97
setstate MQTT2_zigbee_0x00158d000302cc1e 2020-11-30 16:05:40 batteryPercent 97
setstate MQTT2_zigbee_0x00158d000302cc1e 2020-11-30 16:05:40 illuminance 61
setstate MQTT2_zigbee_0x00158d000302cc1e 2020-11-30 16:05:40 illuminance_lux 61
setstate MQTT2_zigbee_0x00158d000302cc1e 2020-11-30 16:05:40 linkquality 0
setstate MQTT2_zigbee_0x00158d000302cc1e 2020-11-30 16:05:40 state false
setstate MQTT2_zigbee_0x00158d000302cc1e 2020-11-30 16:05:40 voltage 2995


Hat jemand eine Erklärung, sehe keinen/den Fehler nicht.

Gruß

Thomas

Beta-User

Bei "{ json2nameValue($EVENT) }" klingelt nichts? (Mir fehlen da zwei Parameter im Aufruf ;) )
(Muss mal schauen, ob es da Verbesserungsbedarf im template gibt...)
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

Wenn man direkt drauf gestossen wird schon, thx.

Beta-User

Na ja, in der Regel nehmen einem die templates das ja ab.

Darfst gerne Vorschläge machen, m.E. wäre das mal wieder an der Zeit, dass jemand über die zigbee2mqtt-Geschichten (mit aktuellem Wissensstand) drübergeht (am besten jemand, der das "Zeug dazu hat"... ;) )
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

Das sind doch indirekt zwei Vorschläge.

Oder magst das in Template-Form ?

Du machst das in 10 Minuten mit SVN, ich brauch länger  :P.

Die Fragen hier wären:

Also dann jetzt für beide Sensoren (mit/ohne Lichtsensor) je ein Template ?
Welche Namen wenn zwei Templates ?
illuminance_lux eleminieren ?
Mit meinen devstateIcons ? Wäre die stateFormat Umsetzung verbesserungswürdig ?

Beta-User

Na ja, bei den zigbee2mqtt-templates hatte ich bzgl. der Sensoren eingecheckt, was mir jemand als sinnvoll mitgeteilt hatte; hier habe ich mich ehrlich gesagt schlicht nicht eingedacht; kann also sein, dass alles schnell geht, aber eigentlich war mein Ansatz in dem Fall, einfach dann mal zu unterstellen, dass du schon insgesamt sinnvolle Vorschläge machen wirst...
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

Ungetestet (du siehst das eh mit anderen Augen, testen tu ich später (vmtl. deinem Verbesserungsvorschlag) erster Vorschlag:

name:zigbee2mqtt_human_body_movement_illuminance
desc: Human motion and illuminance sensor via zigbee2mqtt <br>Tested with: Xiaomi Aqara RTCGQ11LM human body movement and illuminance sensor (occupancy and illuminance)
filter:TYPE=MQTT2_DEVICE:FILTER=CID~zigbee.*
order:L_08
par:BASE_TOPIC;base topic set in configuration.yaml of the zigbee2mqtt bridge;{ AttrVal("DEVICE","devicetopic",AttrVal("DEVICE","readingList","")) =~ m,[\b]?([^/:]+)[/].+, ? $1 : undef }
par:DEV_ID;name of the device in the zigbee2mqtt bridge;{ AttrVal("DEVICE","devicetopic",AttrVal("DEVICE","readingList","")) =~ m,[^/]+[/]([^/:]+).*, ? $1 : undef }
par:ICON;ICON as set, defaults to people_sensor;{ AttrVal("DEVICE","icon","people_sensor") }
attr DEVICE devicetopic BASE_TOPIC/DEV_ID
attr DEVICE devStateIcon 1.true:message_presence@red 1.false:message_presence@green
attr DEVICE icon ICON
attr DEVICE jsonMap occupancy:state battery:batteryPercent illuminance_lux:0
attr DEVICE stateFormat 1:state\
&nbspLicht: illuminance Batterie: batteryPercent
attr DEVICE readingList $\DEVICETOPIC:.* { json2nameValue($EVENT,'',$JSONMAP) }
deletereading -q DEVICE (?!associatedWith).*
attr DEVICE model zigbee2mqtt_human_body_movement_illuminance


name:zigbee2mqtt_human_body_movement
desc: Human motion sensor via zigbee2mqtt <br>Tested with: Xiaomi MiJia human RTCGQ01LM body movement sensor (occupancy)
filter:TYPE=MQTT2_DEVICE:FILTER=CID~zigbee.*
order:L_09
par:BASE_TOPIC;base topic set in configuration.yaml of the zigbee2mqtt bridge;{ AttrVal("DEVICE","devicetopic",AttrVal("DEVICE","readingList","")) =~ m,[\b]?([^/:]+)[/].+, ? $1 : undef }
par:DEV_ID;name of the device in the zigbee2mqtt bridge;{ AttrVal("DEVICE","devicetopic",AttrVal("DEVICE","readingList","")) =~ m,[^/]+[/]([^/:]+).*, ? $1 : undef }
par:ICON;ICON as set, defaults to people_sensor;{ AttrVal("DEVICE","icon","people_sensor") }
attr DEVICE devicetopic BASE_TOPIC/DEV_ID
attr DEVICE devStateIcon 1.true:message_presence@red 1.false:message_presence@green
attr DEVICE icon ICON
attr DEVICE jsonMap occupancy:state battery:batteryPercent
attr DEVICE stateFormat 1:state\
Batterie: batteryPercent
attr DEVICE readingList $\DEVICETOPIC:.* { json2nameValue($EVENT,'',$JSONMAP) }
deletereading -q DEVICE (?!associatedWith).*
attr DEVICE model zigbee2mqtt_human_body_movement


occupancy hab ich nach state ? ? ?

100% hab ich erstmal was übersehen, irgendwo einen Dreher, aber dafür bist du ja da  :P

TomLee

Zum nachvollziehen hier noch die JSON der beiden Geräte:

{"battery":97,"illuminance":0,"illuminance_lux":0,"linkquality":0,"occupancy":true,"voltage":2995}

 {"battery":100,"linkquality":55,"occupancy":true,"voltage":3005}


Braucht man voltage ? Auch rausnehmen ?

Beta-User

#8
Hmm, also, jetzt bin ich auch etwas am Rätseln, wie man mit allem am besten umgeht...

Am WE habe ich ein wenig mit Bewegungsmeldern@zigbee2tasmota rumgespielt (=> tasmota_zigbee2tasmota_motion_sensor), und da stellen sich ähnliche Fragen, auf die ich auf Anhieb auch nicht die "abschließende Antwort" habe, allenfalls Fragmente für Antworten sind in https://wiki.fhem.de/wiki/DevelopmentGuidelinesReadings zu finden.

Diskussion zu Details:

voltage
"voltage" ist "doof", besser wäre "batteryVoltage" in einem "üblichen Format". Setzte voraus, dass wir a) jsonMap setzen, um das label zu ändern und b) userReadings einsetzen, um den Inhalt vom mV auf V umzurechnen. Guter Plan oder zu kompliziert?
Alternative wie vorgeschlagen: jsonMap=>0?

state
Hatte das betr. jsonMap bei den tasmota_zigbee2tasmota_motion_sensor auch überlegt, aber erst mal verworfen und dann nur stateFormat gesetzt.
Hier neige ich dazu, "occupancy" als Reading zu erhalten und dann entweder "motion" zusätzlich via userReading zu generieren (true/false (?)) oder motion/nomotion (?) in "state" zu schreiben. Insgesamt wäre es gut, wenn a) die attrTemplate für MQTT2 das einheitlich machen würden und b) das eigentlich FHEM-übergreifend einheitlich wäre.
Da wären wir dann aber wieder bei der Frage, wer denn bitte schön entscheidet/festlegt, was gute Reading-Namen bzw. gute Inhalte für bestimmte Reading-Namen sind... (den Hut wollte ich mir eigentlich nicht so gerne aufziehen :( ).

Zum template-Vorschlag an sich:
a) eigentlich will ich nicht nochmal zu kritisch über alles drübersehen müssen und gebe dann einfach eventuelle "Haue" weiter (im Ernst: wenn was "kaputt" ist, meldet sich in der Regel jemand und man kann nachbessern...).
b) Farbe finde ich nicht so optimal, würde lieber mit unterschiedlichen Icons arbeiten; Vorschlag: people_sensor/motion_detector?
c) &nbsp wäre ein Novum in der file. Das ist ein Zeilenumbruch, oder? Wenn ja: spricht was gegen <br>?
d) Die attrTemplate würde ich gerne internationalisiert halten und von daher eher "lux" und "battery" verwenden (falls das ohne Konflikt mit den Reading-Namen geht)?

Deine Meinung?
Und ggf.: Wo sollte/könnte das Thema mit den Reading-Namen wer einkippen?!?

(EDIT: es gibt ein ähnliches für das Modell RTCGQ11LM, zigbee2mqtt_Human_Motion_Sensor; das würde ich aufbohren und dann das "einfache" ohne lux als Variante von dem "vollen" Basistemplate hernehmen und dann nur die Änderungen über das Nebentemplate ergänzen).

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

#9
voltage
Ich denke von x-Usern nutzt mit Sicherheit ein Teil auch batteryVoltage. Also wär ich dafür und nicht "auszublenden", wenn das eh schon im JSON mitkommt.
Mir gefällt das mit userReadings nicht. Kann man es nicht mit Perl in einem zusätzlichen ReadingList-Eintrag direkt lösen/umrechnen ?

state
Kenn mich nicht aus, kennst du andere Geräte welche ein occupancy liefern ?
Wenn nein, was spricht dagegen es zu elemenieren und es durch das geläufigere motion zu ersetzen ?
Hier die gleiche Frage, kann man das umwandeln in true/false|motion/nomotion nicht auch über Perl in readinList erledigen ?

Du legst das einfach fest für die attrTemplate für MQTT2 (wenn sich bis zum Zeitpunkt des hochladens ins SVN keiner meldet), ändern kann man es doch immer noch wenn sich jemand beschwert.

zu b:
Von mir aus auch ohne Farbe, Hauptsache ist doch man hat ein Beispiel, kann sich doch jeder dann ja auch seinem Geschmack anpassen.

zu c:
&nbsp ist doch ein Leerzeichen. Es geht aber auch ohne HTML, gerade ausprobiert.
Also so:
1:state
Licht: illuminance Batterie: batteryPercent


mit <br> rutscht der "Text" dann unter das Icon. siehe Bilder.
Mein Wunsch war aber die DeviceOverview nicht höher werden zu lassen wie nötig.
Was ich gerne hätte: das Icon ist etwa zwei Zeilen Text hoch, dahinter dann bspw. Licht ->Zeilenumbruch->Batterie (und nicht unter dem Icon)

zu d:
versteh ich leider nicht

Beta-User

Hmm, "an sich" bin ich auch eher verhalten, was userReadings angeht, und ja, man könnte das auch über readingList lösen. Aber das versteht vermutlich dann keiner mehr (was für "Nebendevices" ok ist aber zigbee2mqtt-Zeug kann man kaum als "Nebendevice belabeln), von daher wäre mein Vorschlag jetzt doch, das erst umzubenennen und dann gleich via userReading passend zu berechnen.

Die Alternative wäre, dafür eine myUtils zu bauen, aber damit würden wir es mehr oder weniger komplett dem Zugriff der user entziehen. Halte ich aus demselben Grund nicht für gut und schlucke dann lieber die "Pille" userReadings...?

Ergäbe folgenden Zwischenstand (da sollte auch das mit dem Umbruch drin sein?):
#by TomLee, https://forum.fhem.de/index.php/topic,116310.msg1105927.html#msg1105927
name:zigbee2mqtt_human_body_movement
desc: Human motion sensor via zigbee2mqtt <br>Tested with: Xiaomi MiJia human RTCGQ01LM body movement sensor (occupancy)
filter:TYPE=MQTT2_DEVICE:FILTER=CID~zigbee.*
order:L_08
set DEVICE attrTemplate zigbee2mqtt_Human_Motion_Sensor
attr DEVICE jsonMap battery:batteryPercent
attr DEVICE stateFormat Motion: occupancy\
Battery: batteryPercent%
attr DEVICE model zigbee2mqtt_human_body_movement
setreading DEVICE attrTemplateVersion 20201202

#source post: https://forum.fhem.de/index.php/topic,94495.msg898198.html#msg898198, addon by TomLee, https://forum.fhem.de/index.php/topic,116310.msg1105927.html#msg1105927
name:zigbee2mqtt_Human_Motion_Sensor
desc: Human motion sensor with illumiuance measurement via zigbee2mqtt <br>Tested with: Xiaomi Aqara RTCGQ11LM Human Motion Sensor
filter:TYPE=MQTT2_DEVICE:FILTER=CID~zigbee.*
order:L_08a
par:BASE_TOPIC;base topic set in configuration.yaml of the zigbee2mqtt bridge;{ AttrVal("DEVICE","devicetopic",AttrVal("DEVICE","readingList","")) =~ m,[\b]?([^/:]+)[/].+, ? $1 : undef }
par:DEV_ID;name of the device in the zigbee2mqtt bridge;{ AttrVal("DEVICE","devicetopic",AttrVal("DEVICE","readingList","")) =~ m,[^/]+[/]([^/:]+).*, ? $1 : undef }
par:ICON;ICON as set, defaults to people_sensor;{ AttrVal("DEVICE","icon","people_sensor") }
attr DEVICE icon ICON
attr DEVICE devStateIcon Motion..true:people_sensor Motion..false:motion_detector
attr DEVICE devicetopic BASE_TOPIC/DEV_ID
attr DEVICE jsonMap battery:batteryPercent battery:batteryVoltage illuminance_lux:0
attr DEVICE stateFormat Motion: occupancy\
Luminance: illuminance <br>Battery: batteryPercent%
attr DEVICE readingList $\DEVICETOPIC:.* { json2nameValue($EVENT,'',$JSONMAP) }
attr DEVICE userReadings batteryVoltage:batteryVoltage.* {ReadingsNum($name,'batteryVoltage',0)/1000}
deletereading -q DEVICE (?!associatedWith).*
attr DEVICE model zigbee2mqtt_Human_Motion_Sensor
setreading DEVICE attrTemplateVersion 20201202


Was das "motion"-Thema angeht, könnte man das auf dieselbe Weise erledigen: via jsonMap Umlabeln nach "state" und dann gleich via (sauber getrigggertem...) userReadings true=>motion false=>nomotion draus basteln?
Dann wäre das im Gleichklang mit HUEDevice, und es wäre auf dieselbe Weise möglich, dieses Device auch via zigbee2tasmota "identisch" abzubilden (da wird (zumindest beim Sonoff-Modell) "Occupancy" mit 0/1 geliefert...). Ob das z.B. aus Sprachsteuerungssicht die beste Variante ist, kann ich aber auch nicht sagen. CUL_HM macht motion:on/off und liefert zusätzlich state:noMotion/?...
Tendiere dazu, die ZigBee-Familienbande durchschlagen zu lassen, wer es anders will, kann ja immer noch "relativ einfach" eingreifen...

Der Rest (bzgl. b&d) sollte aus dem attrTemplate-Code erkennbar sein.

Btw.: DANKE für's miteinander diskutieren!
Ist zwar vielleicht manchmal lästig, aber mir hilft es sehr, meine Gedanken zu sortieren ;) .
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

Da waren noch ein,zwei c&p,Denkfehler und Schreibfehler drin.

So:

#by TomLee, https://forum.fhem.de/index.php/topic,116310.msg1105927.html#msg1105927
name:zigbee2mqtt_human_body_movement
desc: Human motion sensor via zigbee2mqtt <br>Tested with: Xiaomi MiJia human RTCGQ01LM body movement sensor (occupancy)
filter:TYPE=MQTT2_DEVICE:FILTER=CID~zigbee.*
order:L_08
set DEVICE attrTemplate zigbee2mqtt_Human_Motion_Sensor
attr DEVICE jsonMap battery:batteryPercent
attr DEVICE stateFormat Motion: occupancy\
Battery: batteryPercent%
attr DEVICE model zigbee2mqtt_human_body_movement
setreading DEVICE attrTemplateVersion 20201202

#source post: https://forum.fhem.de/index.php/topic,94495.msg898198.html#msg898198, addon by TomLee, https://forum.fhem.de/index.php/topic,116310.msg1105927.html#msg1105927
name:zigbee2mqtt_Human_Motion_Sensor
desc: Human motion sensor with illuminance measurement via zigbee2mqtt <br>Tested with: Xiaomi Aqara RTCGQ11LM Human Motion Sensor
filter:TYPE=MQTT2_DEVICE:FILTER=CID~zigbee.*
order:L_08a
par:BASE_TOPIC;base topic set in configuration.yaml of the zigbee2mqtt bridge;{ AttrVal("DEVICE","devicetopic",AttrVal("DEVICE","readingList","")) =~ m,[\b]?([^/:]+)[/].+, ? $1 : undef }
par:DEV_ID;name of the device in the zigbee2mqtt bridge;{ AttrVal("DEVICE","devicetopic",AttrVal("DEVICE","readingList","")) =~ m,[^/]+[/]([^/:]+).*, ? $1 : undef }
par:ICON;ICON as set, defaults to people_sensor;{ AttrVal("DEVICE","icon","people_sensor") }
attr DEVICE icon ICON
attr DEVICE devStateIcon Motion..true:people_sensor Motion..false:motion_detector
attr DEVICE devicetopic BASE_TOPIC/DEV_ID
attr DEVICE jsonMap battery:batteryPercent illuminance_lux:0
attr DEVICE stateFormat Motion: occupancy\
Luminance: illuminance <br>Battery: batteryPercent%
attr DEVICE readingList $\DEVICETOPIC:.* { json2nameValue($EVENT,'',$JSONMAP) }
attr DEVICE userReadings batteryVoltage:voltage.* {ReadingsNum($name,'voltage',0)/1000}
deletereading -q DEVICE (?!associatedWith).*
attr DEVICE model zigbee2mqtt_Human_Motion_Sensor
setreading DEVICE attrTemplateVersion 20201202


ergeben sich dann diese Geräte:

defmod bliblablub MQTT2_DEVICE zigbee_0x00158d000302cc1e
attr bliblablub IODev MQTT2_Server
attr bliblablub devStateIcon Motion..true:people_sensor Motion..false:motion_detector
attr bliblablub devicetopic zigbee2mqtt/0x00158d000302cc1e
attr bliblablub icon people_sensor
attr bliblablub imageLink /fhem/deviceimages/mqtt2/RTCGQ11LM.jpg
attr bliblablub jsonMap battery:batteryPercent illuminance_lux:0
attr bliblablub model zigbee2mqtt_Human_Motion_Sensor
attr bliblablub readingList $DEVICETOPIC:.* { json2nameValue($EVENT,'',$JSONMAP) }
attr bliblablub room MQTT2_DEVICE,Rollladen
attr bliblablub stateFormat Motion: occupancy\
Luminance: illuminance <br>Battery: batteryPercent%
attr bliblablub userReadings batteryVoltage:voltage.* {ReadingsNum($name,'voltage',0)/1000}

setstate bliblablub Motion: false\
Luminance: 0 <br>Battery: 97%
setstate bliblablub 2020-12-02 14:45:27 attrTemplateVersion 20201202
setstate bliblablub 2020-12-02 14:47:01 batteryPercent 97
setstate bliblablub 2020-12-02 14:47:01 batteryVoltage 2.995
setstate bliblablub 2020-12-02 14:47:01 illuminance 0
setstate bliblablub 2020-12-02 14:47:01 linkquality 0
setstate bliblablub 2020-12-02 14:47:01 occupancy false
setstate bliblablub 2020-12-02 14:47:01 voltage 2995


defmod test1 MQTT2_DEVICE zigbee_0x00158d00031c22fa
attr test1 IODev MQTT2_Server
attr test1 devStateIcon Motion..true:people_sensor Motion..false:motion_detector
attr test1 devicetopic zigbee2mqtt/0x00158d00031c22fa
attr test1 icon people_sensor
attr test1 imageLink /fhem/deviceimages/mqtt2/RTCGQ01LM.jpg
attr test1 jsonMap battery:batteryPercent
attr test1 model zigbee2mqtt_human_body_movement
attr test1 readingList $DEVICETOPIC:.* { json2nameValue($EVENT,'',$JSONMAP) }
attr test1 room MQTT2_DEVICE
attr test1 stateFormat Motion: occupancy\
Battery: batteryPercent%
attr test1 userReadings batteryVoltage:voltage.* {ReadingsNum($name,'voltage',0)/1000}

setstate test1 Motion: false\
Battery: 100%
setstate test1 2020-12-02 14:27:41 attrTemplateVersion 20201202
setstate test1 2020-12-02 14:40:55 batteryPercent 100
setstate test1 2020-12-02 14:40:55 batteryVoltage 3.005
setstate test1 2020-12-02 14:40:55 linkquality 15
setstate test1 2020-12-02 14:40:55 occupancy false
setstate test1 2020-12-02 14:40:55 voltage 3005


Mir gefallen die zwei voltage Readings nicht. Bleibe dabei das mir ein zusätzlicher ReadingList-Eintrag besser gefallen würde, ergo nur noch ein voltage Reading.
MMn versteht ein Großteil der Anwender die ReadingList-Einträge eh nicht und wird sie niemals anrühren. Und wenn das einer das tut, unterstelle ich mal ist er auch fähig diese direkte Umrechnung nachzuvollziehen.

Wenn ich ein Template aus der Liste auswähle, erwarte ich bei dem RTCGQ11LM irgendeinen Bezug zu Licht.
Du hast das illuminance bei meinem Vorschlag rausgenommen, was schlägst sonst vor.

Mit deinem Vorschlag zu stateFormat aus zigbee2mqtt_Human_Motion_Sensor passiert das auf dem Bild.
Darum hab ich bei mir alles in einer Zeile bisher.

Beta-User

Ähm, Mist, ich hatte in dem "kleinen" das jsonMap von voltage auf batteryVoltage nicht drin, deswegen die zwei Readings (was nicht beabsichtigt war); so müsste das (auch mit dem userReading auf sich selbst => nur ein Reading) klappen:
#by TomLee, https://forum.fhem.de/index.php/topic,116310.msg1105927.html#msg1105927
name:zigbee2mqtt_human_body_movement
desc: Human motion sensor via zigbee2mqtt <br>Tested with: Xiaomi MiJia human RTCGQ01LM body movement sensor (occupancy)
filter:TYPE=MQTT2_DEVICE:FILTER=CID~zigbee.*
order:L_08
set DEVICE attrTemplate zigbee2mqtt_Human_Motion_Sensor
attr DEVICE jsonMap battery:batteryPercent battery:batteryVoltage
attr DEVICE stateFormat Motion: occupancy\
Battery: batteryPercent%
attr DEVICE model zigbee2mqtt_human_body_movement
setreading DEVICE attrTemplateVersion 20201202


Wenn man via Perl nur die Batterie abfangen will, ist das ziemlich aufwändig in Perl zu notieren, weil man den Urspungswert im JSON innerhalb des JSON durch den berechneten Wert ersetzen müsste. MAn. unlesbar...

Was den Template-Namen angeht, ist der halt historisch gewachsen, und ich war daher etwas zögerlich, den zu ändern. Aber im Prinzip hast du recht, es ist schlecht zu erkennen, werde das daher wohl ändern.

Das mit "zweispaltig" ginge vermutlich mit einer Tabelle, aber das ist mir dann auch zu aufwändig...
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

Nochwas.

Wenn man ganz genau ist, ist das devstateIcon mittig ausgerichtet.
Das sieht dann in FHEMWEB bei mehrerem Geräten wie auf dem Bild ohne aus, wenn ein Batterie-Wert 3-stellig und einer 2-stellig ist.

Mit devstateStyle style="text-align:left" könnte man das umgehen, siehe Bild mit.
Weiß aber nicht ob das gewollt ist.

Ich hab keine Lust mehr jetzt, deinen letzten Vorschlag teste ich nachher oder Morgen.

Beta-User

...eilt nicht, notfalls checke ich das auf Verdacht ein, wird sich schon jemand beschweren, wenn's ganz schräg ist...

Das mit der Ausrichtung ist so eine Sache, bei der ich bisher auch nicht zu einem endgültigen Entschluss gekommen bin, aber auch die automatischen Ergebnisse nicht optimal finde. Muss mal nachsehen, ob sich das irgendwo global umstellen läßt. Irgendwie behagt mir der Gedanke nicht so recht, alle möglichen Devices jetzt einzeln via attrTemplate umzuformatieren.
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

OK, jetzt habe ich das auch mal nachgestelt (Danke für die json).

fhem.pl mag die Modifikation desselben Readings in userReadings nicht, also braucht man zwei Readings, wenn man das so machen will :( . Unschön...

Dann also so?
#by TomLee, https://forum.fhem.de/index.php/topic,116310.msg1105927.html#msg1105927
name:zigbee2mqtt_human_body_movement
desc: Human motion sensor via zigbee2mqtt <br>Tested with: Xiaomi MiJia human RTCGQ01LM body movement sensor (occupancy)
filter:TYPE=MQTT2_DEVICE:FILTER=CID~zigbee.*
order:L_08
set DEVICE attrTemplate zigbee2mqtt_human_body_movement_illuminance
attr DEVICE jsonMap battery:batteryPercent battery:batterymV
attr DEVICE stateFormat Motion: occupancy\
Battery: batteryPercent%
attr DEVICE model zigbee2mqtt_human_body_movement
setreading DEVICE attrTemplateVersion 20201203

#source post: https://forum.fhem.de/index.php/topic,94495.msg898198.html#msg898198, addon by TomLee, https://forum.fhem.de/index.php/topic,116310.msg1105927.html#msg1105927
name:zigbee2mqtt_human_body_movement_illuminance
desc: Human motion sensor with illumiuance measurement via zigbee2mqtt <br>Tested with: Xiaomi Aqara RTCGQ11LM Human Motion Sensor
filter:TYPE=MQTT2_DEVICE:FILTER=CID~zigbee.*
order:L_08a
par:BASE_TOPIC;base topic set in configuration.yaml of the zigbee2mqtt bridge;{ AttrVal("DEVICE","devicetopic",AttrVal("DEVICE","readingList","")) =~ m,[\b]?([^/:]+)[/].+, ? $1 : undef }
par:DEV_ID;name of the device in the zigbee2mqtt bridge;{ AttrVal("DEVICE","devicetopic",AttrVal("DEVICE","readingList","")) =~ m,[^/]+[/]([^/:]+).*, ? $1 : undef }
par:ICON;ICON as set, defaults to people_sensor;{ AttrVal("DEVICE","icon","people_sensor") }
attr DEVICE icon ICON
attr DEVICE devStateIcon Motion..true:people_sensor Motion..false:motion_detector
attr DEVICE devicetopic BASE_TOPIC/DEV_ID
attr DEVICE jsonMap battery:batteryPercent battery:batteryVoltage illuminance_lux:0
attr DEVICE stateFormat Motion: occupancy\
Luminance: illuminance Battery: batteryPercent%
attr DEVICE readingList $\DEVICETOPIC:.* { json2nameValue($EVENT,'',$JSONMAP) }
attr DEVICE userReadings batteryVoltage:batterymV.* {ReadingsNum($name,'batterymV',0)/1000}
deletereading -q DEVICE (?!associatedWith).*
attr DEVICE model zigbee2mqtt_human_body_movement_illuminance
setreading DEVICE attrTemplateVersion 20201203
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

Zitatfhem.pl mag die Modifikation desselben Readings in userReadings nicht, also braucht man zwei Readings, wenn man das so machen will :( . Unschön...
Oder https://fhem.de/commandref_modular.html#readingsChange

Beta-User

Zitat von: rudolfkoenig am 03 Dezember 2020, 12:10:43
Oder https://fhem.de/commandref_modular.html#readingsChange
:)
Eigentlich hätte "man" es wissen können, dass du schon weiter gedacht hattest und es auch eine Lösung für dieses Problem gibt :o ::) .

Habe mal eine ersten Schnelltest mit den Topc/JSON-Strukturen von hier gemacht, aber offenbar irgendwas übersehen (da sind noch Konfigurationsreste von der userReadings-Konstruktion drin, aber das sollte eigentlich keinen Einfluss haben, voltage kommt ungefiltert und ohne weitere Berechnung durch):

defmod mVtoV readingsChange MQTT2_zigbee_0x00158d00031c22fa voltage ([0-9]+) {sprintf("%0.2f", ($1/1000))}

defmod MQTT2_zigbee_0x00158d00031c22fa MQTT2_DEVICE zigbee_0x00158d00031c22fa
attr MQTT2_zigbee_0x00158d00031c22fa IODev m2server
attr MQTT2_zigbee_0x00158d00031c22fa devStateIcon Motion..true:people_sensor Motion..false:motion_detector
attr MQTT2_zigbee_0x00158d00031c22fa devicetopic zigbee2mqtt/0x00158d00031c22fa
attr MQTT2_zigbee_0x00158d00031c22fa icon people_sensor
attr MQTT2_zigbee_0x00158d00031c22fa jsonMap battery:batteryPercent illuminance_lux:0
attr MQTT2_zigbee_0x00158d00031c22fa model zigbee2mqtt_human_body_movement_illuminance
attr MQTT2_zigbee_0x00158d00031c22fa readingList $DEVICETOPIC:.* { json2nameValue($EVENT,'',$JSONMAP) }
attr MQTT2_zigbee_0x00158d00031c22fa room MQTT2_DEVICE
attr MQTT2_zigbee_0x00158d00031c22fa stateFormat Motion: occupancy\
Luminance: illuminance Battery: batteryPercent%
attr MQTT2_zigbee_0x00158d00031c22fa userReadings batteryVoltage:batterymV.* {ReadingsNum($name,'batterymV',0)/1000}


Für das publishen:

defmod m2server MQTT2_SERVER 1883 global
attr m2server rePublish 1

setstate m2server 2020-12-03 12:41:06 lastPublish zigbee2mqtt/0x00158d00031c22fa:{"battery":97,"illuminance":0,"illuminance_lux":0,"linkquality":0,"occupancy":true,"voltage":2096}
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

Mihca

Auf Hinweis von Beta-User hier ein paar Anmerkungen:

Zitat von: Beta-User am 02 Dezember 2020, 08:55:26
https://forum.fhem.de/index.php/topic,116310.msg1106143.html#msg1106143

Ich habe kürzlich eine Sonoff-ZigBee-Bridge mit Tasmota geflasht und einen SONOFF SNZB-02 Temperatur-Feuchtigkeit Sensor angebunden. Mit dem Template "tasmota_zigbee2tasmota_generic_battery_sensor" fehlte dann noch das Reading "batteryLevel" (wie bei HomeMatic). Das habe ich gelöst, indem ich im Attribut "jsonMap" das "BatteryVoltage:batteryLevel" ergänzt habe. Das Reading kommt in Volt.

Da der Empfang über die Sonoff-Bridge instabil war, habe ich den Sensor an einen ConBee II gekoppelt. Die Daten kommen stabil alle 5 Min. Allerdings fehlt das Reading "batteryLevel". Das habe ich nun über ein "userReading" "batteryLevel:batteryPercent.* {sprintf("%.1f",(ReadingsNum($name,"batteryPercent",3)/100*0.55+2.5))}" ergänzt (Annahme: 0%=2.5V, 100% =3.05V). Unschön an den Readings ist, dass das Reading "battery" denselben Prozentsatz wie "batteryPercent" anzeigt, und nicht wie bei HomeMatic "ok" oder "low". Da das Reading immer gleichzeitig mit "batteryPercent" geändert wird, macht es auch keinen Sinn es zu überschreiben. Wäre gut, da nochmal Hand anzulegen,

VG Achim
Viele Grüße
Achim
__________
Kein Fehler ist so dumm, dass man ihn nicht machen könnte.
Raspi Ubuntu 22.04 Perl 5.34, Rollo-, Sonnen-, Licht-, Heizungs-, Poolsteuerung, Energiebilanzen -- HomeMatic, FS20, ESP/Tasmota/ESPEasy, CUL868v3 USB, MAX! Cube LAN mit CUL-Firmware HomeMatic

Beta-User

ConBee II bedeutet: Du sprichst über ein HUEDevice?

Tendenziell würde ich dazu neigen, keine Readings (rechnerisch) zu erfinden, und schon gleich nicht unter "falschem" Namen (batteryVoltage wäre der aktuelle "Vorschlag" aus dem Developer guide, den "veralteten" Namen aus CUL_HM sollte man m.E. als "alten Zopf" abschneiden...). Was "battery" angeht, würde ich dazu neigen, hier dem Hinweis von Rudi in Richtung readingsChange zu folgen und aus dem doppelten Prozentwert dann ein "ok" oder "low" zu generieren. Leider waren meine ersten eigenen Versuche (mit der Umrechnung) da irgendwie nicht zielführend, bestimmt habe ich mal wieder irgendeine Kleinigkeit übersehen ::) .

Würde aber vorschlagen, das Thema (sofern es HUEDevice betrifft) dann an anderer Stelle weiter zu vertiefen, für MQTT2_DEVICE aus zigbee2mqtt habe ich erst mal das Ummappen nach batterymV + userReading-Umrechnung nach batteryVoltage in der attrTemplate-File drin.
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

Hab mir heute erst angeschaut was jetzt im SVN ist, ergibt:

defmod test1 MQTT2_DEVICE zigbee_0x00158d00032c6d54
attr test1 IODev MQTT2_Server
attr test1 devStateIcon Motion..true:people_sensor Motion..false:motion_detector
attr test1 devicetopic zigbee2mqtt/0x00158d00032c6d54
attr test1 icon people_sensor
attr test1 imageLink /fhem/deviceimages/mqtt2/RTCGQ01LM.jpg
attr test1 jsonMap battery:batteryPercent battery:batterymV
attr test1 model zigbee2mqtt_human_body_movement
attr test1 readingList $DEVICETOPIC:.* { json2nameValue($EVENT,'',$JSONMAP) }
attr test1 room MQTT2_DEVICE
attr test1 stateFormat Motion: occupancy\
Battery: batteryPercent%
attr test1 userReadings batteryVoltage:batterymV.* {ReadingsNum($name,'batterymV',0)/1000}

setstate test1 Motion: false\
Battery: batteryPercent%
setstate test1 2020-12-08 18:55:44 batteryVoltage 0.086
setstate test1 2020-12-08 18:55:44 batterymV 86
setstate test1 2020-12-08 18:55:44 linkquality 47
setstate test1 2020-12-08 18:55:44 occupancy false
setstate test1 2020-12-08 18:55:44 voltage 2975



defmod bliblablub MQTT2_DEVICE zigbee_0x00158d000302cc1e
attr bliblablub IODev MQTT2_Server
attr bliblablub devStateIcon Motion..true:people_sensor Motion..false:motion_detector
attr bliblablub devicetopic zigbee2mqtt/0x00158d000302cc1e
attr bliblablub group Wohnzimmer
attr bliblablub icon people_sensor
attr bliblablub jsonMap battery:batteryPercent battery:batteryVoltage illuminance_lux:0
attr bliblablub model zigbee2mqtt_human_body_movement_illuminance
attr bliblablub readingList $DEVICETOPIC:.* { json2nameValue($EVENT,'',$JSONMAP) }
attr bliblablub room MQTT2_DEVICE,Rollladen
attr bliblablub stateFormat Motion: occupancy\
Luminance: illuminance Battery: batteryPercent%
attr bliblablub userReadings batteryVoltage:batterymV.* {ReadingsNum($name,'batterymV',0)/1000}

setstate bliblablub Motion: false\
Luminance: 0 Battery: batteryPercent%
setstate bliblablub 2020-12-08 18:58:05 attrTemplateVersion 20201203
setstate bliblablub 2020-12-08 18:59:54 batteryVoltage 91
setstate bliblablub 2020-12-08 18:59:54 illuminance 0
setstate bliblablub 2020-12-08 18:59:54 linkquality 15
setstate bliblablub 2020-12-08 18:59:54 occupancy false
setstate bliblablub 2020-12-08 18:59:54 voltage 2985


Ganz ehrlich, komm nicht mit.
War es vielleicht so gemeint, das es dann halt erstmal zwei "Voltage"-Readings gibt ?

defmod test1 MQTT2_DEVICE zigbee_0x00158d00032c6d54
attr test1 IODev MQTT2_Server
attr test1 devStateIcon Motion..true:people_sensor Motion..false:motion_detector
attr test1 devicetopic zigbee2mqtt/0x00158d00032c6d54
attr test1 icon people_sensor
attr test1 imageLink /fhem/deviceimages/mqtt2/RTCGQ01LM.jpg
attr test1 jsonMap battery:batteryPercent voltage:batterymV
attr test1 model zigbee2mqtt_human_body_movement
attr test1 readingList $DEVICETOPIC:.* { json2nameValue($EVENT,'',$JSONMAP) }
attr test1 room MQTT2_DEVICE
attr test1 stateFormat Motion: occupancy\
Battery: batteryPercent%
attr test1 userReadings batteryVoltage:batterymV.* {ReadingsNum($name,'batterymV',0)/1000}

setstate test1 Motion: false\
Battery: 86%
setstate test1 2020-12-08 18:50:55 batteryPercent 86
setstate test1 2020-12-08 18:50:55 batteryVoltage 2.975
setstate test1 2020-12-08 18:50:55 batterymV 2975
setstate test1 2020-12-08 18:50:55 linkquality 49
setstate test1 2020-12-08 18:50:55 occupancy false



defmod bliblablub MQTT2_DEVICE zigbee_0x00158d000302cc1e
attr bliblablub IODev MQTT2_Server
attr bliblablub devStateIcon Motion..true:people_sensor Motion..false:motion_detector
attr bliblablub devicetopic zigbee2mqtt/0x00158d000302cc1e
attr bliblablub group Wohnzimmer
attr bliblablub icon people_sensor
attr bliblablub jsonMap battery:batteryPercent voltage:batterymV illuminance_lux:0
attr bliblablub model zigbee2mqtt_human_body_movement_illuminance
attr bliblablub readingList $DEVICETOPIC:.* { json2nameValue($EVENT,'',$JSONMAP) }
attr bliblablub room MQTT2_DEVICE,Rollladen
attr bliblablub stateFormat Motion: occupancy\
Luminance: illuminance Battery: batteryPercent%
attr bliblablub userReadings batteryVoltage:batterymV.* {ReadingsNum($name,'batterymV',0)/1000}

setstate bliblablub Motion: false\
Luminance: 0 Battery: 91%
setstate bliblablub 2020-12-08 18:50:29 batteryPercent 91
setstate bliblablub 2020-12-08 18:50:29 batteryVoltage 2.985
setstate bliblablub 2020-12-08 18:50:29 batterymV 2985
setstate bliblablub 2020-12-08 18:50:29 illuminance 0
setstate bliblablub 2020-12-08 18:50:29 linkquality 15
setstate bliblablub 2020-12-08 18:50:29 occupancy false

Beta-User

Mist, da habe ich in der Tat was durcheinandergewürfelt, update folgt...

Es sollten jetzt zwei Voltage-Readings vorhanden sein, das mit readingsChange wollte - jedenfalls auf die Schnelle - nicht so richtig.
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

Ich mein es gibt keinen Cube-Template-Thread darum kurz hier.

Das zigbee2mqtt_aqara_cube-Template müsste dann genauso ergänzt werden ist mir heute aufgefallen.

Zitatname:zigbee2mqtt_aqara_cube
desc: Aqara smarthome cube via zigbee2mqtt <br>Tested with: Xiaomi Aqara MFKZQ01LM smarthome cube
filter:TYPE=MQTT2_DEVICE:FILTER=CID~zigbee.*
order:L_14
par:BASE_TOPIC;base topic set in configuration.yaml of the zigbee2mqtt bridge;{ AttrVal("DEVICE","devicetopic",AttrVal("DEVICE","readingList","")) =~ m,[\b]?([^/:]+)[/].+, ? $1 : undef }
par:DEV_ID;name of the device in the zigbee2mqtt bridge;{ AttrVal("DEVICE","devicetopic",AttrVal("DEVICE","readingList","")) =~ m,[^/]+[/]([^/:]+).*, ? $1 : undef }
attr DEVICE stateFormat Action: action
attr DEVICE devicetopic BASE_TOPIC/DEV_ID
attr DEVICE readingList $\DEVICETOPIC:.* { json2nameValue($EVENT,'',$JSONMAP) }
attr DEVICE jsonMap battery:batteryPercent voltage:batterymV
attr DEVICE userReadings batteryVoltage:batterymV.* {ReadingsNum($name,'batterymV',0)/1000}

deletereading -q DEVICE (?!associatedWith).*
attr DEVICE model zigbee2mqtt_aqara_cube
setreading DEVICE attrTemplateVersion 20200904




Beta-User

Danke für den input, ist drin.

Vermutlich sollte "jemand" mal die ganzen z2m-Dinger durchgehen, gibt bestimmt noch mehr ("jemand"=jemand, der wenigstens einen Teil der Geräte mit z2m am laufen hat...).
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

Mir fällt gerade was auf und ich frage mich jetzt ob es sinnvoll wäre mit den Templates (zigbee2mqtt_human_body_movement occupancy+zigbee2mqtt_human_body_movement_illuminance) occupancy zusätzlich in state darzustellen ?

Beta-User

Prinzipiell spricht "nur" dagegen, dass man a) eine Doppelung hat und b) dazu ein userReading setzen müßte, wenn man nicht schlicht statt "occupancy" "state" als Reading füllen würde (was via jsonMap ja ginge).

Tendenziell würde ich es lassen, wie es ist, und lieber im Wiki ((unfunktionaler, aber richtiger) link kann nach comment?) darstellen, wie man z.B. ein userReadings dafür baut, um dann in "state" ein ("FHEM-typisches"?!?) "motion" bzw. "nomotion" zu basteln...
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