From 1fb5d3e5ee77a266f12a5a807ed9ae9733d4e0b1 Mon Sep 17 00:00:00 2001 From: Andrew Welker Date: Mon, 9 Feb 2026 08:09:18 -0600 Subject: [PATCH] fix: make registering for push schedule updates optional The default config for a Fusion room will now NOT subscribe for Fusion schedule push updates unless explicitly requested. --- .../Fusion/IEssentialsRoomFusionController.cs | 58 +++++++++++-------- ...alsRoomFusionControllerPropertiesConfig.cs | 7 +++ 2 files changed, 40 insertions(+), 25 deletions(-) diff --git a/src/PepperDash.Essentials.Core/Fusion/IEssentialsRoomFusionController.cs b/src/PepperDash.Essentials.Core/Fusion/IEssentialsRoomFusionController.cs index 308e5c12..9364a58d 100644 --- a/src/PepperDash.Essentials.Core/Fusion/IEssentialsRoomFusionController.cs +++ b/src/PepperDash.Essentials.Core/Fusion/IEssentialsRoomFusionController.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Linq; using System.Text; +using System.Threading.Tasks; using System.Timers; using Crestron.SimplSharp; using Crestron.SimplSharp.CrestronIO; @@ -698,18 +699,26 @@ namespace PepperDash.Essentials.Core.Fusion /// protected void FusionRoom_OnlineStatusChange(GenericBase currentDevice, OnlineOfflineEventArgs args) { - if (args.DeviceOnLine) + if (!args.DeviceOnLine) { - CrestronInvoke.BeginInvoke((o) => - { - CrestronEnvironment.Sleep(200); + return; + } - // Send Push Notification Action request: + if (!_config.EnableSchedulePushNotifications) + { + return; + } - const string requestId = "InitialPushRequest"; + Task.Run(() => + { + // CrestronEnvironment.Sleep(200); + + // Send Push Notification Action request: + + const string requestId = "InitialPushRequest"; - var actionRequest = + var actionRequest = string.Format("\n{0}\n", requestId) + "RegisterPushModel\n" + "\n" + @@ -734,27 +743,26 @@ namespace PepperDash.Essentials.Core.Fusion "\n" + "\n"; - Debug.LogMessage(LogEventLevel.Verbose, this, "Sending Fusion ActionRequest: \n{0}", actionRequest); + Debug.LogMessage(LogEventLevel.Verbose, this, "Sending Fusion ActionRequest: \n{0}", actionRequest); - FusionRoom.ExtenderFusionRoomDataReservedSigs.ActionQuery.StringValue = actionRequest; + FusionRoom.ExtenderFusionRoomDataReservedSigs.ActionQuery.StringValue = actionRequest; - GetCustomProperties(); + GetCustomProperties(); - // Request current Fusion Server Time - RequestLocalDateTime(null); + // Request current Fusion Server Time + RequestLocalDateTime(null); - // Setup timer to request time daily - if (_dailyTimeRequestTimer != null && !_dailyTimeRequestTimer.Disposed) - { - _dailyTimeRequestTimer.Stop(); - _dailyTimeRequestTimer.Dispose(); - } + // Setup timer to request time daily + if (_dailyTimeRequestTimer != null && !_dailyTimeRequestTimer.Disposed) + { + _dailyTimeRequestTimer.Stop(); + _dailyTimeRequestTimer.Dispose(); + } - _dailyTimeRequestTimer = new CTimer(RequestLocalDateTime, null, 86400000, 86400000); + _dailyTimeRequestTimer = new CTimer(RequestLocalDateTime, null, 86400000, 86400000); - _dailyTimeRequestTimer.Reset(86400000, 86400000); - }); - } + _dailyTimeRequestTimer.Reset(86400000, 86400000); + }); } /// @@ -785,7 +793,7 @@ namespace PepperDash.Essentials.Core.Fusion var requestTest = string.Format( - "FullSchedleRequest{0}{1}24", + "FullScheduleRequest{0}{1}24", RoomGuid, currentTime); Debug.LogMessage(LogEventLevel.Verbose, this, "Sending Fusion ScheduleQuery: \n{0}", requestTest); @@ -960,7 +968,7 @@ namespace PepperDash.Essentials.Core.Fusion select parameter.Attributes into attributes where attributes["ID"].Value == "Registered" - select Int32.Parse(attributes["Value"].Value)) + select int.Parse(attributes["Value"].Value)) { switch (isRegistered) { @@ -1112,7 +1120,7 @@ namespace PepperDash.Essentials.Core.Fusion protected void FusionRoomSchedule_DeviceExtenderSigChange(DeviceExtender currentDeviceExtender, SigEventArgs args) { - Debug.LogMessage(LogEventLevel.Verbose, this, "Scehdule Response Event: {0}\n Sig: {1}\nFusionResponse:\n{2}", args.Event, + Debug.LogMessage(LogEventLevel.Verbose, this, "Schedule Response Event: {0}\n Sig: {1}\nFusionResponse:\n{2}", args.Event, args.Sig.Name, args.Sig.StringValue); diff --git a/src/PepperDash.Essentials.Core/Fusion/IEssentialsRoomFusionControllerPropertiesConfig.cs b/src/PepperDash.Essentials.Core/Fusion/IEssentialsRoomFusionControllerPropertiesConfig.cs index 98234e61..2be30b08 100644 --- a/src/PepperDash.Essentials.Core/Fusion/IEssentialsRoomFusionControllerPropertiesConfig.cs +++ b/src/PepperDash.Essentials.Core/Fusion/IEssentialsRoomFusionControllerPropertiesConfig.cs @@ -75,4 +75,11 @@ public class IEssentialsRoomFusionControllerPropertiesConfig /// [JsonProperty("helpRequestTimeoutMs")] public int HelpRequestTimeoutMs { get; set; } = 30000; + + /// + /// Gets or sets whether to enable schedule push notifications + /// + /// Defaults to false to skip getting schedule unless required + [JsonProperty("enableSchedulePushNotifications")] + public bool EnableSchedulePushNotifications { get; set; } = false; } \ No newline at end of file