mqtt2.template: Contributing

Begonnen von Beta-User, 15 Dezember 2018, 11:45:40

Vorheriges Thema - Nächstes Thema

SamNitro

#195
Zitat von: Beta-User link=topic=code][/code]94495.msg1234300#msg1234300 date=1662734436]
Eigentlich ist das der falsche Thread, siehe den ersten Beitrag hier und die Links dort.

Sorry dafür.

Aber mit dem neuen Topic funktioniert es.
Danke

Edit: Doch leider nicht.


2022.09.09 17:10:22 1: PERL WARNING: Use of uninitialized value in lc at (eval 230682) line 1.
2022.09.09 17:10:22 3: eval: my $CID=   $evalSpecials->{'%CID'};my $DEVICETOPIC=   $evalSpecials->{'%DEVICETOPIC'};my $EVENT=   $evalSpecials->{'%EVENT'};my $EVTPART0=   $evalSpecials->{'%EVTPART0'};my $JSONMAP=   $evalSpecials->{'%JSONMAP'};my $NAME=   $evalSpecials->{'%NAME'};my $TOPIC=   $evalSpecials->{'%TOPIC'};{ my $ret=json2nameValue($EVENT,'',$JSONMAP);; $ret->{state}=lc($ret->{state});; return $ret }

(Intel-Nuc Proxmox) (Homematic) (EnOcean) (CUL868) (CUL433) (Zigbee2MQTT) (ESP8266) (Echo) (DUOFERN)

laberlaib

Zitat von: MiKn am 13 November 2021, 00:01:42
Hallo,
ich habe ein paar "Moes 3 Channel Schalter" und das zigbee2mqtt_3channel_split Template benutzt. Um es korrekt nutzen zu können musste ich etwas ergänzen, welches ich mir beim 2 Kanal schalter abgeguckt habe. Bei Bedarf bitte gerne im Git anpassen. Danke

For zigbee2mqtt 3 channel device like Silvercrest Steckerleiste »Zigbee Smart Home«.
NOTE: Two additional devices will be created for further channels.
NOTE: Untested updated version

attr DEVICE icon ICON
attr DEVICE eventMap { dev=>{ON=>'on',OFF=>'off'} }
attr DEVICE devicetopic BASE_TOPIC/DEV_ID
attr DEVICE readingList $\DEVICETOPIC:.* { json2nameValue($EVENT,'',$JSONMAP) }
attr DEVICE jsonMap state:availability state_l1:state state_l2:0 state_l3:0
attr DEVICE setList \
  on:noArg $\DEVICETOPIC/1/set {"state_l1":"ON"}\
  off:noArg $\DEVICETOPIC/1/set {"state_l1":"OFF"}\
  toggle:noArg $\DEVICETOPIC/1/set {"state_l1":"TOGGLE"}
attr DEVICE setStateList on off toggle
deletereading -q DEVICE (?!associatedWith|IODev).*
set DEVICE attrTemplate set_associatedWith \CHANNELS=3 \MAKECOPIES=1
attr DEVICE_CH2 setList \
  on:noArg $\DEVICETOPIC/2/set {"state_l2":"ON"}\
  off:noArg $\DEVICETOPIC/2/set {"state_l2":"OFF"}\
  toggle:noArg $\DEVICETOPIC/2/set {"state_l2":"TOGGLE"}
attr DEVICE_CH2 jsonMap state_l2:state state_l1:0 state_l3:0 state:0 consumption:0 linkquality:0 power:0 temperature:0
attr DEVICE_CH3 setList \
  on:noArg $\DEVICETOPIC/3/set {"state_l3":"ON"}\
  off:noArg $\DEVICETOPIC/3/set {"state_l3":"OFF"}\
  toggle:noArg $\DEVICETOPIC/3/set {"state_l3":"TOGGLE"}
