Пример #1
0
        public async Task QueryCameraInfo(iCamListener iCamListener)
        {
            var icamClient = new RestClient(string.Format("http://{0}", iCamListener.RemoteEndPoint.Address.ToString()));
            var request    = new RestRequest("caminfo.json", Method.GET);
            var response   = await icamClient.ExecuteTaskAsync(request);

            if (response.StatusCode == System.Net.HttpStatusCode.OK)
            {
                try
                {
                    var camInfo = DeserializeObject(response.Content);
                    if (camInfo != null)
                    {
                        await SendCameraInfo(iCamListener.DeviceId, camInfo);
                    }
                }
                catch
                {
                    // Something happened, now what?
                }
            }
        }
Пример #2
0
        protected override void PrepareDevices()
        {
            var configurationService = new ConfigurationService(Authorize.SessionToken);

            var filters = new List <FilterModel>();

            filters.Add(new FilterModel {
                PropertyName = "CameraAdapterType", Operation = Gateway.Models.Shared.Enums.Operation.Equals, Value = CameraAdapterType.iCamClient
            });
            filters.Add(new FilterModel {
                PropertyName = "IsEnabled", Operation = Gateway.Models.Shared.Enums.Operation.Equals, Value = "1"
            });
            filters.Add(new FilterModel {
                PropertyName = "CameraConnectionType", Operation = Gateway.Models.Shared.Enums.Operation.Equals, Value = CameraConnectionType.Tcp
            });
            filters.Add(new FilterModel {
                PropertyName = "ConnectToHost", Operation = Gateway.Models.Shared.Enums.Operation.Equals, Value = "0"
            });

            var devices = configurationService.GetCameraPaginatedList(filters, Gateway.Models.Shared.Enums.FilterJoin.And, true, "ID", 1, 1000000);


            foreach (var device in devices.Models)
            {
                var config = JsonConvert.DeserializeObject <dynamic>(device.ConfigJson);
                var key    = string.Format("{0}:{1}", config.Ip, config.Port);

                if (!_iCamCollection.Keys.Contains(key))
                {
                    var camListener = new iCamListener(device.ID, device.FriendlyName, (string)config.Ip, (int)config.Port);
                    camListener.iCamEventReceived += OnICamEventReceived;

                    _iCamCollection.TryAdd(key, camListener);
                }
            }
        }
Пример #3
0
        public async Task PingCamera(iCamListener iCamListener)
        {
            using (var ping = new Ping())
            {
                var pingReply = await ping.SendPingAsync(iCamListener.RemoteEndPoint.Address.ToString());

                if (pingReply.Status == IPStatus.Success)
                {
                    iCamListener.CameraConnectivity = (pingReply.RoundtripTime <= 500) ? CameraStatusType.Operational : CameraStatusType.Intermittent;
                }
                else
                {
                    iCamListener.CameraConnectivity = CameraStatusType.Offline;
                }

                var monitorService = new MonitorService(Authorize.SessionToken);
                monitorService.AddCameraStatus(
                    new CameraStatusModel
                {
                    DeviceID         = iCamListener.DeviceId,
                    CameraStatusType = iCamListener.CameraConnectivity
                });
            }
        }