Hallo zusammen,
ich kratze gerade meinen Kopf und komme alleine nicht weiter.
Mein Shelly:
Internals:
CID shelly_hoflicht
DEF shelly_hoflicht
FUUID 68b70b72-f33f-f563-ba66-f126a4a391ffb594
IODev MQTT2_SERVER
LASTInputDev MQTT2_SERVER
MQTT2_SERVER_CONN MQTT2_SERVER_10.10.3.32_58340
MQTT2_SERVER_MSGCNT 38
MQTT2_SERVER_TIME 2025-09-08 16:44:40
MSGCNT 38
NAME OUT.Licht_Hoflicht
NR 285
STATE on
TYPE MQTT2_DEVICE
eventCount 38
JSONMAP:
params_switch_0_temperature_tC temperature
params_switch_0_temperature_tF 0
params_wifi_sta_ip ip
req_result_in_mode in_mode
switch_state state
switch_temperature_tC temperature
switch_temperature_tF 0
READINGS:
2025-09-08 13:01:08 IODev MQTT2_SERVER
2025-09-02 17:22:33 attrTemplateVersion 20240627
2025-09-08 16:44:40 dst shelly-hoflicht/events
2025-09-03 07:21:33 in_mode follow
2025-09-02 18:30:59 input_id 0
2025-09-02 18:30:59 input_state false
2025-09-02 17:31:12 ip 10.10.3.32
2025-09-08 16:44:40 method NotifyStatus
2025-09-08 13:01:09 mqtt_connected true
2025-09-08 13:01:09 online true
2025-09-08 10:34:36 params_events_1_cfg_rev 17
2025-09-08 10:34:36 params_events_1_component sys
2025-09-08 10:34:36 params_events_1_event config_changed
2025-09-02 18:15:05 params_events_1_id 0
2025-09-08 10:34:36 params_events_1_restart_required false
2025-09-02 18:15:14 params_events_1_time_ms 997
2025-09-08 10:34:36 params_events_1_ts 1757320476.25
2025-09-02 18:30:59 params_input_0_state false
2025-09-08 13:01:09 params_mqtt_connected true
2025-09-08 16:42:43 params_switch_0_output true
2025-09-08 16:42:43 params_switch_0_source MQTT
2025-09-02 18:27:18 params_sys_available_updates_beta_version 1.7.1-beta1
2025-09-08 10:34:36 params_sys_cfg_rev 17
2025-09-08 16:44:40 params_sys_last_sync_ts 1757342680
2025-09-08 16:44:40 params_sys_time 16:44
2025-09-08 16:44:40 params_sys_unixtime 1757342680
2025-09-08 16:44:40 params_ts 1757342680.54
2025-09-08 16:44:40 src shelly1mini-348518e0c6d0
2025-09-08 16:42:43 state on
2025-09-08 16:42:43 switch_id 0
2025-09-08 16:42:43 switch_source MQTT
2025-09-08 16:44:40 sys_available_updates_beta_version 1.7.1-beta1
2025-09-08 16:44:40 sys_btrelay_rev 0
2025-09-08 16:44:40 sys_cfg_rev 17
2025-09-08 16:44:40 sys_fs_free 139264
2025-09-08 16:44:40 sys_fs_size 393216
2025-09-08 16:44:40 sys_kvs_rev 0
2025-09-08 16:44:40 sys_last_sync_ts 1757342680
2025-09-08 16:44:40 sys_mac 348518E0C6D0
2025-09-08 16:44:40 sys_ram_free 139628
2025-09-08 16:44:40 sys_ram_min_free 124664
2025-09-08 16:44:40 sys_ram_size 253912
2025-09-08 16:44:40 sys_reset_reason 1
2025-09-08 16:44:40 sys_restart_required false
2025-09-08 16:44:40 sys_schedule_rev 0
2025-09-08 16:44:40 sys_time 16:44
2025-09-08 16:44:40 sys_unixtime 1757342680
2025-09-08 16:44:40 sys_uptime 512268
2025-09-08 16:44:40 sys_utc_offset 7200
2025-09-08 16:44:40 sys_webhook_rev 0
2025-09-08 16:42:43 temperature 56.1
2025-09-02 17:22:33 x_reboot set
Attributes:
DbLogExclude .*
IODev MQTT2_SERVER
devStateIcon {
my $onl = ReadingsVal($name,'online','false') eq 'false'?'10px-kreis-rot':'10px-kreis-gruen';
$onl = FW_makeImage($onl);
my $light = FW_makeImage(ReadingsVal($name,'state','off'));
my $temp = ReadingsVal($name,'temperature','-100');
my $ip = ReadingsVal($name,'ip','none');
my $reb = ReadingsVal($name,'sys_restart_required','false') eq 'true'?'<a href="/fhem?cmd.dummy=set '.$name.' x_reboot&XHR=1"> ... Notwendigen Reboot durchführen</a>':'';
qq(<a href="http://$ip" target="_blank">${onl}</a><a href="/fhem?cmd.dummy=set $name toggle&XHR=1">${light}</a>$reb)
}
devicetopic shelly-hoflicht
genericDeviceType light
getList in_mode:noArg in_mode $DEVICETOPIC/rpc {"id": 1,"src":"$DEVICETOPIC", "method": "Switch.GetConfig", "params": {"id": 0}}
icon light_outdoor
jsonMap switch_state:state switch_temperature_tC:temperature switch_temperature_tF:0 params_wifi_sta_ip:ip params_switch_0_temperature_tC:temperature params_switch_0_temperature_tF:0 req_result_in_mode:in_mode
model shellyPlus_1
readingList $DEVICETOPIC/online:.* online
$DEVICETOPIC/events/rpc:.* { json2nameValue($EVENT,'',$JSONMAP) }
$DEVICETOPIC/status/mqtt:.* { json2nameValue($EVENT, 'mqtt_', $JSONMAP) }
$DEVICETOPIC/status/sys:.* { json2nameValue($EVENT, 'sys_', $JSONMAP) }
$DEVICETOPIC/status/switch_0:.* { $EVENT =~ s/"output":true/"state":"on"/g; $EVENT =~ s/"output":false/"state":"off"/g; json2nameValue($EVENT, 'switch_', $JSONMAP) }
$DEVICETOPIC/status/cloud:.* {}
$DEVICETOPIC/rpc:.* { json2nameValue($EVENT, 'req_', $JSONMAP, 'in_mode')}
$DEVICETOPIC/status/input_0:.* { json2nameValue($EVENT, 'input_', $JSONMAP) }
fhem2shelly/rpc:.* {}
room Draussen
setList toggle:noArg $DEVICETOPIC/rpc {"id":0,"src":"fhem2shelly","method":"Switch.Toggle","params": {"id":0}}
off:noArg $DEVICETOPIC/rpc {"id":0,"src":"fhem2shelly","method":"Switch.Set","params": {"id":0,"on":false}}
on:noArg $DEVICETOPIC/rpc {"id":0,"src":"fhem2shelly","method":"Switch.Set","params": {"id":0,"on":true}}
on-for-timer $DEVICETOPIC/rpc {"id":0,"src":"fhem2shelly","method":"Switch.Set","params": {"id":0,"on":true,"toggle_after":$EVTPART1}}
off-for-timer $DEVICETOPIC/rpc {"id":0,"src":"fhem2shelly","method":"Switch.Set","params": {"id":0,"on":false,"toggle_after":$EVTPART1}}
in_mode:toggle,flip,detached {fhem("sleep 0.2; get $NAME in_mode"); my $val = $EVTPART1 ne 'toggle' ? $EVTPART1 : ReadingsVal($NAME,'in_mode','flip') eq 'flip' ? 'detached':'flip'; qq($DEVICETOPIC/rpc {"id":1,"src":"fhem2shelly","method":"Switch.SetConfig","params": {"id":0, "config": {"in_mode": "$val"}}})}
x_update:noArg $DEVICETOPIC/rpc {"id":0,"src":"fhem2shelly","method":"Shelly.Update","params": {"stage":"stable"}}
x_reboot:noArg $DEVICETOPIC/rpc {"id":0,"src":"fhem2shelly","method":"Shelly.Reboot"}
x_eco:true,false $DEVICETOPIC/rpc {"id":0,"src":"fhem2shelly","method":"Sys.SetConfig","params": {"config": {"device": {"eco_mode": $EVTPART1}}}}
setStateList on off toggle on-for-timer off-for-timer
webCmd :
soll nach dem Einschalten immer nach 30 Minuten wieder ausgeschaltet werden.
Um das zu erreichen, habe ich ein notify gebastelt:
Internals:
DEF OUT.Licht_Hoflicht:.*
{
my $state = ReadingsVal("OUT.Licht_Hoflicht", "state", "undef");
Log3 ("$SELF", 3, "$SELF Shelly OUT.Licht_Hoflicht wurde geschaltet: $state");
if ( ("$state" eq "on") || ("$state" eq "set_on") )
{
if (exists($defs{'at_Licht_Hoflicht_off'})) {fhem("delete at_Licht_Hoflicht_off")}
fhem("define at_Licht_Hoflicht_off at +00:30:00 set OUT.Licht_Hoflicht off");;
fhem("attr at_Licht_Hoflicht_off room Draussen");;
}
if ( ("$state" eq "off") || ("$state" eq "set_off") )
{
if (exists($defs{'at_Licht_Hoflicht_off'})) {fhem("delete at_Licht_Hoflicht_off")}
}
}
FUUID 68b712cd-f33f-f563-9398-f5764e01e4fa58a3
NAME notify_Licht_Hoflicht_on
NOTIFYDEV OUT.Licht_Hoflicht
NR 286
NTFY_ORDER 50-notify_Licht_Hoflicht_on
REGEXP OUT.Licht_Hoflicht:.*
STATE 2025-09-08 16:44:40
TRIGGERTIME 1757342680.96209
TYPE notify
eventCount 3
READINGS:
2025-09-08 16:43:10 state active
2025-09-08 16:44:40 triggeredByDev OUT.Licht_Hoflicht
2025-09-08 16:44:40 triggeredByEvent method: NotifyStatus
Attributes:
DbLogExclude .*
room Draussen
Wie ihr in obigem Beispiel (im Device selber) sehen könnt, hat $state um 16:42:43 Uhr auf "on" gewechselt.
Das Log3 hierzu sieht aber so aus:
2025.09.08 16:42:43 3: MQTT2_DEVICE set OUT.Licht_Hoflicht toggle
2025.09.08 16:42:43 3: notify_Licht_Hoflicht_on Shelly OUT.Licht_Hoflicht wurde geschaltet: set_toggle
2025.09.08 16:42:43 3: notify_Licht_Hoflicht_on Shelly OUT.Licht_Hoflicht wurde geschaltet: on
2025.09.08 16:42:43 3: notify_Licht_Hoflicht_on Shelly OUT.Licht_Hoflicht wurde geschaltet: on
2025.09.08 16:42:43 3: notify_Licht_Hoflicht_on Shelly OUT.Licht_Hoflicht wurde geschaltet: on
2025.09.08 16:42:43 3: notify_Licht_Hoflicht_on Shelly OUT.Licht_Hoflicht wurde geschaltet: on
2025.09.08 16:42:43 3: notify_Licht_Hoflicht_on Shelly OUT.Licht_Hoflicht wurde geschaltet: on
2025.09.08 16:42:43 3: notify_Licht_Hoflicht_on Shelly OUT.Licht_Hoflicht wurde geschaltet: on
2025.09.08 16:42:43 3: notify_Licht_Hoflicht_on Shelly OUT.Licht_Hoflicht wurde geschaltet: on
2025.09.08 16:42:43 3: notify_Licht_Hoflicht_on Shelly OUT.Licht_Hoflicht wurde geschaltet: on
2025.09.08 16:42:43 3: notify_Licht_Hoflicht_on Shelly OUT.Licht_Hoflicht wurde geschaltet: on
2025.09.08 16:42:43 3: notify_Licht_Hoflicht_on Shelly OUT.Licht_Hoflicht wurde geschaltet: on
2025.09.08 16:44:40 3: notify_Licht_Hoflicht_on Shelly OUT.Licht_Hoflicht wurde geschaltet: on
2025.09.08 16:44:40 3: notify_Licht_Hoflicht_on Shelly OUT.Licht_Hoflicht wurde geschaltet: on
2025.09.08 16:44:40 3: notify_Licht_Hoflicht_on Shelly OUT.Licht_Hoflicht wurde geschaltet: on
2025.09.08 16:44:40 3: notify_Licht_Hoflicht_on Shelly OUT.Licht_Hoflicht wurde geschaltet: on
2025.09.08 16:44:40 3: notify_Licht_Hoflicht_on Shelly OUT.Licht_Hoflicht wurde geschaltet: on
2025.09.08 16:44:40 3: notify_Licht_Hoflicht_on Shelly OUT.Licht_Hoflicht wurde geschaltet: on
2025.09.08 16:44:40 3: notify_Licht_Hoflicht_on Shelly OUT.Licht_Hoflicht wurde geschaltet: on
2025.09.08 16:44:40 3: notify_Licht_Hoflicht_on Shelly OUT.Licht_Hoflicht wurde geschaltet: on
2025.09.08 16:44:40 3: notify_Licht_Hoflicht_on Shelly OUT.Licht_Hoflicht wurde geschaltet: on
2025.09.08 16:44:40 3: notify_Licht_Hoflicht_on Shelly OUT.Licht_Hoflicht wurde geschaltet: on
2025.09.08 16:44:40 3: notify_Licht_Hoflicht_on Shelly OUT.Licht_Hoflicht wurde geschaltet: on
2025.09.08 16:44:40 3: notify_Licht_Hoflicht_on Shelly OUT.Licht_Hoflicht wurde geschaltet: on
2025.09.08 16:44:40 3: notify_Licht_Hoflicht_on Shelly OUT.Licht_Hoflicht wurde geschaltet: on
2025.09.08 16:44:40 3: notify_Licht_Hoflicht_on Shelly OUT.Licht_Hoflicht wurde geschaltet: on
2025.09.08 16:44:40 3: notify_Licht_Hoflicht_on Shelly OUT.Licht_Hoflicht wurde geschaltet: on
2025.09.08 16:44:40 3: notify_Licht_Hoflicht_on Shelly OUT.Licht_Hoflicht wurde geschaltet: on
2025.09.08 16:44:40 3: notify_Licht_Hoflicht_on Shelly OUT.Licht_Hoflicht wurde geschaltet: on
2025.09.08 16:44:40 3: notify_Licht_Hoflicht_on Shelly OUT.Licht_Hoflicht wurde geschaltet: on
2025.09.08 16:44:40 3: notify_Licht_Hoflicht_on Shelly OUT.Licht_Hoflicht wurde geschaltet: on
2025.09.08 16:44:40 3: notify_Licht_Hoflicht_on Shelly OUT.Licht_Hoflicht wurde geschaltet: on
2025.09.08 16:44:40 3: notify_Licht_Hoflicht_on Shelly OUT.Licht_Hoflicht wurde geschaltet: on
2025.09.08 16:44:40 3: notify_Licht_Hoflicht_on Shelly OUT.Licht_Hoflicht wurde geschaltet: on
2025.09.08 16:44:40 3: notify_Licht_Hoflicht_on Shelly OUT.Licht_Hoflicht wurde geschaltet: on
2025.09.08 16:44:40 3: notify_Licht_Hoflicht_on Shelly OUT.Licht_Hoflicht wurde geschaltet: on
2025.09.08 16:44:40 3: notify_Licht_Hoflicht_on Shelly OUT.Licht_Hoflicht wurde geschaltet: on
2025.09.08 16:44:40 3: notify_Licht_Hoflicht_on Shelly OUT.Licht_Hoflicht wurde geschaltet: on
2025.09.08 16:44:40 3: notify_Licht_Hoflicht_on Shelly OUT.Licht_Hoflicht wurde geschaltet: on
2025.09.08 16:44:40 3: notify_Licht_Hoflicht_on Shelly OUT.Licht_Hoflicht wurde geschaltet: on
2025.09.08 16:44:40 3: notify_Licht_Hoflicht_on Shelly OUT.Licht_Hoflicht wurde geschaltet: on
2025.09.08 16:44:40 3: notify_Licht_Hoflicht_on Shelly OUT.Licht_Hoflicht wurde geschaltet: on
2025.09.08 16:44:40 3: notify_Licht_Hoflicht_on Shelly OUT.Licht_Hoflicht wurde geschaltet: on
2025.09.08 16:44:40 3: notify_Licht_Hoflicht_on Shelly OUT.Licht_Hoflicht wurde geschaltet: on
2025.09.08 16:44:40 3: notify_Licht_Hoflicht_on Shelly OUT.Licht_Hoflicht wurde geschaltet: on
2025.09.08 16:44:40 3: notify_Licht_Hoflicht_on Shelly OUT.Licht_Hoflicht wurde geschaltet: on
2025.09.08 16:44:40 3: notify_Licht_Hoflicht_on Shelly OUT.Licht_Hoflicht wurde geschaltet: on
2025.09.08 16:44:40 3: notify_Licht_Hoflicht_on Shelly OUT.Licht_Hoflicht wurde geschaltet: on
2025.09.08 16:44:40 3: notify_Licht_Hoflicht_on Shelly OUT.Licht_Hoflicht wurde geschaltet: on
2025.09.08 16:44:40 3: notify_Licht_Hoflicht_on Shelly OUT.Licht_Hoflicht wurde geschaltet: on
2025.09.08 16:44:40 3: notify_Licht_Hoflicht_on Shelly OUT.Licht_Hoflicht wurde geschaltet: on
2025.09.08 16:44:40 3: notify_Licht_Hoflicht_on Shelly OUT.Licht_Hoflicht wurde geschaltet: on
2025.09.08 16:44:40 3: notify_Licht_Hoflicht_on Shelly OUT.Licht_Hoflicht wurde geschaltet: on
2025.09.08 16:44:40 3: notify_Licht_Hoflicht_on Shelly OUT.Licht_Hoflicht wurde geschaltet: on
2025.09.08 16:44:40 3: notify_Licht_Hoflicht_on Shelly OUT.Licht_Hoflicht wurde geschaltet: on
2025.09.08 16:44:40 3: notify_Licht_Hoflicht_on Shelly OUT.Licht_Hoflicht wurde geschaltet: on
2025.09.08 16:44:40 3: notify_Licht_Hoflicht_on Shelly OUT.Licht_Hoflicht wurde geschaltet: on
2025.09.08 16:44:40 3: notify_Licht_Hoflicht_on Shelly OUT.Licht_Hoflicht wurde geschaltet: on
2025.09.08 16:44:40 3: notify_Licht_Hoflicht_on Shelly OUT.Licht_Hoflicht wurde geschaltet: on
2025.09.08 16:44:40 3: notify_Licht_Hoflicht_on Shelly OUT.Licht_Hoflicht wurde geschaltet: on
2025.09.08 16:44:41 3: notify_Licht_Hoflicht_on Shelly OUT.Licht_Hoflicht wurde geschaltet: on
"Irgendwas" bringt den MQTT-Server dazu, um 16:44:40 Uhr und um 16:44:41 Uhr anzunehmen, dass gerade wieder geschaltet wurde.
Wo ist denn mein Gedankenfehler?
Wie kann ich sicherstellen, dass wirklich nur dieser eine Anschalt-Moment zur Berechnung herangezogen wird?
Bin gerade wirklich ratlos...
Danke für eure Hilfe!
(Vielleicht kann mir ja auch jemand erklären, warum das notify so dermaßen viele Log-Einträge schreibt...)
Grmpf. Der "Spaß" geht weiter...
Kurz vor Ablauf der 30 Minuten, nach denen ausgeschaltet werden soll, hat "irgendwas" den Shelly neu geschaltet:
Internals:
CID shelly_hoflicht
DEF shelly_hoflicht
FUUID 68b70b72-f33f-f563-ba66-f126a4a391ffb594
IODev MQTT2_SERVER
LASTInputDev MQTT2_SERVER
MQTT2_SERVER_CONN MQTT2_SERVER_10.10.3.32_58340
MQTT2_SERVER_MSGCNT 42
MQTT2_SERVER_TIME 2025-09-08 17:13:19
MSGCNT 42
NAME OUT.Licht_Hoflicht
NR 285
STATE on
TYPE MQTT2_DEVICE
eventCount 42
JSONMAP:
params_switch_0_temperature_tC temperature
params_switch_0_temperature_tF 0
params_wifi_sta_ip ip
req_result_in_mode in_mode
switch_state state
switch_temperature_tC temperature
switch_temperature_tF 0
READINGS:
2025-09-08 13:01:08 IODev MQTT2_SERVER
2025-09-02 17:22:33 attrTemplateVersion 20240627
2025-09-08 17:13:19 dst shelly-hoflicht/events
2025-09-03 07:21:33 in_mode follow
2025-09-02 18:30:59 input_id 0
2025-09-02 18:30:59 input_state false
2025-09-02 17:31:12 ip 10.10.3.32
2025-09-08 17:13:19 method NotifyStatus
2025-09-08 13:01:09 mqtt_connected true
2025-09-08 13:01:09 online true
2025-09-08 10:34:36 params_events_1_cfg_rev 17
2025-09-08 10:34:36 params_events_1_component sys
2025-09-08 10:34:36 params_events_1_event config_changed
2025-09-02 18:15:05 params_events_1_id 0
2025-09-08 10:34:36 params_events_1_restart_required false
2025-09-02 18:15:14 params_events_1_time_ms 997
2025-09-08 10:34:36 params_events_1_ts 1757320476.25
2025-09-02 18:30:59 params_input_0_state false
2025-09-08 13:01:09 params_mqtt_connected true
2025-09-08 16:42:43 params_switch_0_output true
2025-09-08 16:42:43 params_switch_0_source MQTT
2025-09-02 18:27:18 params_sys_available_updates_beta_version 1.7.1-beta1
2025-09-08 10:34:36 params_sys_cfg_rev 17
2025-09-08 17:13:19 params_sys_last_sync_ts 1757344399
2025-09-08 17:13:19 params_sys_time 17:13
2025-09-08 17:13:19 params_sys_unixtime 1757344399
2025-09-08 17:13:19 params_ts 1757344399.33
2025-09-08 17:13:19 src shelly1mini-348518e0c6d0
2025-09-08 16:42:43 state on
2025-09-08 16:42:43 switch_id 0
2025-09-08 16:42:43 switch_source MQTT
2025-09-08 17:13:19 sys_available_updates_beta_version 1.7.1-beta1
2025-09-08 17:13:19 sys_btrelay_rev 0
2025-09-08 17:13:19 sys_cfg_rev 17
2025-09-08 17:13:19 sys_fs_free 139264
2025-09-08 17:13:19 sys_fs_size 393216
2025-09-08 17:13:19 sys_kvs_rev 0
2025-09-08 17:13:19 sys_last_sync_ts 1757344399
2025-09-08 17:13:19 sys_mac 348518E0C6D0
2025-09-08 17:13:19 sys_ram_free 139632
2025-09-08 17:13:19 sys_ram_min_free 124664
2025-09-08 17:13:19 sys_ram_size 253912
2025-09-08 17:13:19 sys_reset_reason 1
2025-09-08 17:13:19 sys_restart_required false
2025-09-08 17:13:19 sys_schedule_rev 0
2025-09-08 17:13:19 sys_time 17:13
2025-09-08 17:13:19 sys_unixtime 1757344399
2025-09-08 17:13:19 sys_uptime 513987
2025-09-08 17:13:19 sys_utc_offset 7200
2025-09-08 17:13:19 sys_webhook_rev 0
2025-09-08 16:42:43 temperature 56.1
2025-09-02 17:22:33 x_reboot set
Attributes:
DbLogExclude .*
IODev MQTT2_SERVER
devStateIcon {
my $onl = ReadingsVal($name,'online','false') eq 'false'?'10px-kreis-rot':'10px-kreis-gruen';
$onl = FW_makeImage($onl);
my $light = FW_makeImage(ReadingsVal($name,'state','off'));
my $temp = ReadingsVal($name,'temperature','-100');
my $ip = ReadingsVal($name,'ip','none');
my $reb = ReadingsVal($name,'sys_restart_required','false') eq 'true'?'<a href="/fhem?cmd.dummy=set '.$name.' x_reboot&XHR=1"> ... Notwendigen Reboot durchführen</a>':'';
qq(<a href="http://$ip" target="_blank">${onl}</a><a href="/fhem?cmd.dummy=set $name toggle&XHR=1">${light}</a>$reb)
}
devicetopic shelly-hoflicht
genericDeviceType light
getList in_mode:noArg in_mode $DEVICETOPIC/rpc {"id": 1,"src":"$DEVICETOPIC", "method": "Switch.GetConfig", "params": {"id": 0}}
icon light_outdoor
jsonMap switch_state:state switch_temperature_tC:temperature switch_temperature_tF:0 params_wifi_sta_ip:ip params_switch_0_temperature_tC:temperature params_switch_0_temperature_tF:0 req_result_in_mode:in_mode
model shellyPlus_1
readingList $DEVICETOPIC/online:.* online
$DEVICETOPIC/events/rpc:.* { json2nameValue($EVENT,'',$JSONMAP) }
$DEVICETOPIC/status/mqtt:.* { json2nameValue($EVENT, 'mqtt_', $JSONMAP) }
$DEVICETOPIC/status/sys:.* { json2nameValue($EVENT, 'sys_', $JSONMAP) }
$DEVICETOPIC/status/switch_0:.* { $EVENT =~ s/"output":true/"state":"on"/g; $EVENT =~ s/"output":false/"state":"off"/g; json2nameValue($EVENT, 'switch_', $JSONMAP) }
$DEVICETOPIC/status/cloud:.* {}
$DEVICETOPIC/rpc:.* { json2nameValue($EVENT, 'req_', $JSONMAP, 'in_mode')}
$DEVICETOPIC/status/input_0:.* { json2nameValue($EVENT, 'input_', $JSONMAP) }
fhem2shelly/rpc:.* {}
room Draussen
setList toggle:noArg $DEVICETOPIC/rpc {"id":0,"src":"fhem2shelly","method":"Switch.Toggle","params": {"id":0}}
off:noArg $DEVICETOPIC/rpc {"id":0,"src":"fhem2shelly","method":"Switch.Set","params": {"id":0,"on":false}}
on:noArg $DEVICETOPIC/rpc {"id":0,"src":"fhem2shelly","method":"Switch.Set","params": {"id":0,"on":true}}
on-for-timer $DEVICETOPIC/rpc {"id":0,"src":"fhem2shelly","method":"Switch.Set","params": {"id":0,"on":true,"toggle_after":$EVTPART1}}
off-for-timer $DEVICETOPIC/rpc {"id":0,"src":"fhem2shelly","method":"Switch.Set","params": {"id":0,"on":false,"toggle_after":$EVTPART1}}
in_mode:toggle,flip,detached {fhem("sleep 0.2; get $NAME in_mode"); my $val = $EVTPART1 ne 'toggle' ? $EVTPART1 : ReadingsVal($NAME,'in_mode','flip') eq 'flip' ? 'detached':'flip'; qq($DEVICETOPIC/rpc {"id":1,"src":"fhem2shelly","method":"Switch.SetConfig","params": {"id":0, "config": {"in_mode": "$val"}}})}
x_update:noArg $DEVICETOPIC/rpc {"id":0,"src":"fhem2shelly","method":"Shelly.Update","params": {"stage":"stable"}}
x_reboot:noArg $DEVICETOPIC/rpc {"id":0,"src":"fhem2shelly","method":"Shelly.Reboot"}
x_eco:true,false $DEVICETOPIC/rpc {"id":0,"src":"fhem2shelly","method":"Sys.SetConfig","params": {"config": {"device": {"eco_mode": $EVTPART1}}}}
setStateList on off toggle on-for-timer off-for-timer
webCmd :
So kann ich mein notify dann wohl vergessen...
Hat jemand eine Idee?
Als Workaround habe ich jetzt mal die Zeile
if (exists($defs{'at_Licht_Hoflicht_off'})) {fhem("delete at_Licht_Hoflicht_off")}
auskommentiert.
Aber... Lösung ist das ja eigentlich keine...
Verwende eine sinnvolle regex in Deinem notify.
Derzeit triggert Dein notify auf jeden beliebigen event des Schalters.
DEF OUT.Licht_Hoflicht:.*
Das ist kein mqtt Problem.
Hallo,
Zitat von: Kornelius777 am 08 September 2025, 17:19:09Hat jemand eine Idee?
Das ausschalten im Shelly (https://kb.shelly.cloud/knowledge-base/shelly-plus-1-device-smart-control?utm_source=chatgpt.com#ShellySmartControlguidecommonparts-Timer) konfigurieren und in FHEM noch etwas üben.
Gruß Thomas
Ich weiß leider nicht genau was dein Shelly genau ist. Es wird also von irgendwo eingeschaltet und FHEM soll es wieder ausknipsen, ja? Und dieser Zustand spiegelt sich in dem Reading 'state'?
Ich würde da ein watchdog device nehmen, die Beschreibung findet sich ja in der FHEM commandref. In deinem Fall etwa so (aber guck bitte auch in die Doku):
define hoflicht_ausmachen watchdog OUT.Licht_Hoflicht:on 00:30 OUT.Licht_Hoflicht:off set OUT.Licht_Hoflicht off
Man muss noch das Attribut 'autoRestart' auf 1 setzen, sonst watcht der nur einmal. Wenn die Regex (OUT.Licht_Hoflicht:on etc.) nicht passen, dann im Event Monitor mal gucken, was da kommt. (Ich würde bei den Namen auch möglichst keine Punkte (.) nehmen, weil die in einer Regex ja für ein beliebiges Zeichen stehen - macht hier aber wohl nichts.)
Danke für Eure Antworten.
Ich habe es jetzt so gelöst, dass ich mein notify angepasst habe. $EVENT wollte zusätzlich mit rein. Das notify sieht jetzt so aus:
OUT.Licht_Hoflicht:.* {
my $state = ReadingsVal("OUT.Licht_Hoflicht", "state", "undef");
# Log3 ("$SELF", 3, "$SELF Shelly OUT.Licht_Hoflicht wurde geschaltet: $state - $EVENT");
if ( ( ("$state" eq "on") && ("$EVENT" eq "on") ) || ( ("$state" eq "set_on") && ("$EVENT" eq "on") ) )
{
if (exists($defs{'at_Licht_Hoflicht_off'})) {fhem("delete at_Licht_Hoflicht_off")}
fhem("define at_Licht_Hoflicht_off at +00:30:00 set OUT.Licht_Hoflicht off");;
fhem("attr at_Licht_Hoflicht_off room Draussen");;
}
if ( ( ("$state" eq "off") && ("$EVENT" eq "off") ) || ( ("$state" eq "set_off") && ("$EVENT" eq "off") ) )
{
if (exists($defs{'at_Licht_Hoflicht_off'})) {fhem("delete at_Licht_Hoflicht_off")}
}
}
Zitat von: TomLee am 08 September 2025, 17:33:02Das ausschalten im Shelly (https://kb.shelly.cloud/knowledge-base/shelly-plus-1-device-smart-control?utm_source=chatgpt.com#ShellySmartControlguidecommonparts-Timer) konfigurieren und in FHEM noch etwas üben.
Überleg dir mal, wie hilfreich diese Antwort wohl in einem fhem-Forum sein mag.
Konstruktiv ist sie jedenfalls nicht.
Zitat von: Kornelius777 am 09 September 2025, 06:46:34OUT.Licht_Hoflicht:.* {
if (exists($defs{'at_Licht_Hoflicht_off'})) {fhem("delete at_Licht_Hoflicht_off")}
fhem("define at_Licht_Hoflicht_off at +00:30:00 set OUT.Licht_Hoflicht off");;
fhem("attr at_Licht_Hoflicht_off room Draussen");;
}
}
Warum das at löschen und neu anlegen.
Schon mal über
modify nachgedacht?
https://fhem.de/commandref_DE.html#modify (https://fhem.de/commandref_DE.html#modify)
Das d
elete könntest Du Dir vermutlich auch sparen und statt dessen
defmod verwenden.
https://fhem.de/commandref_DE.html#defmod (https://fhem.de/commandref_DE.html#defmod)
Und mit dem Parameter
-silent ersparst Du Dir das rote ? wegen der Änderung an der config. Gibt es bei
define,
defmod und
attr.
Edit:
Das Ausschalten des Hoflichtes würde ich über einen
watchdog realisieren.
Damit spart man sich das hin und her schieben von Definitionen etc.
https://fhem.de/commandref_DE.html#watchdog (https://fhem.de/commandref_DE.html#watchdog)
Zitat von: Kornelius777 am 09 September 2025, 06:49:58Überleg dir mal, wie hilfreich diese Antwort wohl in einem fhem-Forum sein mag.
Konstruktiv ist sie jedenfalls nicht.
So schlecht finde ich den Hinweis auf den Shelly von TomLee nicht. War auch mein erster Gedanke, denn manchmal hat man Alternativen nicht auf dem Schirm.
Gruß Ralf
Zitat von: Kornelius777 am 09 September 2025, 06:46:34Danke für Eure Antworten.
Ich habe es jetzt so gelöst, dass ich mein notify angepasst habe. $EVENT wollte zusätzlich mit rein. Das notify sieht jetzt so aus:
Kann man so machen, aber es ist doch wenig sinnvoll, dafür ein at zu definieren und quasi die SetExtensions nachzubauen, die vom Shelly-device ohnehin schon unterstützt werden.
Das device kennt "on-for-timer" und Shelly kennt grundsätzlich auch zu "on" einen zusätzlichen Parameter, mit dem man das Ausschalten schon beim Einschalten mitgeben kann, indem man "on,1800" als payload der mqtt Nachricht schickt. Vielleicht würde sogar die Verwendung von "eventMap" Deine Aufgabe schon lösen (ungeprüft).
Zitat von: Kornelius777 am 09 September 2025, 06:49:58Überleg dir mal, wie hilfreich diese Antwort wohl in einem fhem-Forum sein mag.
Konstruktiv ist sie jedenfalls nicht.
Toms Vorschlag war nicht so schlecht (auch wenn ich persönlich ihn nicht umsetzen würde). Es gibt eine Reihe Möglichkeiten, Deine Aufgabenstellung völlig ohne notify und ohne zusätzlichen perl-Code (quasi ziemlich umständlich 'von hinten durch die Brust ins Auge') zu lösen.
Offenbar fehlt Dir aber derzeit noch das Verständnis, was die FHEM-Bordmittel alles schon bereitstellen und auch das Verständnis dazu, wie mqtt und ein Shelly überhaupt zusammenarbeiten.
Jedenfalls fand ich Deine Antwort sehr viel weniger konstruktiv als den Vorschlag von Tom.