attr DEVICE_CH2 jsonMap state_l3:state state_l1:0 state_l2:0 state:0 consumption:0 linkquality:0 power:0 temperature:0
set DEVICE,DEVICE_CH2,DEVICE_CH3 attrTemplate speechcontrol_type_switch
attr DEVICE,DEVICE_CH2,DEVICE_CH3 model zigbee2mqtt_3channel_split
setreading DEVICE,DEVICE_CH2,DEVICE_CH3 attrTemplateVersion 20211030


ändern in:
  on:noArg $\DEVICETOPIC/l2/set {"state_l2":"ON"}\
  off:noArg $\DEVICETOPIC/l2/set {"state_l2":"OFF"}\
  toggle:noArg $\DEVICETOPIC/l2/set {"state_l2":"TOGGLE"}
.....
  on:noArg $\DEVICETOPIC/l3/set {"state_l3":"ON"}\
  off:noArg $\DEVICETOPIC/l3/set {"state_l3":"OFF"}\
  toggle:noArg $\DEVICETOPIC/l3/set {"state_l3":"TOGGLE"}
[/code]

Das "l" fehlte bei state_l2 und l3.

Ich habe daraus einen 5er-Split gebaut (getestet):
!Ich musste danach FHEM neu starten, damit die Dinger schalten; davor konnte nur das original Device schalten. Jetzt klappts.

# zigbee2mqtt 5 channel device
name:zigbee2mqtt_5channel_split
filter:TYPE=MQTT2_DEVICE:FILTER=CID~zigbee.*
desc:For zigbee2mqtt 5 channel device like UseeLink Steckerleiste SM-0306E-2W. <br>NOTE: Four additional devices will be created for further channels.<br>NOTE: Untested updated version
order:L_05g
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 message_socket;{ AttrVal('DEVICE','icon','message_socket') }
attr DEVICE icon ICON
attr DEVICE devicetopic BASE_TOPIC/DEV_ID
attr DEVICE readingList $\DEVICETOPIC:.* { my $ret=json2nameValue($EVENT,'',$JSONMAP); $ret->{state}=lc($ret->{state}); return $ret }
attr DEVICE jsonMap state:availability state_l1:state state_l2:0 state_l3:0 state_l4:0 state_l5:0
attr DEVICE setList \
  on:noArg $\DEVICETOPIC/set {"state_l1":"ON"}\
  off:noArg $\DEVICETOPIC/set {"state_l1":"OFF"}\
  toggle:noArg $\DEVICETOPIC/set {"state_l1":"TOGGLE"}
attr DEVICE setStateList on off toggle
deletereading -q DEVICE (?!associatedWith|IODev).*
set DEVICE attrTemplate set_associatedWith \CHANNELS=5 \MAKECOPIES=1
loop:#:2:3:4:5
defmod DEVICE_CH# MQTT2_\DEVICE
attr DEVICE_CH# setList \
  on:noArg $\DEVICETOPIC/set {"state_l#":"ON"}\
  off:noArg $\DEVICETOPIC/set {"state_l#":"OFF"}\
  toggle:noArg $\DEVICETOPIC/set {"state_l#":"TOGGLE"}
loop:END
attr DEVICE_CH2 jsonMap state_l2:state state_l1:0 state_l3:0 state_l4:0 state_l5:0 state:0
attr DEVICE_CH3 jsonMap state_l3:state state_l1:0 state_l2:0 state_l4:0 state_l5:0 state:0
attr DEVICE_CH4 jsonMap state_l4:state state_l1:0 state_l2:0 state_l3:0 state_l5:0 state:0
attr DEVICE_CH5 jsonMap state_l5:state state_l1:0 state_l2:0 state_l3:0 state_l4:0 state:0
set DEVICE,DEVICE_CH2,DEVICE_CH3,DEVICE_CH4,DEVICE_CH5 attrTemplate speechcontrol_type_switch
attr DEVICE,DEVICE_CH2,DEVICE_CH3,DEVICE_CH4,DEVICE_CH5 model zigbee2mqtt_5channel_split
setreading DEVICE,DEVICE_CH2,DEVICE_CH3,DEVICE_CH4,DEVICE_CH5 attrTemplateVersion 20221007

