From 198b088faaeec4d63ea04c7705b0a778fb6b653c Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Fri, 17 Jul 2026 09:21:50 +0200 Subject: [PATCH] mode-button{,-scheduler}: store to and get count from scheduler's comment --- mode-button-scheduler.rsc | 14 ++++++++++---- mode-button.rsc | 9 ++++----- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/mode-button-scheduler.rsc b/mode-button-scheduler.rsc index 921cee22..a7bedfb6 100644 --- a/mode-button-scheduler.rsc +++ b/mode-button-scheduler.rsc @@ -35,12 +35,18 @@ /system/leds/set type=[ $IfThenElse ([ get $LED type ] = "on") "off" "on" ] $LED; } - :local Count ($ModeButton->"count"); + :local Scheduler [ /system/scheduler/find where name="mode-button-scheduler" ]; + + :if ([ :len $Scheduler ] = 0) do={ + $LogPrint error $ScriptName ("Scheduler does not exist."); + :set ExitOK true; + :error false; + } + + :local Count ([ :deserialize from=json [ /system/scheduler/get $Scheduler comment ] ]->"count"); :local Code ($ModeButton->[ :tostr $Count ]); - :set ($ModeButton->"count") 0; - :set ModeButtonScheduler; - /system/scheduler/remove [ find where name="mode-button-scheduler" ]; + /system/scheduler/remove $Scheduler; :if ([ :len $Code ] = 0) do={ $LogPrint info $ScriptName ("No action defined for " . $Count . " mode-button presses."); diff --git a/mode-button.rsc b/mode-button.rsc index fb70101b..6210ac97 100644 --- a/mode-button.rsc +++ b/mode-button.rsc @@ -15,21 +15,20 @@ do={ :error ("Global config and/or functions not ready."); }; } delay=500ms max=50; :local ScriptName [ :jobname ]; - :global ModeButton; - :global LogPrint; - :set ($ModeButton->"count") ($ModeButton->"count" + 1); - :local Scheduler [ /system/scheduler/find where name="mode-button-scheduler" ]; :if ([ :len $Scheduler ] = 0) do={ $LogPrint info $ScriptName ("Creating scheduler mode-button-scheduler, counting presses..."); /system/scheduler/add name="mode-button-scheduler" interval=3s \ + comment=[ :serialize to=json ({ count=1 }) ] \ on-event="/system/script/run mode-button-scheduler;"; } else={ $LogPrint debug $ScriptName ("Updating scheduler mode-button-scheduler..."); - /system/scheduler/set $Scheduler start-time=[ /system/clock/get time ]; + :local Presses (([ :deserialize from=json [ /system/scheduler/get $Scheduler comment ] ]->"count") + 1); + /system/scheduler/set $Scheduler start-time=[ /system/clock/get time ] \ + comment=[ :serialize to=json ({ count=$Presses }) ]; } } do={ :global ExitOnError; $ExitOnError [ :jobname ] $Err;