public override bool HandleAction(IPlugInAPI.strTrigActInfo actionInfo) { try { switch (actionInfo.TANumber) { case ActionRefreshTANumber: if (actionInfo.DataIn != null) { var refreshDeviceAction = ObjectSerialize.DeSerializeFromBytes(actionInfo.DataIn) as RefreshDeviceAction; if ((refreshDeviceAction != null) && (refreshDeviceAction.DeviceRefId != 0)) { if (ImportDeviceFromDB(refreshDeviceAction.DeviceRefId)) { return(true); } } } Trace.TraceWarning(Invariant($"Failed to execute action with Device not Found")); return(false); default: return(base.HandleAction(actionInfo)); } } catch (Exception ex) { Trace.TraceWarning(Invariant($"Failed to execute action with {ex.GetFullMessage()}")); return(false); } }
public override bool ActionConfigured(IPlugInAPI.strTrigActInfo actionInfo) { try { switch (actionInfo.TANumber) { case ActionTakeSnapshotsTANumber: if (actionInfo.DataIn != null) { var action = ObjectSerialize.DeSerializeFromBytes(actionInfo.DataIn) as TakeSnapshotAction; return(action != null && action.IsValid()); } return(false); default: return(base.ActionConfigured(actionInfo)); } } catch (Exception ex) { Trace.TraceError(Invariant($"Failed to ActionConfigured with {ex.GetFullMessage()}")); return(false); } }
public override bool ActionReferencesDevice(IPlugInAPI.strTrigActInfo actionInfo, int deviceId) { try { switch (actionInfo.TANumber) { case ActionTakeSnapshotsTANumber: if (actionInfo.DataIn != null) { var action = ObjectSerialize.DeSerializeFromBytes(actionInfo.DataIn) as TakeSnapshotAction; if ((action != null)) { CameraManager cameraManager = GetCameraManager(action.Id); if (cameraManager != null) { return(cameraManager.HasDevice(deviceId)); } } } return(false); default: return(false); } } catch (Exception ex) { Trace.TraceError(Invariant($"Failed to give Action Name with {ex.GetFullMessage()}")); throw; } }
public IPlugInAPI.strMultiReturn GetRefreshActionPostUI([AllowNull] NameValueCollection postData, IPlugInAPI.strTrigActInfo actionInfo) { IPlugInAPI.strMultiReturn result = default; result.DataOut = actionInfo.DataIn; result.TrigActInfo = actionInfo; result.sResult = string.Empty; if (postData != null && postData.Count > 0) { RefreshDeviceAction action = (actionInfo.DataIn != null) ? (RefreshDeviceAction)ObjectSerialize.DeSerializeFromBytes(actionInfo.DataIn) : new RefreshDeviceAction(); foreach (var pair in postData) { string text = Convert.ToString(pair); if (!string.IsNullOrWhiteSpace(text) && text.StartsWith(RefreshActionUIDropDownName)) { action.DeviceRefId = Convert.ToInt32(postData[text]); } } result.DataOut = ObjectSerialize.SerializeToBytes(action); } return(result); }
public override string ActionFormatUI(IPlugInAPI.strTrigActInfo actionInfo) { try { switch (actionInfo.TANumber) { case ActionRefreshTANumber: if (actionInfo.DataIn != null) { var refreshDeviceAction = ObjectSerialize.DeSerializeFromBytes(actionInfo.DataIn) as RefreshDeviceAction; if ((refreshDeviceAction != null) && (refreshDeviceAction.DeviceRefId != 0)) { HSHelper hSHelper = new HSHelper(HS); return(Invariant($"Refresh {hSHelper.GetName(refreshDeviceAction.DeviceRefId)} from Influx DB")); } } return(Invariant($"{PlugInData.PlugInName} Unknown Device Import Refresh")); default: return(base.ActionFormatUI(actionInfo)); } } catch (Exception ex) { Trace.TraceError(Invariant($"Failed to ActionFormatUI with {ex.GetFullMessage()}")); throw; } }
public override bool ActionConfigured(IPlugInAPI.strTrigActInfo actionInfo) { try { switch (actionInfo.TANumber) { case ActionRefreshTANumber: if (actionInfo.DataIn != null) { RefreshDeviceAction refreshDeviceAction = ObjectSerialize.DeSerializeFromBytes(actionInfo.DataIn) as RefreshDeviceAction; if ((refreshDeviceAction != null) && (refreshDeviceAction.DeviceRefId != 0)) { return(HS.GetDeviceByRef(refreshDeviceAction.DeviceRefId) != null); } } return(false); default: return(base.ActionConfigured(actionInfo)); } } catch (Exception ex) { Trace.TraceError(Invariant($"Failed to ActionConfigured with {ex.GetFullMessage()}")); return(false); } }
public override bool HandleAction(IPlugInAPI.strTrigActInfo actionInfo) { using (var stopTokenSource = new CancellationTokenSource()) { try { switch (actionInfo.TANumber) { case ActionChromecastCastTANumber: if (actionInfo.DataIn != null) { var action = ObjectSerialize.DeSerializeFromBytes(actionInfo.DataIn) as ChromecastCastAction; if ((action != null) && (action.IsValid())) { if (pluginConfig.Devices.TryGetValue(action.ChromecastDeviceId, out var device)) { using (var combinedStopTokenSource = CancellationTokenSource.CreateLinkedTokenSource(stopTokenSource.Token, ShutdownCancellationToken)) { stopTokenSource.CancelAfter(60 * 1000); var chromecast = new SimpleChromecast(device, new System.Uri(action.Url), action.ContentType, action.Live); chromecast.Play(false, combinedStopTokenSource.Token).Wait(); return(true); } } } } Trace.TraceWarning(Invariant($"Failed to execute action with invalid action")); return(false); default: return(base.HandleAction(actionInfo)); } } catch (TaskCanceledException ex) { if (stopTokenSource.IsCancellationRequested) { Trace.TraceWarning(Invariant($"Failed to execute action with timeout Error: {ex.GetFullMessage()}")); } else { Trace.TraceWarning(Invariant($"Failed to execute action with: {ex.GetFullMessage()}")); } return(false); } catch (Exception ex) { Trace.TraceWarning(Invariant($"Failed to execute action with {ex.GetFullMessage()}")); return(false); } } }
public string GetRefreshActionUI(string uniqueControlId, IPlugInAPI.strTrigActInfo actionInfo) { StringBuilder stb = new StringBuilder(); var currentDevices = GetCurrentDeviceImportDevices(); RefreshDeviceAction refreshDeviceAction = ObjectSerialize.DeSerializeFromBytes(actionInfo.DataIn) as RefreshDeviceAction; string selection = string.Empty; if (refreshDeviceAction != null) { selection = refreshDeviceAction.DeviceRefId.ToString(CultureInfo.InvariantCulture); } stb.Append(FormDropDown(RefreshActionUIDropDownName + uniqueControlId, currentDevices, selection, 400, string.Empty, true, "Events")); return(stb.ToString()); }
public void AddHikvisionIsapiCameraProperty(CameraProperty cameraProperty) { using (var scopedLock = configLock.WriterLock()) { hikvisionIsapiCameraProperties[cameraProperty.Id] = cameraProperty; SetValue(nameof(cameraProperty.Name), cameraProperty.Name, cameraProperty.Id); SetValue(nameof(cameraProperty.StringValues), ObjectSerialize.SerializeToString(cameraProperty.StringValues.ToList()), cameraProperty.Id); SetValue(nameof(cameraProperty.UrlPath), cameraProperty.UrlPath, cameraProperty.Id); SetValue(nameof(cameraProperty.XPathForGet.Path.Expression), cameraProperty.XPathForGet.Path.Expression, cameraProperty.Id); SetValue(HikvisionIsapiCameraPropertyIds, hikvisionIsapiCameraProperties.Keys.Aggregate((x, y) => x + HikvisionIsapiCameraPropertyIdsSeparator + y)); // recreate cameras RecreateHikvisionIsapiCameras(); } }
public override string ActionFormatUI(IPlugInAPI.strTrigActInfo actionInfo) { try { switch (actionInfo.TANumber) { case ActionTakeSnapshotsTANumber: if (actionInfo.DataIn != null) { var action = ObjectSerialize.DeSerializeFromBytes(actionInfo.DataIn) as TakeSnapshotAction; if (action != null) { StringBuilder stringBuilder = new StringBuilder(); stringBuilder.Append(@"Take snapshots for "); stringBuilder.Append(action.TimeSpan); stringBuilder.Append(" at interval of "); stringBuilder.Append(action.Interval); stringBuilder.Append(" on "); if (pluginConfig.AllCameras.TryGetValue(action.Id, out var device)) { stringBuilder.Append(device.Name); } else { stringBuilder.Append(@"Unknown"); } return(stringBuilder.ToString()); } } return(Invariant($"{PluginData.PlugInName} Unknown action")); default: return(base.ActionFormatUI(actionInfo)); } } catch (Exception ex) { Trace.TraceError(Invariant($"Failed to ActionFormatUI with {ex.GetFullMessage()}")); throw; } }
public override string ActionFormatUI(IPlugInAPI.strTrigActInfo actionInfo) { try { switch (actionInfo.TANumber) { case ActionChromecastCastTANumber: if (actionInfo.DataIn != null) { var action = ObjectSerialize.DeSerializeFromBytes(actionInfo.DataIn) as ChromecastCastAction; if (action != null) { StringBuilder stringBuilder = new StringBuilder(); stringBuilder.Append(@"Play "); stringBuilder.Append(action.Url ?? string.Empty); stringBuilder.Append(" on "); if ((action != null) && pluginConfig.Devices.TryGetValue(action.ChromecastDeviceId, out var device)) { stringBuilder.Append(device.Name); } else { stringBuilder.Append(@"Unknown"); } return(stringBuilder.ToString()); } } return(Invariant($"{PluginData.PlugInName} Unknown Chromecast play")); default: return(base.ActionFormatUI(actionInfo)); } } catch (Exception ex) { Trace.TraceError(Invariant($"Failed to ActionFormatUI with {ex.GetFullMessage()}")); throw; } }
public override bool HandleAction(IPlugInAPI.strTrigActInfo actionInfo) { try { switch (actionInfo.TANumber) { case ActionTakeSnapshotsTANumber: if (actionInfo.DataIn != null) { var action = ObjectSerialize.DeSerializeFromBytes(actionInfo.DataIn) as TakeSnapshotAction; if ((action != null) && (action.IsValid())) { CameraManager cameraManager = GetCameraManager(action.Id); if (cameraManager != null) { Task.Run(() => TakeSnapshots(action.TimeSpan, action.Interval, cameraManager)); return(true); } } } Trace.TraceWarning(Invariant($"Failed to execute action with invalid action")); return(false); default: return(base.HandleAction(actionInfo)); } } catch (TaskCanceledException ex) { Trace.TraceWarning(Invariant($"Failed to execute action with: {ex.GetFullMessage()}")); return(false); } catch (Exception ex) { Trace.TraceWarning(Invariant($"Failed to execute action with {ex.GetFullMessage()}")); return(false); } }
public override bool ActionReferencesDevice(IPlugInAPI.strTrigActInfo actionInfo, int deviceId) { try { switch (actionInfo.TANumber) { case ActionRefreshTANumber: if (actionInfo.DataIn != null) { var refreshDeviceAction = ObjectSerialize.DeSerializeFromBytes(actionInfo.DataIn) as RefreshDeviceAction; return((refreshDeviceAction != null) && (refreshDeviceAction.DeviceRefId == deviceId)); } return(false); default: return(false); } } catch (Exception ex) { Trace.TraceError(Invariant($"Failed to ActionReferencesDevice with {ex.GetFullMessage()}")); return(false); } }
private void LoadHikvisionIsapiCameraProperties() { string cameraPropertiesIdsConcatString = GetValue(HikvisionIsapiCameraPropertyIds, string.Empty); var cameraPropertiesIds = cameraPropertiesIdsConcatString.Split(idsSeparator); foreach (var cameraPropertyId in cameraPropertiesIds) { if (string.IsNullOrWhiteSpace(cameraPropertyId)) { continue; } try { hikvisionIsapiCameraProperties.Add(cameraPropertyId, new CameraProperty(cameraPropertyId, GetValue(nameof(CameraProperty.Name), string.Empty, cameraPropertyId), GetValue(nameof(CameraProperty.UrlPath), string.Empty, cameraPropertyId), GetValue(nameof(CameraProperty.XPathForGet.Path.Expression), string.Empty, cameraPropertyId), ObjectSerialize.DeSerializeToObject <List <string> >(GetValue(nameof(CameraProperty.StringValues), string.Empty, cameraPropertyId))?.ToImmutableSortedSet())); } catch (Exception ex) { Trace.TraceError(Invariant($"Failed to read config for {cameraPropertyId} with {ExceptionHelper.GetFullMessage(ex)}")); } } }