Für z.B. das hier:
https://smile.amazon.de/UseeLink-Steckdosenleiste-erforderlich-Einzelschalter-USB-Verl%C3%A4ngerungskabel-Wei%C3%9F/dp/B093HG7LTB/
Funktioniert mit zigbee2mqtt (evtl. vorher updaten); USB schaltbar; leider keine Schalter an der Leiste selbst.
Endlich die ganzen Zwischenstecker weg.
--
Proxmox, Homematic, G-Tags, Zigbee2MQTT, Rhasspy Sprachsteuerung im Aufbau (beta)

drhirn

Ich hätte da ein Template für den Aqara Curtain Driver E1


Index: mqtt2.template
===================================================================
--- mqtt2.template (revision 26604)
+++ mqtt2.template (working copy)
@@ -912,6 +912,28 @@
attr DEVICE model zigbee2mqtt_aqara_cube
setreading DEVICE attrTemplateVersion 20210226

+# Aqara Curtain Driver E1
+name:zigbee2mqtt_aqara_curtain_driver
+desc:Aqara curtain driver E1 via zigbee2mqtt.<br>Tested with: <a href="https://www.zigbee2mqtt.io/devices/ZNCLBL01LM.html">ZNCLBL01LM</a>.
+filter:TYPE=MQTT2_DEVICE:FILTER=CID~zigbee.*
+order:L_18
+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 devicetopic BASE_TOPIC/DEV_ID
+attr DEVICE readingList $\DEVICETOPIC/availability:.* availability\
+  $\DEVICETOPIC:.* { json2nameValue($EVENT) }
+attr DEVICE event-on-change-reading .*
+attr DEVICE setList open:noArg $\DEVICETOPIC/set {"state": "OPEN"}\
+  close:noArg $\DEVICETOPIC/set {"state": "CLOSE"}\
+  stop:noArg $\DEVICETOPIC/set {"state": "STOP"}\
+  position:slider,0,1,100 $\DEVICETOPIC/set {"position": "$EVTPART1"}
+attr DEVICE stateFormat position
+attr DEVICE devStateIcon 0:fts_shutter_100 (\d|1\d):fts_shutter_90 2\d:fts_shutter_80 3\d:fts_shutter_70 4\d:fts_shutter_60 5\d:fts_shutter_50 6\d:fts_shutter_40 7\d:fts_shutter:30 8\d:fts_shutter_20 9\d:fts_shutter_10 100:fts_window_2w
+attr DEVICE webCmd open:close:stop
+deletereading -q DEVICE (?!associatedWith|IODev).*
+attr DEVICE model zigbee2mqtt_aqara_curtain_driver
+setreading DEVICE attrTemplateVersion 20221028
+
#source post: https://forum.fhem.de/index.php/topic,94494.msg983905.html#msg983905
name:zigbee2mqtt_AlarmSensor
desc: Alarm  sensor via zigbee2mqtt <br>Can report actions drop, tilt or vibration as well as x,y,z coordinates of its movement.<br>Sensitivity can be set to low, medium or high.<br>Tested with: Xiaomi DJT11LM Vibration Sensor

Beta-User

THX. Hab's etwas verändert eingecheckt.
Vielleicht sollte man die Namen der beiden "Brüder" überdenken, es gab schon ein "blind"-template, das sehr ähnlich ist, bis auf die Option, die Laufgeschwindigkeit einzustellen.
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

drhirn

Klar. Warum nicht. Spart ein paar Zeilen Code.

drhirn

Zeile 698 hat sich leider ein Fehler eingeschlichen:
$\DEVICETOPIC:.* { json2nameValue($EVENT,'',$JSONMAP)) }
Das ist eine schließende Klammer zu viel

JJ_Pamoux

Ich habe einen Neo AB02B2 "Alarm-Gong" https://www.zigbee2mqtt.io/devices/NAS-AB02B2.html angebunden.

Habe dafür folgendes Template genutzt:

