[gelöst]MQTT MultiDevice on-for-timer

Begonnen von matze1999, 19 Mai 2023, 18:40:05

Vorheriges Thema - Nächstes Thema

matze1999

Hallo,

ich habe folgendes MQTT Device:

defmod MQTT2_DVES_FFF554 MQTT2_DEVICE DVES_FFF554
attr MQTT2_DVES_FFF554 alias Vent1bis4
attr MQTT2_DVES_FFF554 autocreate 1
attr MQTT2_DVES_FFF554 comment NOTE: For on-for-timer SetExtensions are used. You may add on-for-timer option running on the device. The following is limited to 1h max duration, but will not affect future simple "on" commands:<br>on-for-timer {my $duration = $EVTPART1*10;; 'cmnd/cmnd/tasmota_FFF554/Backlog POWER1 1;; delay '.$duration.';; POWER1 0'}<br>See the "Praxisbeispiele" in the wiki for "pulseTime1" alternative option and it's restrictions.
attr MQTT2_DVES_FFF554 devStateIcon Online:10px-kreis-gruen Offline:10px-kreis-rot 1.on:on:POWER1+off 1.off:off:POWER1+on 2.on:on:POWER2+off 2.off:off:POWER2+on 3.on:on:POWER3+off 3.off:off:POWER3+on 4.on:on:POWER4+off 4.off:off:POWER4+on
attr MQTT2_DVES_FFF554 devStateStyle style="text-align:left;;font-weight:bold;;"
attr MQTT2_DVES_FFF554 genericDeviceType switch
attr MQTT2_DVES_FFF554 icon hue_filled_outlet
attr MQTT2_DVES_FFF554 jsonMap POWER1:0 POWER2:0 POWER3:0 POWER4:0 Dimmer:0 Channel_0:0 Channel_1:0 Channel_2:0 Channel_3:0 Channel_4:0 Channel_5:0 HSBColor:0 Color:0
attr MQTT2_DVES_FFF554 model tasmota_4ch_unified_icon
attr MQTT2_DVES_FFF554 readingList tele/tasmota_FFF554/LWT:.* LWT\
  tele/tasmota_FFF554/STATE:.* { json2nameValue($EVENT,'',$JSONMAP) }\
  tele/tasmota_FFF554/SENSOR:.* { json2nameValue($EVENT,'',$JSONMAP) }\
  tele/tasmota_FFF554/INFO.:.* { $EVENT =~ m,^..Info[1-3]..(.+).$, ?  json2nameValue($1,'',$JSONMAP) : json2nameValue($EVENT,'',$JSONMAP) }\
  stat/tasmota_FFF554/RESULT:.* { json2nameValue($EVENT,'',$JSONMAP) }\
  tele/tasmota_FFF554/UPTIME:.* { json2nameValue($EVENT,'',$JSONMAP) }\
  stat/tasmota_FFF554/POWER1:.* POWER1\
  stat/tasmota_FFF554/POWER2:.* POWER2\
  stat/tasmota_FFF554/POWER3:.* POWER3\
  stat/tasmota_FFF554/POWER4:.* POWER4\
DVES_FFF554:tasmota/discovery/A848FAFFF554/config:.* { json2nameValue($EVENT) }\
DVES_FFF554:tasmota/discovery/A848FAFFF554/sensors:.* { json2nameValue($EVENT) }\
DVES_FFF554:stat/tasmota_FFF554/UPGRADE:.* { json2nameValue($EVENT) }
attr MQTT2_DVES_FFF554 room Bewässerung,MQTT2_DEVICE
attr MQTT2_DVES_FFF554 setList POWER1:on,off,toggle cmnd/tasmota_FFF554/POWER1 $EVTPART1\
  POWER2:on,off,toggle cmnd/tasmota_FFF554/POWER2 $EVTPART1\
  POWER3:on,off,toggle cmnd/tasmota_FFF554/POWER3 $EVTPART1\
  POWER4:on,off,toggle cmnd/tasmota_FFF554/POWER4 $EVTPART1
attr MQTT2_DVES_FFF554 setStateList on off toggle
attr MQTT2_DVES_FFF554 stateFormat LWT\
1:POWER1\
2:POWER2\
3:POWER3\
4:POWER4
attr MQTT2_DVES_FFF554 webCmd POWER1:POWER2:POWER3:POWER4

Ich benötige dafür on-for-timer

Es steht im comment:

You may add on-for-timer option running on the device. The following is limited to 1h max duration, but will not affect future simple "on" commands:<br>on-for-timer {my $duration = $EVTPART1*10;; 'cmnd/cmnd/tasmota_FFF554/Backlog POWER1 1;; delay '.$duration.';; POWER1 0'}<br>See the "Praxisbeispiele" in the wiki for "pulseTime1" alternative option and it's restrictions.
Damit kann man aber nur für einen Teil POWERX on-for-timer und auch nur für eine Stunde erstellen.

Eine andere Variante beschreibt useSetExtensions 1 zu setzen, dieses Attribut gibt es aber beim o.g. Device nicht.

Kann ich für dieses Device on-for-timer, möglichst für mehr als eine Stunde kinfigureiren, oder muss ich das Device "teilen"?

matze1999

matze1999

vergessen:

ich hatte das schon angelegt:

on-for-timer1 {my $duration = $EVTPART1*10;; 'cmnd/cmnd/tasmota_FFF554/Backlog POWER1 1;; delay '.$duration.';; POWER1 0'}\
on-for-timer2 {my $duration = $EVTPART1*10;; 'cmnd/cmnd/tasmota_FFF554/Backlog POWER2 1;; delay '.$duration.';; POWER2 0'}\
on-for-timer3 {my $duration = $EVTPART1*10;; 'cmnd/cmnd/tasmota_FFF554/Backlog POWER3 1;; delay '.$duration.';; POWER3 0'}\
on-for-timer4 {my $duration = $EVTPART1*10;; 'cmnd/cmnd/tasmota_FFF554/Backlog POWER4 1;; delay '.$duration.';; POWER4 0'}

Aber da gibt es die 1 Stunde Restriktion.

matze1999

rudolfkoenig

Das FHEM Framework bietet mit SetExtensions das an, allerdings nur dann, wenn das Gerät on und off kennt.
Das funktioniert nur dann, wenn man so ein "MultiDevice" in einzelne aufteilt (splittet), einer der Gründe warum ich das praeferiere.

Alternativ muss man selbst was basteln, was mAn am Ende auch nicht schöner ist.

matze1999

ok, wie vermutet, separate Devices anlegen hilft..

Danke

matze1999