示例#1
0
        public VSPair AddVSPair(double Value,
                                string Status,
                                ePairControlUse ControlUse,
                                string Graphic = null,
                                ePairStatusControl Status_Control = ePairStatusControl.Both
                                )
        {
            var svPair = new VSPair(Status_Control)
            {
                PairType      = VSVGPairType.SingleValue,
                Value         = Value,
                Status        = Status,
                ControlUse    = ControlUse,
                Render        = Enums.CAPIControlType.Button,
                IncludeValues = true
            };

            bool ret = hs.DeviceVSP_AddPair(RefId, svPair);

            if (Graphic != null)
            {
                var vgPair = new VGPair();
                vgPair.PairType  = VSVGPairType.SingleValue;
                vgPair.Set_Value = Value;
                vgPair.Graphic   = Graphic;
                ret = hs.DeviceVGP_AddPair(RefId, vgPair);
            }
            return(svPair);
        }
示例#2
0
 public virtual Task HandleCommand(IHSApplication HS,
                                   CameraBase camera,
                                   string stringValue,
                                   double value,
                                   ePairControlUse control,
                                   CancellationToken token)
 {
     return(Task.CompletedTask);
 }
示例#3
0
        public override Task HandleCommand(IHSApplication HS,
                                           CameraBase camera,
                                           [AllowNull] string stringValue,
                                           double value,
                                           ePairControlUse control,
                                           CancellationToken token)
        {
            var hikVisionCamera = (HikvisionIsapiCamera)camera;

            return(hikVisionCamera.Put(Property, stringValue ?? string.Empty));
        }
        public override Task HandleCommand(IHSApplication HS,
                                           CameraBase baseCamera,
                                           string stringValue,
                                           double value,
                                           ePairControlUse control,
                                           CancellationToken token)
        {
            var camera = (HikvisionIsapiCamera)baseCamera;

            switch ((Commands)value)
            {
            case Commands.DownloadVideos:
                camera.StartVideoDownload();
                break;

            case Commands.CancelDownloadVideos:
                camera.CancelVideoDownload();
                break;

            case Commands.Reboot:
                return(camera.Reboot());

            case Commands.RequestKeyFrameTrack1:
                return(camera.RequestKeyFrame(HikvisionIsapiCamera.Track1));

            case Commands.RequestKeyFrameTrack2:
                return(camera.RequestKeyFrame(HikvisionIsapiCamera.Track2));

            case Commands.StartRecordingTrack1:
                return(camera.StartRecording(HikvisionIsapiCamera.Track1));

            case Commands.StartRecordingTrack2:
                return(camera.StartRecording(HikvisionIsapiCamera.Track2));

            case Commands.StopRecordingTrack1:
                return(camera.StopRecording(HikvisionIsapiCamera.Track1));

            case Commands.StopRecordingTrack2:
                return(camera.StopRecording(HikvisionIsapiCamera.Track2));

            case Commands.TakeSnapshotTrack1:
                return(TakeSnapshot(camera, HikvisionIsapiCamera.Track1));

            case Commands.TakeSnapshotTrack2:
                return(TakeSnapshot(camera, HikvisionIsapiCamera.Track2));

            case Commands.Poll:
                return(camera.RefreshProperties());
            }

            return(Task.CompletedTask);
        }
示例#5
0
        public async Task HandleCommand(DeviceIdentifier deviceIdentifier, CancellationToken token,
                                        MPowerConnector connector, double value, ePairControlUse control)
        {
            if (deviceIdentifier.DeviceId != rootDeviceId)
            {
                throw new ArgumentException("Invalid Device Identifier");
            }

            if (!currentChildDevices.TryGetValue(deviceIdentifier.Address, out var deviceData))
            {
                throw new HspiException(Invariant($"{deviceIdentifier.Address} Not Found."));
            }

            await deviceData.HandleCommand(connector, token, value, control).ConfigureAwait(false);
        }
示例#6
0
        public override Task HandleCommand(IHSApplication HS,
                                           CameraBase baseCamera,
                                           string stringValue,
                                           double value,
                                           ePairControlUse control,
                                           CancellationToken token)
        {
            var camera = (OnvifCamera)baseCamera;

            switch ((Commands)value)
            {
            case Commands.Reboot:
                return(camera.Reboot());

            case Commands.TakeSnapshot:
                return(camera.TakeSnapshot());
            }

            return(Task.CompletedTask);
        }
示例#7
0
 public VSPair AddVSTemperaturePair(bool C,
                                    double Start                      = 0,
                                    double End                        = 35,
                                    string Suffix                     = null,
                                    int RangeStatusDecimals           = 0,
                                    ePairControlUse ControlUse        = ePairControlUse.Not_Specified,
                                    CAPIControlType ControlType       = CAPIControlType.ValuesRange,
                                    string Graphic                    = "/images/HomeSeer/status/Thermometer-50.png",
                                    ePairStatusControl Status_Control = ePairStatusControl.Both
                                    )
 {
     return(AddVSRangePair(Start,
                           End,
                           Suffix: Suffix ?? (C ? " °C" : " °F"),
                           Graphic: Graphic,
                           RangeStatusDecimals: RangeStatusDecimals,
                           ControlUse: ControlUse,
                           ControlType: ControlType,
                           Status_Control: Status_Control
                           ));
 }