# NEO AB02B2 Alarm Sound
name:zigbee2mqtt_alarm_sound
desc: Alarm sound controller via zigbee2mqtt <br>Tested with: Tuya Neo NAS-AB02B2 sound device
filter:TYPE=MQTT2_DEVICE:FILTER=CID~zigbee.*
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 it_remote;{ AttrVal("DEVICE","icon","audio_volume_mid") }
attr DEVICE icon ICON
attr DEVICE devicetopic BASE_TOPIC/DEV_ID
attr DEVICE stateFormat Alarm: alarm  Volume: volume  Duration: duration  Melody: melody  Batterie: battpercentage %  Linkquality: linkquality
attr DEVICE readingList $\DEVICETOPIC:.* { json2nameValue($EVENT) }
attr DEVICE setList \
  alarm:true,false $\DEVICETOPIC/set {"alarm": "$EVTPART1"}\
  volume:low,medium,high $\DEVICETOPIC/set {"volume": "$EVTPART1"}\
  duration:slider,0,1,1800 $\DEVICETOPIC/set {"duration": "$EVTPART1"}\
  melody:1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18 $\DEVICETOPIC/set {"melody": "$EVTPART1"}
attr DEVICE model zigbee2mqtt_alarm_sound
deletereading -q DEVICE (?!associatedWith|IODev).*
setreading DEVICE attrTemplateVersion 20200904


Wenigstens noch kurz die Warnung, dass das Gerät wohl nicht immer zuverlässig ist: https://github.com/Koenkk/zigbee2mqtt/issues/12542

Beta-User

THX, hab's eingecheckt.

(Das andere mit der Klammer ist schon länger gefixt)
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

tpm88

Hallo,

