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? } } }
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); } } }
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 }); } }