Servus!
Für einen selbstgebastelten Mysensors-infinity-mirror würde ich gerne "on-for-timer" verwenden. Soweit ich gelernt habe, stellen mir die set-extensions die Funktion zur Verfügung, wenn das device on und off unterstützt, was es tut. In den set-commands tauchen auch brav die Erweiterungen auf - nur leider tut on-for-timer nicht was es soll: set Livingroom.InfinityMirror on-for-timer 3 schaltet den Spiegel ein, aber nie wieder aus :/
Hab' ich da was falsch gemacht? Hier die Definition usw...
define Livingroom.InfinityMirror MYSENSORS_DEVICE 110
attr Livingroom.InfinityMirror userattr lightSceneParamsToSave lightSceneRestoreOnlyIfChanged:1,0
attr Livingroom.InfinityMirror IODev MySensors.Gateway
attr Livingroom.InfinityMirror alias Wohnzimmer:Spiegel
attr Livingroom.InfinityMirror icon tradfri_gateway
attr Livingroom.InfinityMirror mapReading_delay 1 value2
attr Livingroom.InfinityMirror mapReading_id1 1 id
attr Livingroom.InfinityMirror mapReading_pattern 1 value1
attr Livingroom.InfinityMirror mapReading_percentage 0 percentage
attr Livingroom.InfinityMirror mapReading_power 0 power
attr Livingroom.InfinityMirror mapReading_status 0 status
attr Livingroom.InfinityMirror mapReading_temperature1 1 temperature
attr Livingroom.InfinityMirror mapReading_text 0 text
attr Livingroom.InfinityMirror mapReading_value31 1 value3
attr Livingroom.InfinityMirror mapReading_value41 1 value4
attr Livingroom.InfinityMirror mapReading_value51 1 value5
attr Livingroom.InfinityMirror mode repeater
attr Livingroom.InfinityMirror room EG->Wohnzimmer
attr Livingroom.InfinityMirror setCommands on:status:on off:status:off
attr Livingroom.InfinityMirror setReading_delay slider,0,1,255
attr Livingroom.InfinityMirror setReading_pattern slider,0,1,255
attr Livingroom.InfinityMirror setReading_percentage slider,0,1,100
attr Livingroom.InfinityMirror setReading_status on,off
attr Livingroom.InfinityMirror widgetOverride pattern:0,1,2,3,4,5,6,7,8,9
# DEF 110
# FUUID 69d2305b-f33f-7e6f-5549-f9c888e4de7523b3
# FVERSION 10_MYSENSORS_DEVICE.pm:0.305610/2025-11-27
# IODev MySensors.Gateway
# NAME Livingroom.InfinityMirror
# NR 592
# STATE off
# TYPE MYSENSORS_DEVICE
# ack 0
# eventCount 703
# radioId 110
# repeater 1
# READINGS:
# 2026-09-27 15:22:02 IODev MySensors.Gateway
# 2026-07-17 07:49:07 SKETCH_NAME Infinity Mirror
# 2026-07-17 07:49:07 SKETCH_VERSION 1.0
# 2026-11-07 12:21:51 delay 4
# 2026-09-11 21:34:09 parentId 101
# 2026-11-07 12:21:50 pattern 9
# 2026-09-11 21:34:09 percentage 100
# 2026-11-07 12:23:14 state off
# 2026-11-07 12:23:14 status off
# gets:
# readingMappings:
# 0:
# 17:
# name power
# 2:
# name status
# 3:
# name percentage
# 47:
# name text
# 1:
# 0:
# name temperature1
# 24:
# name pattern
# 25:
# name delay
# 26:
# name value31
# 27:
# name value41
# 28:
# name value51
# 42:
# name id1
# retainedMessagesForRadioId:
# setcommands:
# off:
# val off
# var status
# on:
# val on
# var status
# sets:
# clear noArg
# delay slider,0,1,255
# flash noArg
# fwType
# off
# on
# pattern slider,0,1,255
# percentage slider,0,1,100
# reboot noArg
# status on,off
# time noArg
#
setstate Livingroom.InfinityMirror off
setstate Livingroom.InfinityMirror 2026-09-27 15:22:02 IODev MySensors.Gateway
setstate Livingroom.InfinityMirror 2026-07-17 07:49:07 SKETCH_NAME Infinity Mirror
setstate Livingroom.InfinityMirror 2026-07-17 07:49:07 SKETCH_VERSION 1.0
setstate Livingroom.InfinityMirror 2026-11-07 12:21:51 delay 4
setstate Livingroom.InfinityMirror 2026-09-11 21:34:09 parentId 101
setstate Livingroom.InfinityMirror 2026-11-07 12:21:50 pattern 9
setstate Livingroom.InfinityMirror 2026-09-11 21:34:09 percentage 100
setstate Livingroom.InfinityMirror 2026-11-07 12:23:14 state off
setstate Livingroom.InfinityMirror 2026-11-07 12:23:14 status off
Danke für Eure Hilfe und schönes Wochenende!
Markus
Hallo,
klappt der off-Befehl grundsätzlich und kommt beim LED-Streifen an?
Wenn ich deine Definition 1:1 übernehme (https://demo-fhem.cooltux.net/fhem?detail=Livingroom.InfinityMirror&fw_id=), funzt das Ausschalten mit on-for-timer im Device problemlos.
Gruß Thomas
Servus TomLee,
Also, ich kenn mich mit Deiner Demoseite nicht aus... Als ich dort hin geschaut habe, sah die Definition dort meiner gerade mal ähnlich, sicher nicht 1:1.
Ich hab' jetzt mal meine Definition reingepastet und nach einem set Livingroom.InfinityMirror on-for-timer 3 blieb das device an...
Oh und um die Frage zu beantworten: on/off und alles andere, nicht aus den SetExtensions, funktioniert zuverlässig.
Keine Ahnung im Nachhinein was bei mir schief ging, dass die Attribute die du jetzt ergänzt hast bei mir nicht übernommen wurden.
Aber auch jetzt kann ich ein on-for-timer 3 in dem Device ausführen und status/state wechseln nach drei Sekunden zu off.
Leider sehe ich noch nicht wo wir aneinander vorbeireden...
Funzt bei dir oben in der Befehlszeile das?
set Livingroom.InfinityMirror on; sleep 3; set Livingroom.InfinityMirror off
Es hat mir keine Ruhe gelassen und ich hab mich mit meinem Agenten damit beschäftigt, der das auf einem Test-Pi mit einem Fake-Gateway nachgestellt hat.
Ich glaub, jetzt weiß ich, warum wir aneinander vorbeireden:
Wenn die Node nach dem Einschalten seinen Status zurückmeldet (was ja völlig normal ist), dann ruft 10_MYSENSORS_DEVICE beim Eintreffen dieser Meldung SetExtensionsCancel auf, und damit ist der off-Timer weg. Ohne Rückmeldung läuft on-for-timer 3 sauber ab, mit Rückmeldung bleibt das Ding an. Genau wie bei dir.
Auf der Demo hängt halt keine echte Node dran, da antwortet also niemand und der Timer wird nicht abgebrochen.
Kannst du das prüfen?
attr MySensors.Gateway verbose 4
set Livingroom.InfinityMirror on-for-timer 3
Taucht danach im Log ein "MYSENSORS Read: ... c=001(C_SET) ... ack=0" vom Spiegel auf, ist es genau das. Danach verbose wieder zurücksetzen.
Einen kleinen Patch hab ich schon getestet, den würd ich nach deiner Bestätigung Beta-User zeigen.
Wenn sich meine Vermutung bestätigt, dann ist Anfängerfragen der falsche Forumbereich und du solltest den Thread besser nach MySensors (https://forum.fhem.de/index.php?board=96.0) verschieben.
Das Modul wertet jede Statusmeldung ohne ACK als Schaltung am Gerät selbst und bricht deshalb den Timer ab. Das ist so gewollt, Beta-User hat das hier (https://forum.fhem.de/index.php?topic=95581.0) mal begründet.
Eine Bestätigung soll über requestAck kommen, das Echo schickt die MySensors-Lib dann von selbst.
Kannst du prüfen, ob dein Sketch beim Empfang selbst den Status zurückschickt?
attr MySensors.Gateway verbose 4
set Livingroom.InfinityMirror on-for-timer 3Steht danach im Log ein "MYSENSORS Read: ... c=001l, ist es das. verbose danach wieder zurücksetzen.
Dann:
attr Livingroom.InfinityMirror requestAck 1(am Device, am Gateway hat's bei mir nicht gegriffen) und im Sketch das eigene Zurücksenden in receive() rausnehmen.
Status nur noch senden, wenn am Spiegel selbst geschaltet wird. So lief on-for-timer bei mir auf dem Test-Pi mit nachgestelltem Node sauber durch.