ich habe für die Hoymiles Wechselrichter analog zu den zwei vorhandenen Templates für AhoyDTU zwei Templates für das Schwesterprojekt OpenDTU ( https://github.com/tbnobody/OpenDTU erstellt.

OpenDTU Hub Bridge:
name:hoymiles_opendtu_hub_bridge
filter:TYPE=MQTT2_DEVICE
desc:Early version! Use this with "openDTU" firmware for ESP8266+nRF24L01+. For further details visit  https://github.com/tbnobody/OpenDTU and https://www.mikrocontroller.net/topic/525778. Resulting <b>device represents the interfacing ESP-MCU</b>, all inverters will be forwarded into own MQTT2_DEVICE instances.
order:W_06
farewell:template has been applied successfully. <br>Note: In case you use an external MQTT server or not exclusively use FHEM to send MQTT commands to your devices, it's highly recommended to extend the ignoreRegexp of your IO device! Could be something like <i>|devcontrol/[0-8]+/[0-8]+</i>. For the single microinverters, please be patient, until the Readings concerning the AC will have been sent in.
par:BASE_ID;Base topic as set in OpenDTU MQTT settings;{ AttrVal('DEVICE','readingList','') =~ m,([^:]+)/([^:]+)/name:, ? $1 : undef }
par:ICON;ICON as set, defaults to solar;{ AttrVal('DEVICE','icon','solar') }
par:BR_REG_NAME;Bridge RegEx Name for target inverter device;{ my $r1 = AttrVal('DEVICE','readingList','') =~ m,([^:]+)/([^:]+)/name:, ? $1 : "xxx";; my $r2 = AttrVal('DEVICE','readingList','') =~ m,([^:]+)/([^:]+)/name:, ? $2 : "yyy";; my $rn = $r1 . "_" . $r2 ."_name";; return ReadingsVal('DEVICE',"$rn",undef) }
attr DEVICE icon ICON
#attr DEVICE bridgeRegexp BASE_ID/[0-9]+/.*/.*:.* "BASE_ID_$1"
attr DEVICE bridgeRegexp BASE_ID/[0-9]+/.*/.*:.* "BR_REG_NAME"
attr DEVICE autocreate 1
attr DEVICE readingList BASE_ID/dtu/uptime:.* uptime\
  BASE_ID/dtu/status:.* status\
  BASE_ID/dtu/ip:.* ip\
  BASE_ID/dtu/rssi:.' rssi\
  BASE_ID/dtu/hostname:.* hostname
attr DEVICE setStateList on off
attr DEVICE model hoymiles_opendtu_hub_bridge
setreading DEVICE attrTemplateVersion 20221203
{ AttrTemplate_Initialize() }


Beim bridgeRegexp Attribut verstehe ich in der AhoyDTU Vorlage nicht vollständig, was $1 referenziert. Mag sein, daß die Ermittlung des Target Device Namens für die Inverter MQTT Devices bei meiner Fassung etwas umständlich ist...

OpenDTU microinverter device template:
name:hoymiles_opendtu_microinverter
prereq:{my @devices=devspec2array('model=hoymiles_opendtu_hub_bridge');return 1 if $devices[0];return 0}
filter:TYPE=MQTT2_DEVICE:FILTER=readingList=.*/0/voltage:.*
desc:Early version, device represents a single microinverter. Use this with "opendtu" firmware for ESP8266+nRF24L01+. Wait some time until the target device got <b>readings for channel 0</b> (AC part, refreshing your browser window may help to get them visible)!
order:W_061
par:INVERTERLONG_ID;INVERTERLONG_ID Serieal Id of inverter as set in webinterface;{ AttrVal('DEVICE','readingList','') =~ m,^\s*([^:]+/[^/]+)/0/voltage:,m ? $1 : undef }
par:RADIO_SINGLE;inverter has just one channel;{ undef }
par:RADIO_DOUBLE;inverter has two channels;{ undef }
par:RADIO_QUATTRO;inverter has four channels;{ undef }
par:ICON;ICON as set, defaults to solar;{ AttrVal('DEVICE','icon','solar') }
attr DEVICE icon ICON
deletereading -q DEVICE .*_.*
option:{ RADIO_SINGLE }
attr DEVICE readingList \
  INVERTERLONG_ID/0/powerdc:.* powerdc\
  INVERTERLONG_ID/0/yieldday:.* {}\
  INVERTERLONG_ID/0/yieldtotal:.* {}\
  INVERTERLONG_ID/0/voltage:.* voltage\
  INVERTERLONG_ID/0/current:.* current\
  INVERTERLONG_ID/0/power:.* power\
  INVERTERLONG_ID/0/frequency:.* frequency\
  INVERTERLONG_ID/0/temperature:.* temperature\
  INVERTERLONG_ID/0/powerfactor:.* powerfactor\
  INVERTERLONG_ID/0/efficiency:.* efficiency\
  INVERTERLONG_ID/0/reactivepower:.* reactivepower\
  INVERTERLONG_ID/1/voltage:.* voltage1\
  INVERTERLONG_ID/1/current:.* current1\
  INVERTERLONG_ID/1/power:.* power1\
  INVERTERLONG_ID/1/irradiation:.* irradiation1\
  INVERTERLONG_ID/1/yieldday:.* yieldday\
  INVERTERLONG_ID/1/yieldtotal:.* yieldtotal
option:{ RADIO_DOUBLE }
attr DEVICE readingList \
  INVERTERLONG_ID/0/powerdc:.* powerdc\
  INVERTERLONG_ID/0/yieldday:.* yieldday\
  INVERTERLONG_ID/0/yieldtotal:.* yieldtotal\
  INVERTERLONG_ID/0/voltage:.* voltage\
  INVERTERLONG_ID/0/current:.* current\
  INVERTERLONG_ID/0/power:.* power\
  INVERTERLONG_ID/0/frequency:.* frequency\
  INVERTERLONG_ID/0/temperature:.* temperature\
  INVERTERLONG_ID/0/powerfactor:.* powerfactor\
  INVERTERLONG_ID/0/efficiency:.* efficiency\
  INVERTERLONG_ID/0/reactivepower:.* reactivepower\
  INVERTERLONG_ID/1/voltage:.* voltage1\
  INVERTERLONG_ID/1/current:.* current1\
  INVERTERLONG_ID/1/power:.* power1\
  INVERTERLONG_ID/1/irradiation:.* irradiation1\
  INVERTERLONG_ID/1/yieldday:.* yieldday1\
  INVERTERLONG_ID/1/yieldtotal:.* yieldtotal1\
  INVERTERLONG_ID/2/voltage:.* voltage2\
  INVERTERLONG_ID/2/current:.* current2\
  INVERTERLONG_ID/2/power:.* power2\
  INVERTERLONG_ID/2/irradiation:.* irradiation2\
  INVERTERLONG_ID/2/yieldday:.* yieldday2\
  INVERTERLONG_ID/2/yieldtotal:.* yieldtotal2
option:{ RADIO_QUATTRO }
attr DEVICE readingList \
  INVERTERLONG_ID/0/powerdc:.* powerdc\
  INVERTERLONG_ID/0/yieldday:.* yieldday\
  INVERTERLONG_ID/0/yieldtotal:.* yieldtotal\
  INVERTERLONG_ID/0/voltage:.* voltage\
  INVERTERLONG_ID/0/current:.* current\
  INVERTERLONG_ID/0/power:.* power\
  INVERTERLONG_ID/0/frequency:.* frequency\
  INVERTERLONG_ID/0/temperature:.* temperature\
  INVERTERLONG_ID/0/powerfactor:.* powerfactor\
  INVERTERLONG_ID/0/efficiency:.* efficiency\
  INVERTERLONG_ID/0/reactivepower:.* reactivepower\
  INVERTERLONG_ID/1/voltage:.* voltage1\
  INVERTERLONG_ID/1/current:.* current1\
  INVERTERLONG_ID/1/power:.* power1\
  INVERTERLONG_ID/1/irradiation:.* irradiation1\
  INVERTERLONG_ID/1/yieldday:.* yieldday1\
  INVERTERLONG_ID/2/yieldtotal:.* yieldtotal2\
  INVERTERLONG_ID/3/voltage:.* voltage3\
  INVERTERLONG_ID/3/current:.* current3\
  INVERTERLONG_ID/3/power:.* power3\
  INVERTERLONG_ID/3/irradiation:.* irradiation3\
  INVERTERLONG_ID/3/yieldday:.* yieldday3\
  INVERTERLONG_ID/3/yieldtotal:.* yieldtotal3\
  INVERTERLONG_ID/4/voltage:.* voltage4\
  INVERTERLONG_ID/4/current:.* current4\
  INVERTERLONG_ID/4/power:.* power4\
  INVERTERLONG_ID/4/irradiation:.* irradiation4\
  INVERTERLONG_ID/4/yieldday:.* yieldday4\
  INVERTERLONG_ID/4/yieldtotal:.* yieldtotal4
option:global
attr DEVICE setList \
  on:noArg INVERTERLONG_ID/cmd/power 1\
  off:noArg INVERTERLONG_ID/cmd/power 0\
  reboot:noArg INVERTERLONG_ID/cmd/restart 1\
  limit_non_persistent_abs INVERTERLONG_ID/cmd/limit_persistent_absolute $EVTPART1\
  limit_non_persistent_pct:slider,2,1,100 INVERTERLONG_ID/cmd/limit_persistent_relative $EVTPART1\
  limit_persistent_abs INVERTERLONG_ID/cmd/limit_nonpersistent_absolute $EVTPART1\
  limit_persistent_pct:slider,2,1,100 INVERTERLONG_ID/cmd/limit_nonpersistent_relative $EVTPART1
attr DEVICE setStateList on off
attr DEVICE model hoymiles_opendtu_microinverter
setreading DEVICE attrTemplateVersion 20221204


Getestet habe ich nur die Version für den Hoymiles 600 mit zwei Eingängen.

Ich bitte um ein Review, bei Bedarf kann ich auch ein passendes Log vor Anwendung der Templates liefern.

Gruß, Tobias
Test FHEM Server on RPi, CUL_HM
Prod FHEM Server on Odroid HC1, HM-USB, JeeLink
Devices: diverse HM, IT1500, 1wire, LaCrosse, MQTT

Beta-User

Moin,

da ich zwischenzeitlich auch mit openDTU rumteste (hoffentlich ab Jan. dann 6xMI-1500 3.Gen) habe ich deinen Vorschlag noch etwas modifiziert und eingecheckt (kommt mit dem morgigen update).
Allerdings kommt mir die Art und Weise noch etwas verbesserungsfähig vor, was da wann wie gesendet wird (Name alle 5 Sekunden? Kein JSON?). Werde das mal bei Gelegenheit addressieren...
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

barneybaer

#205
Hallöchen,
ich habe mir mal über Aliexpress den Xiaomi Aqara presence detector FP1 bestellt, da ich einige meiner Bewegungsmelder ablösen wollte. Leider benötigt das Gerät auch Sichtkontakt, was in Räumen mit einigen Ecken z.B. Schornsteinen etwas schlecht ist. Jedoch muss man sich, wenn das Gerät in der richtigen Position ist, nicht mehr bewegen und nen Hampelmann machen. Er erkennt einen auch liegend in der Badewanne.
Dazu hier mal mein Patch.


--- mqtt2.template 2023-01-11 16:38:23.000000000 +0100
+++ mqtt2.template_neu 2023-01-11 16:28:54.000000000 +0100
@@ -787,6 +787,25 @@
attr DEVICE model zigbee2mqtt_human_body_movement_illuminance
setreading DEVICE attrTemplateVersion 20201208

+name:zigbee2mqtt_human_body_presence_detector
+desc: Human body presence detector via zigbee2mqtt <br>Tested with: Xiaomi Aqara RTCZCGQ11LM Presence Detector FP1
+filter:TYPE=MQTT2_DEVICE:FILTER=CID~zigbee.*
+order:L_08b
+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 stateFormat Motion: presence
+attr DEVICE readingList $\DEVICETOPIC:.* { json2nameValue($EVENT,'',$JSONMAP) }
+attr DEVICE setList  \
+  mode:undirected,left_right $\DEVICETOPIC/set {"monitoring_mode":"$EVTPART1"}\
+  distance:far,medium,near $\DEVICETOPIC/set {"approach_distance":"$EVTPART1"}\
+  sensitivity:low,medium,high $\DEVICETOPIC/set {"motion_sensitivity":"$EVTPART1"}
+attr DEVICE model zigbee2mqtt_human_body_presence_detector
+setreading DEVICE attrTemplateVersion 20230111
+
name:zigbee2mqtt_Light_Intensity_Sensor
desc: Light Intensity Sensor via zigbee2mqtt <br>Tested with: Xiaomi MiJia light intensity sensor GZCGQ01LM
filter:TYPE=MQTT2_DEVICE:FILTER=CID~zigbee.*


List:

READINGS:
     2023-01-11 16:30:24   IODev           MQTT2_FHEM_Server
     2023-01-11 19:35:13   approach_distance far
     2023-01-10 10:31:00   associatedWith  MQTT2_zigbee_bridge
     2023-01-11 16:30:34   attrTemplateVersion 20230111
     2023-01-11 19:35:13   device_temperature 23
     2023-01-11 19:35:13   last_seen       2023-01-11T19:35:13+01:00
     2023-01-11 19:35:13   linkquality     255
     2023-01-11 19:35:13   monitoring_mode left_right
     2023-01-11 19:35:13   motion_sensitivity high
     2023-01-11 19:35:13   power_outage_count 3
     2023-01-11 19:35:13   presence        true
     2023-01-11 19:35:13   presence_event  approach
     2023-01-11 16:31:25   state           sensitivity
     2023-01-11 19:35:13   update_available false
     2023-01-11 19:35:13   update_installed_version 54
     2023-01-11 19:35:13   update_latest_version 54
     2023-01-11 19:35:13   update_state    idle

Beta-User

Danke, hab's eingecheckt.

Bin irgendwie am Rätseln, ob es nicht an der Zeit wäre, diese "true/false"-Readinginhalte in present/absent oä. umzuwandeln (das gilt ähnlich auch für die motion-Sensoren), aber wenn sich sonst niemand an sowas "stört", sehe ich da wenig Handlungsdruck ::) .
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

