Example #1
0
        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);
            }
        }
Example #2
0
        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);
            }
        }
Example #3
0
        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;
            }
        }
Example #4
0
        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);
        }
Example #5
0
        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;
            }
        }
Example #6
0
        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);
            }
        }
Example #7
0
        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);
                }
            }
        }
Example #8
0
        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();
            }
        }
Example #10
0
        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;
            }
        }
Example #11
0
        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;
            }
        }
Example #12
0
        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);
            }
        }
Example #13
0
        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)}"));
                }
            }
        }