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.
This commit is contained in:
Andrew Welker
2026-02-09 08:09:18 -06:00
parent c0971a4f8e
commit 1fb5d3e5ee
2 changed files with 40 additions and 25 deletions

View File

@@ -2,6 +2,7 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks;
using System.Timers; using System.Timers;
using Crestron.SimplSharp; using Crestron.SimplSharp;
using Crestron.SimplSharp.CrestronIO; using Crestron.SimplSharp.CrestronIO;
@@ -698,18 +699,26 @@ namespace PepperDash.Essentials.Core.Fusion
/// <param name="args"></param> /// <param name="args"></param>
protected void FusionRoom_OnlineStatusChange(GenericBase currentDevice, OnlineOfflineEventArgs args) protected void FusionRoom_OnlineStatusChange(GenericBase currentDevice, OnlineOfflineEventArgs args)
{ {
if (args.DeviceOnLine) if (!args.DeviceOnLine)
{ {
CrestronInvoke.BeginInvoke((o) => return;
{ }
CrestronEnvironment.Sleep(200);
// 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("<RequestAction>\n<RequestID>{0}</RequestID>\n", requestId) + string.Format("<RequestAction>\n<RequestID>{0}</RequestID>\n", requestId) +
"<ActionID>RegisterPushModel</ActionID>\n" + "<ActionID>RegisterPushModel</ActionID>\n" +
"<Parameters>\n" + "<Parameters>\n" +
@@ -734,27 +743,26 @@ namespace PepperDash.Essentials.Core.Fusion
"</Parameters>\n" + "</Parameters>\n" +
"</RequestAction>\n"; "</RequestAction>\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 // Request current Fusion Server Time
RequestLocalDateTime(null); RequestLocalDateTime(null);
// Setup timer to request time daily // Setup timer to request time daily
if (_dailyTimeRequestTimer != null && !_dailyTimeRequestTimer.Disposed) if (_dailyTimeRequestTimer != null && !_dailyTimeRequestTimer.Disposed)
{ {
_dailyTimeRequestTimer.Stop(); _dailyTimeRequestTimer.Stop();
_dailyTimeRequestTimer.Dispose(); _dailyTimeRequestTimer.Dispose();
} }
_dailyTimeRequestTimer = new CTimer(RequestLocalDateTime, null, 86400000, 86400000); _dailyTimeRequestTimer = new CTimer(RequestLocalDateTime, null, 86400000, 86400000);
_dailyTimeRequestTimer.Reset(86400000, 86400000); _dailyTimeRequestTimer.Reset(86400000, 86400000);
}); });
}
} }
/// <summary> /// <summary>
@@ -785,7 +793,7 @@ namespace PepperDash.Essentials.Core.Fusion
var requestTest = var requestTest =
string.Format( string.Format(
"<RequestSchedule><RequestID>FullSchedleRequest</RequestID><RoomID>{0}</RoomID><Start>{1}</Start><HourSpan>24</HourSpan></RequestSchedule>", "<RequestSchedule><RequestID>FullScheduleRequest</RequestID><RoomID>{0}</RoomID><Start>{1}</Start><HourSpan>24</HourSpan></RequestSchedule>",
RoomGuid, currentTime); RoomGuid, currentTime);
Debug.LogMessage(LogEventLevel.Verbose, this, "Sending Fusion ScheduleQuery: \n{0}", requestTest); Debug.LogMessage(LogEventLevel.Verbose, this, "Sending Fusion ScheduleQuery: \n{0}", requestTest);
@@ -960,7 +968,7 @@ namespace PepperDash.Essentials.Core.Fusion
select parameter.Attributes select parameter.Attributes
into attributes into attributes
where attributes["ID"].Value == "Registered" where attributes["ID"].Value == "Registered"
select Int32.Parse(attributes["Value"].Value)) select int.Parse(attributes["Value"].Value))
{ {
switch (isRegistered) switch (isRegistered)
{ {
@@ -1112,7 +1120,7 @@ namespace PepperDash.Essentials.Core.Fusion
protected void FusionRoomSchedule_DeviceExtenderSigChange(DeviceExtender currentDeviceExtender, protected void FusionRoomSchedule_DeviceExtenderSigChange(DeviceExtender currentDeviceExtender,
SigEventArgs args) 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); args.Sig.Name, args.Sig.StringValue);

View File

@@ -75,4 +75,11 @@ public class IEssentialsRoomFusionControllerPropertiesConfig
/// </summary> /// </summary>
[JsonProperty("helpRequestTimeoutMs")] [JsonProperty("helpRequestTimeoutMs")]
public int HelpRequestTimeoutMs { get; set; } = 30000; public int HelpRequestTimeoutMs { get; set; } = 30000;
/// <summary>
/// Gets or sets whether to enable schedule push notifications
/// </summary>
/// <remarks>Defaults to false to skip getting schedule unless required</remarks>
[JsonProperty("enableSchedulePushNotifications")]
public bool EnableSchedulePushNotifications { get; set; } = false;
} }