Zitat... sehe ich da wenig Handlungsdruck ::)

jetzt schon  ::), nach dem Hieb, du verteilst doch die Templates, Handlungsdruck hast du dir doch jetzt mit der Aussage selbst aufgebürdet, wenn du die Templates so wie sie jetzt sind nicht selbst nutzt.




OT

ZitatLeider benötigt das Gerät auch Sichtkontakt, was in Räumen mit einigen Ecken z.B. Schornsteinen etwas schlecht ist.

In dem Teil ist doch ein LD2410 verbaut oder lieg ich falsch ?

Auch wenn das die Firmware eines Xiaomi Aqara presence detector FP1 vermutlich nicht hergibt, ich sag man kann grundsätzlich die Sensivität des Sensors so einstellen/programmieren das er auch in den Ecken/an den Schornsteinen in 6-7 Meter Entfernung auf nur die Atmung (ohne Bewegung) reagiert.

Beta-User

Zitat von: TomLee am 11 Januar 2023, 22:14:51
jetzt schon  ::) , nach dem Hieb, du verteilst doch die Templates, Handlungsdruck hast du dir doch jetzt mit der Aussage selbst aufgebürdet, wenn du die Templates so wie sie jetzt sind nicht selbst nutzt.
Sehe ich anders. Ich "kuratiere" die Dinger und bin gerne bereit, Anregungen zur Verbesserung zu geben und das dann wieder zu "verwursten" etc.. Aber wenn alle User mit dem "glücklich und zufrieden" sind, wie es ist, soll mir das recht sein.

