Hallo,
ich habe ein einfaches DOIF, das ich zur Pumpenansteuerung einer Entwässerungspumpe verwenden möchte. Im Außenbereich ist ein Shelly1 installiert, der als Detached Switch konfiguriert ist. An seinem Ein/Ausgang ist ein Wasserstandssensor angeschlossen und er soll, deswegen Detached Switch, den Zustand des Sensors (1 oder 0) über MQTT an FHEM senden ohne selber zu schalten. Hintergrund: Die Pumpe darf max. 15 Minuten laufen und benötigt dann 15 Min. Pause. Das kann über die Konfiguration des Shelly nicht eingestellt werden.
Problem: Ich bekomme zwar alle 30 sec. ein Statusupdate über MQTT, das DOIF schaltet aber die Pumpoe nicht ein. Ich vermute ein Zusammenspiel zwischen den zyklischen Events, on-for-timer und cmdpause.
Das List des DOIF:
Internals:
DEF ([MQTT2_shelly1_E8DB84D245AD:input0] == 1 and [?MQTT2_shelly1_E8DB84D245AD] eq "off") (set MQTT2_shelly1_E8DB84D245AD on-for-timer 300)
FUUID 60cf0efb-f33f-6b6f-ba64-36f56b9236fa740e
MODEL FHEM
NAME di_Entwaesserungspumpe
NOTIFYDEV MQTT2_shelly1_E8DB84D245AD,global
NR 1874
NTFY_ORDER 50-di_Entwaesserungspumpe
STATE cmd_1
TYPE DOIF
VERSION 24595 2021-06-06 17:52:38
READINGS:
2021-06-29 08:06:00 Device MQTT2_shelly1_E8DB84D245AD
2021-06-29 07:57:23 cmd 1
2021-06-29 07:57:23 cmd_event MQTT2_shelly1_E8DB84D245AD
2021-06-29 07:57:23 cmd_nr 1
2021-06-29 08:06:00 e_MQTT2_shelly1_E8DB84D245AD_STATE off
2021-06-29 08:06:00 e_MQTT2_shelly1_E8DB84D245AD_input0 1
2021-06-23 08:44:48 mode enabled
2021-06-29 07:57:23 state cmd_1
Regex:
accu:
collect:
cond:
MQTT2_shelly1_E8DB84D245AD:
0:
input0 ^MQTT2_shelly1_E8DB84D245AD$:^input0:
attr:
cmdState:
cmdpause:
600
wait:
waitdel:
condition:
0 ::ReadingValDoIf($hash,'MQTT2_shelly1_E8DB84D245AD','input0') == 1 and ::InternalDoIf($hash,'MQTT2_shelly1_E8DB84D245AD','STATE') eq "off"
do:
0:
0 set MQTT2_shelly1_E8DB84D245AD on-for-timer 300
1:
helper:
DEVFILTER ^global$|^MQTT2_shelly1_E8DB84D245AD$
NOTIFYDEV global|MQTT2_shelly1_E8DB84D245AD
event input0: 1
globalinit 1
last_timer 0
sleeptimer -1
timerdev MQTT2_shelly1_E8DB84D245AD
timerevent input0: 1
triggerDev MQTT2_shelly1_E8DB84D245AD
timerevents:
input0: 1
timereventsState:
input0: 1
triggerEvents:
input0: 1
triggerEventsState:
input0: 1
internals:
all MQTT2_shelly1_E8DB84D245AD:STATE
perlblock:
readings:
all MQTT2_shelly1_E8DB84D245AD:input0
trigger:
uiState:
uiTable:
Attributes:
cmdpause 600
comment cmdpause: Zeitspanne seit letzter Zustandsänderung -> Wenn Pause == Laufzeit sein soll, muss bei cmdpause die doppelte Laufzeit eingegeben werden
do always
room 1.9_Garten,9.8.1_DOIF
Das List des Device:
Internals:
CID shelly1_E8DB84D245AD
DEF shelly1_E8DB84D245AD
DEVICETOPIC MQTT2_shelly1_E8DB84D245AD
FUUID 60b4995c-f33f-6b6f-7841-b87470d9c9cc59ac
IODev MQTT2_FHEM_Server
LASTInputDev MQTT2_FHEM_Server
MQTT2_FHEM_Server_MSGCNT 25745
MQTT2_FHEM_Server_TIME 2021-06-29 08:07:37
MSGCNT 25745
NAME MQTT2_shelly1_E8DB84D245AD
NR 1866
STATE off
TYPE MQTT2_DEVICE
READINGS:
2021-06-29 08:07:37 0_event L
2021-06-29 08:07:37 0_event_cnt 1
2021-06-24 21:11:05 IODev MQTT2_FHEM_Server
2021-05-31 10:12:24 attrTemplateVersion 20200831
2021-06-29 08:07:37 fw_ver 20210429-100340/v1.10.4-g3f94cd7
2021-06-29 08:07:37 id shelly1-E8DB84D245AD
2021-05-31 10:12:25 info_actions_stats_skipped 0
2021-05-31 10:12:25 info_cfg_changed_cnt 0
2021-05-31 10:12:25 info_cloud_connected false
2021-05-31 10:12:25 info_cloud_enabled false
2021-05-31 10:12:25 info_fs_free 150851
2021-05-31 10:12:25 info_fs_size 233681
2021-05-31 10:12:25 info_has_update false
2021-05-31 10:12:25 info_inputs_1_event
2021-05-31 10:12:25 info_inputs_1_event_cnt 0
2021-05-31 10:12:25 info_inputs_1_input 0
2021-05-31 10:12:25 info_mac E8DB84D245AD
2021-05-31 10:12:25 info_meters_1_is_valid true
2021-05-31 10:12:25 info_meters_1_power 0.00
2021-05-31 10:12:25 info_mqtt_connected true
2021-05-31 10:12:25 info_ping_check true
2021-05-31 10:12:25 info_ram_free 38112
2021-05-31 10:12:25 info_ram_total 50192
2021-05-31 10:12:25 info_relays_1_has_timer false
2021-05-31 10:12:25 info_relays_1_ison false
2021-05-31 10:12:25 info_relays_1_source input
2021-05-31 10:12:25 info_relays_1_timer_duration 0
2021-05-31 10:12:25 info_relays_1_timer_remaining 0
2021-05-31 10:12:25 info_relays_1_timer_started 0
2021-05-31 10:12:25 info_serial 1
2021-05-31 10:12:25 info_time 10:12
2021-05-31 10:12:25 info_unixtime 1622448745
2021-05-31 10:12:25 info_update_beta_version 20210514-065742/v1.10.5-rc1-gecc99b7
2021-05-31 10:12:25 info_update_has_update false
2021-05-31 10:12:25 info_update_new_version 20210429-100340/v1.10.4-g3f94cd7
2021-05-31 10:12:25 info_update_old_version 20210429-100340/v1.10.4-g3f94cd7
2021-05-31 10:12:25 info_update_status idle
2021-05-31 10:12:25 info_uptime 273
2021-05-31 10:12:25 info_wifi_sta_connected true
2021-05-31 10:12:25 info_wifi_sta_ip 192.168.178.102
2021-05-31 10:12:25 info_wifi_sta_rssi -58
2021-05-31 10:12:25 info_wifi_sta_ssid WLAN75
2021-06-29 08:07:37 input0 1
2021-06-29 08:07:37 ip 192.168.178.102
2021-06-28 21:29:33 longpush_0 1
2021-06-29 08:07:37 mac E8DB84D245AD
2021-06-29 08:07:37 model SHSW-1
2021-06-29 08:07:37 new_fw false
2021-06-29 08:07:37 online true
2021-06-29 08:07:37 relay0 off
2021-06-29 08:07:37 state off
TIMED_OnOff:
CMD on-for-timer
DURATION 300
NEXTCMD off
START 1624946850
START_FMT 2021-06-29 08:07:30
hash:
Attributes:
alias Wasserpumpe
devStateIcon {my $onl = ReadingsVal($name,"online","false") eq "false" ? "rot" : ReadingsVal($name,"new_fw","false") eq "true" ? "gelb" : "gruen"; my $light = ReadingsVal($name,"state","off"); my $show = '<a href="';$show .= $onl eq "gelb" ? "/fhem?cmd.dummy=set $name x_update&XHR=1\">" : "http://".ReadingsVal($name,"ip","none").' "target="_blank">'; $show .= FW_makeImage("10px-kreis-".$onl)."</a>"; "<div> $show <a href=\"/fhem?cmd.dummy=set $name toggle&XHR=1\">".FW_makeImage($light)."</a></div>" }
event-on-update-reading input0
icon sani_garden_pump
model shelly1
readingList shellies/shelly1-E8DB84D245AD/relay/0:.* state
shellies/shelly1-E8DB84D245AD/relay/0:.* relay0
shellies/shelly1-E8DB84D245AD/input/0:.* input0
shellies/shelly1-E8DB84D245AD/online:.* online
shellies/shelly1-E8DB84D245AD/announce:.* { json2nameValue($EVENT) }
shellies/announce:.* { $EVENT =~ m,..id...shelly1-E8DB84D245AD...mac.*, ? json2nameValue($EVENT) : return }
shelly1_E8DB84D245AD:shellies/shelly1-E8DB84D245AD/info:.* { json2nameValue($EVENT, 'info_', $JSONMAP) }
shelly1_E8DB84D245AD:shellies/shelly1-E8DB84D245AD/input_event/0:.* { json2nameValue($EVENT, '0_', $JSONMAP) }
shelly1_E8DB84D245AD:shellies/shelly1-E8DB84D245AD/longpush/0:.* longpush_0
room MQTT2_DEVICE
setList off:noArg shellies/shelly1-E8DB84D245AD/relay/0/command off
on:noArg shellies/shelly1-E8DB84D245AD/relay/0/command on
x_update:noArg shellies/shelly1-E8DB84D245AD/command update_fw
x_mqttcom shellies/shelly1-E8DB84D245AD/command $EVTPART1
Aktuell kommt alle 30 sec. ein Event mit Status input0 (Eingang des Sensors) auf 1 und die Pumpe ist auf off, aber das DOIF triggert nicht. Ich habe keine Idee mehr, woran das liegen kann. Hat jemand eine Ansatz?
Viele Grüße Jürgen