示例#8
0
        public VSPair AddVSRangePair(double Start,
                                     double End,
                                     string Prefix                     = "",
                                     string Suffix                     = "",
                                     int RangeStatusDecimals           = 0,
                                     ePairControlUse ControlUse        = ePairControlUse.Not_Specified,
                                     CAPIControlType ControlType       = CAPIControlType.ValuesRange,
                                     string Graphic                    = null,
                                     ePairStatusControl Status_Control = ePairStatusControl.Both
                                     )
        {
            var svPair = new VSPair(Status_Control)
            {
                PairType            = VSVGPairType.Range,
                RangeStart          = Start,
                RangeEnd            = End,
                ControlUse          = ControlUse,
                Render              = ControlType,
                IncludeValues       = true,
                RangeStatusPrefix   = Prefix,
                RangeStatusSuffix   = Suffix,
                RangeStatusDecimals = RangeStatusDecimals
            };

            bool ret = hs.DeviceVSP_AddPair(RefId, svPair);

            if (Graphic != null)
            {
                var vgPair = new VGPair();
                vgPair.PairType   = VSVGPairType.Range;
                vgPair.RangeStart = Start;
                vgPair.RangeEnd   = End;
                vgPair.Graphic    = Graphic;
                ret = hs.DeviceVGP_AddPair(RefId, vgPair);
            }
            return(svPair);
        }
        public override Task HandleCommand(MPowerConnector connector, CancellationToken token, double value, ePairControlUse control)
        {
            bool?output = null;

            if (control == ePairControlUse._Off)
            {
                output = false;
            }
            else if (control == ePairControlUse._On)
            {
                output = true;
            }
            else if (value == OffValue)
            {
                output = false;
            }
            else if (value == OnValue)
            {
                output = true;
            }

            if (output.HasValue)
            {
                return(connector.UpdateOutput(Port, output.Value, token));
            }
            else
            {
                return(Task.CompletedTask);
            }
        }
示例#10
0
        public async Task HandleCommand(DeviceIdentifier deviceIdentifier, CameraBase camera, string stringValue, double value, ePairControlUse control)
        {
            if (deviceIdentifier.CameraId != CameraSettings.Id)
            {
                throw new ArgumentException("Invalid Device Identifier");
            }

            DeviceDataBase deviceData;

            using (var sync = await dataLock.ReaderLockAsync().ConfigureAwait(false))
            {
                if (!devices.TryGetValue(deviceIdentifier.Address, out deviceData))
                {
                    throw new HspiException(Invariant($"{deviceIdentifier.Address} Not Found."));
                }
            }

            await deviceData.HandleCommand(HS, camera, stringValue, value, control, cancellationToken).ConfigureAwait(false);
        }
示例#11
0
        public async Task HandleCommand(DeviceIdentifier deviceIdentifier, string stringValue, double value, ePairControlUse control)
        {
            if (deviceIdentifier.CameraId != CameraSettings.Id)
            {
                throw new ArgumentException("Invalid Device Identifier", nameof(deviceIdentifier));
            }

            await rootDeviceData.HandleCommand(deviceIdentifier, camera, stringValue, value, control).ConfigureAwait(false);
        }
示例#12
0
 public virtual Task HandleCommand(MPowerConnector connector, CancellationToken token,
                                   double value, ePairControlUse control) => throw new NotImplementedException();
示例#13
0
        public async Task HandleCommand(DeviceIdentifier deviceIdentifier, double value, ePairControlUse control)
        {
            if (deviceIdentifier.DeviceId != Device.Id)
            {
                throw new ArgumentException("Invalid Device Identifier");
            }

            // This function runs in separate thread than main run

            MPowerConnector connectorCopy;
            await rootDeviceDataLock.WaitAsync(Token);

            try
            {
                connectorCopy = connector;
                if (connectorCopy == null)
                {
                    throw new HspiException(Invariant($"No connection to Device for {Device.DeviceIP}"));
                }
                await rootDeviceData.HandleCommand(deviceIdentifier, Token, connectorCopy, value, control);
            }
            finally
            {
                rootDeviceDataLock.Release();
            }

            await connectorCopy.UpdateAllSensorData(Token);
        }
        public override Task HandleCommand(MPowerConnector connector, CancellationToken token, double value, ePairControlUse control)
        {
            bool output = false;

            if (control == ePairControlUse._Off)
            {
                output = false;
            }
            else if (control == ePairControlUse._On)
            {
                output = true;
            }
            else if (value == OffValue)
            {
                output = false;
            }
            else if (value == OnValue)
            {
                output = true;
            }

            return(connector.UpdateOutput(Port, output, token));
        }
示例#15
0
 public virtual Task HandleCommand(AirVisualNodeConnector connector, double value,
                                   ePairControlUse control, CancellationToken token) => throw new NotImplementedException();