Den Job, ggf. mal zu schauen, ob es nicht im Interesse von vielen Usern wäre, die zigbee2mqtt-Templates zu überarbeiten (im Hinblick auf das, was wir seit dieser "ersten Generation" so alles an Neuerungen und Lösungsansätzen gesammelt haben), den ziehe ich mir nicht rein...

Bitte dann aber wieder beim Prinzip bleiben, dass das hier einfach der "fertige Templates"-Thread ist! Anmerkungen zu meiner Meinung wären bitte im zigbee2mqtt-attrTemplate-Thread ("läuft") zu machen.
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

chefschaffner

Hallo,

ich habe mir einen Temperatursensor mit Messsonde zugelegt: https://www.domadoo.fr/fr/peripheriques/5998-owon-sonde-de-temperature-deportee-sur-cable-zigbee.html
Hier das passende Template (ist mit geringen Änderungen aus zigbee2mqtt_TempHumSensor entstanden)
Vielleicht hilfreich für den einen oder anderen.


--- mqtt2.template_alt 2023-01-26 15:09:44.839717956 +0100
+++ mqtt2.template 2023-01-26 15:12:15.394743350 +0100
@@ -755,6 +755,21 @@
attr DEVICE model zigbee2mqtt_TempHumSensor
setreading DEVICE attrTemplateVersion 20200904

+name:zigbee2mqtt_TempSensor
+desc: Temp sensor via zigbee2mqtt <br>Tested with: OWON THS317-ET Temperature Sensor
+filter:TYPE=MQTT2_DEVICE:FILTER=CID~zigbee.*
+order:L_07b
+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 temp_temperature;{ AttrVal("DEVICE","icon","temp_temperature") }
+attr DEVICE icon ICON
+attr DEVICE stateFormat {sprintf ("Temperature: %.1f°C", ReadingsVal($name,"temperature",0)) }
+attr DEVICE devicetopic BASE_TOPIC/DEV_ID
+attr DEVICE readingList $\DEVICETOPIC:.* { json2nameValue($EVENT,'',$JSONMAP) }
+deletereading -q DEVICE (?!associatedWith|IODev).*
+attr DEVICE model zigbee2mqtt_TempSensor
+setreading DEVICE attrTemplateVersion 20220126
+
#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)

Docker: fhem & zigbee2mqtt / RaspiMatic / Elero / Fritz!Dect