Hauptmenü

on-for-timer schaltet nicht ab

Begonnen von The Grue, 07 November 2026, 12:38:42

Vorheriges Thema - Nächstes Thema

The Grue

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

TomLee

Hallo,

klappt der off-Befehl grundsätzlich und kommt beim LED-Streifen an?
Wenn ich deine Definition 1:1 übernehme, funzt das Ausschalten mit on-for-timer im Device problemlos.

Gruß Thomas

The Grue

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.

TomLee

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...

TomLee

#4
Funzt bei dir oben in der Befehlszeile das?
set Livingroom.InfinityMirror on; sleep 3; set Livingroom.InfinityMirror off

TomLee

#5
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 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 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 3
Steht 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.