/// <summary> /// 更新状态 /// </summary> private void Run() { while (isRunning) { Thread.Sleep(1000); lock (_mutex) { var paras = new SensorDataFuzzyQryPagingParas() { DeviceID = UDG_.DEVICE_ID, ApiTags = UDG_.APITAG_ALARM, Method = 3, TimeAgo = 7, Sort = "DESC", PageSize = 1000, PageIndex = 1 }; var resp = nle_api.GetSensorDatas(paras, m_token); if (resp.IsSuccess()) { var rstObj = resp.ResultObj; var list = rstObj?.DataPoints?.ToList()[0].PointDTO; SensorDatas = new ObservableCollection <SensorDataPointDTO>(list); } } } }
void HistoryData_Loaded(object sender, RoutedEventArgs e) { SDK = new NLECloudAPI(TempInfo.API_HOST); var query2 = new SensorDataFuzzyQryPagingParas() { DeviceID = 9969, ApiTags = "alarm", Method = 2, TimeAgo = 30, Sort = "DESC", PageSize = 1000, PageIndex = 1 }; var qry = SDK.GetSensorDatas(query2, TempInfo.Token); List <SensorDataPointDTO> list = new List <SensorDataPointDTO>(); foreach (var s in qry.ResultObj.DataPoints) { list.AddRange(s.PointDTO); } dgHistory.ItemsSource = list; }
/// <summary> /// 模糊查询传感数据 /// </summary> /// <returns></returns> public ResultMsg <SensorDataInfoDTO> GetSensorDatas(SensorDataFuzzyQryPagingParas query, string token = null) { var result = new ResultMsg <SensorDataInfoDTO>(); var vry = TokenVerify(ref token); if (!vry.IsSuccess()) { vry.CopyTo(result); return(result); } //1、先定义该API接口路径,可以从http://api.nlecloud.com/页面的得知 String apiPath = String.Format("{0}/{1}", mApiHost, NLECloudAPIUrl.DatasOfSensorUrl); //2、根据该API接口 的请求参数中 得知需要创建个URI Parameters String类型参数,所以该参数直接跟在apiPath中 apiPath = apiPath.Replace("{deviceid}", query.DeviceID.ToString());//将API地址中的{gatewayTag}替换成真实设备标识 apiPath += string.Format("?{0}&{1}&{2}&{3}&{4}", "Method=" + query.Method, "TimeAgo=" + query.TimeAgo, "Sort=" + query.Sort, "PageSize=" + query.PageSize, "PageIndex=" + query.PageIndex); apiPath += string.Format("&{0}&{1}&{2}", "ApiTags=" + query.ApiTags, "StartDate=" + query.StartDate, "EndDate=" + query.EndDate); //3、由于调用该API需要Token,所以我们定义了一个通用的对象HttpReqEntity,在AccessToken当成头部请求信息提交过去 HttpReqEntity req = new HttpReqEntity(); req.Method = HttpMethod.GET; req.Headers.Add("AccessToken", token); //4、定义该API接口返回的对象 result = RequestAPIHelper.RequestServer <HttpReqEntity, SensorDataInfoDTO>(apiPath, req); if (result.IsSuccess() && result.ResultObj != null && result.ResultObj.DataPoints != null) { foreach (SensorDataAddDTO p in result.ResultObj.DataPoints) { if (p.PointDTO != null) { foreach (var w in p.PointDTO) { ValueConvertToByteAry(w.Value); } } } } return(result); }
private void CurrentRoomTemperature(object sender, EventArgs e) {//当前室温获取 SensorDataFuzzyQryPagingParas query = new SensorDataFuzzyQryPagingParas() { DeviceID = 113177, ApiTags = "currentTemp" }; if (StateTheQuery.Text == "在线") { SDK = new NLECloudAPI("http://api.nlecloud.com"); var yxh = SDK.GetSensorInfo(113177, "currentTemp", Login.accessToken); room_temperature.Text = yxh.ResultObj.Value.ToString(); } else { room_temperature.Text = "设备离线,获取失败"; } }
/// <summary> /// 执行API测试调用 /// </summary> private static void ExeccuteApiTestCall() { #region -- 项目测试 -- //查询单个项目。===================请修改为自己的项目ID dynamic qry = SDK.GetProjectInfo(projectId, Token); Console.WriteLine("查询单个项目返回JSON:" + Environment.NewLine); Console.WriteLine(SerializeToJson(qry) + Environment.NewLine); //模糊查询项目。===================请修改为自己的查询条件 var query = new ProjectFuzzyQryPagingParas() { PageIndex = 1, PageSize = 20, StartDate = "2009-01-01", EndDate = "2018-06-14", }; qry = SDK.GetProjects(query, Token); Console.WriteLine("模糊查询项目返回JSON:" + Environment.NewLine); Console.WriteLine(SerializeToJson(qry) + Environment.NewLine); //查询项目所有设备的传感器。===================请修改为自己的项目ID qry = SDK.GetProjectSensors(projectId, Token); Console.WriteLine("查询项目所有设备的传感器返回JSON:" + Environment.NewLine); Console.WriteLine(SerializeToJson(qry) + Environment.NewLine); #endregion #region -- 设备测试 -- //批量查询设备最新数据。===================请修改为自己的设备ID串 qry = SDK.GetDevicesDatas(devIds, Token); Console.WriteLine("批量查询设备最新数据返回JSON:" + Environment.NewLine); Console.WriteLine(SerializeToJson(qry) + Environment.NewLine); //批量查询设备的在线状态。===================请修改为自己的设备ID串 qry = SDK.GetDevicesStatus(devIds, Token); Console.WriteLine("批量查询设备的在线状态返回JSON:" + Environment.NewLine); Console.WriteLine(SerializeToJson(qry) + Environment.NewLine); //查询单个设备。===================请修改为自己的设备ID qry = SDK.GetDeviceInfo(deviceId, Token); Console.WriteLine("查询单个设备返回JSON:" + Environment.NewLine); Console.WriteLine(SerializeToJson(qry) + Environment.NewLine); //模糊查询设备 var query1 = new DeviceFuzzyQryPagingParas() { DeviceIds = deviceId.ToString(), PageIndex = 1, PageSize = 20, StartDate = "2009-01-01", EndDate = "2018-06-14", }; qry = SDK.GetDevices(query1, Token); Console.WriteLine("模糊查询设备返回JSON:" + Environment.NewLine); Console.WriteLine(SerializeToJson(qry) + Environment.NewLine); //添加个新设备 var device = new DeviceAddUpdateDTO() { Protocol = 1, IsTrans = true, ProjectIdOrTag = projectId.ToString(), Name = "新添加的设备", Tag = "newDevice2018" }; qry = SDK.AddDevice(device, Token); Console.WriteLine("添加个新设备返回JSON:" + Environment.NewLine); Console.WriteLine(SerializeToJson(qry) + Environment.NewLine); if (qry.IsSuccess() && qry.ResultObj > 0) { var newDeviceId = qry.ResultObj; //更新某个设备 device = new DeviceAddUpdateDTO() { Protocol = 1, IsTrans = true, ProjectIdOrTag = projectId.ToString(), Name = "新添加的设备(更新后)", Tag = "newUpdateDevice" }; qry = SDK.UpdateDevice(newDeviceId, device, Token); Console.WriteLine("更新某个设备返回JSON:" + Environment.NewLine); Console.WriteLine(SerializeToJson(qry) + Environment.NewLine); //删除某个设备 qry = SDK.DeleteDevice(newDeviceId, Token); Console.WriteLine("删除某个设备返回JSON:" + Environment.NewLine); Console.WriteLine(SerializeToJson(qry) + Environment.NewLine); } #endregion #region -- 设备传感器API测试 -- //查询单个传感器。===================请修改为自己的设备ID,传感标识名ApiTag qry = SDK.GetSensorInfo(deviceId, apiTag, Token); Console.WriteLine("查询单个传感器返回JSON:" + Environment.NewLine); Console.WriteLine(SerializeToJson(qry) + Environment.NewLine); //模糊查询传感器。===================请修改为自己的设备ID串 qry = SDK.GetSensors(deviceId, "", Token); Console.WriteLine("模糊查询传感器返回JSON:" + Environment.NewLine); Console.WriteLine(SerializeToJson(qry) + Environment.NewLine); //添加一个新的传感器。===================请修改为自己的设备ID,传感标识名ApiTag var newApiTag = "newsensor"; SensorAddUpdate sensor = new SensorAddUpdate() { ApiTag = newApiTag, DataType = 1, Name = "新的传感器", Unit = "C", }; //注意:创建对象是遵循以下类别创建对象 //传感器:为SensorAddUpdate对象 //执行器:为ActuatorAddUpdate对象 //摄像头:为CameraAddUpdate对象 //这里模拟创建传感SensorAddUpdate对象 qry = SDK.AddSensor <SensorAddUpdate>(deviceId, sensor, Token); Console.WriteLine("添加一个新的传感器返回JSON:" + Environment.NewLine); Console.WriteLine(SerializeToJson(qry) + Environment.NewLine); if (qry.IsSuccess() && qry.ResultObj > 0) { //更新某个传感器。===================请修改为自己的设备ID,传感标识名ApiTag sensor = new SensorAddUpdate() { Name = "新的传感器(更新后)" }; qry = SDK.UpdateSensor <SensorAddUpdate>(deviceId, newApiTag, sensor, Token); Console.WriteLine("更新某个传感器返回JSON:" + Environment.NewLine); Console.WriteLine(SerializeToJson(qry) + Environment.NewLine); //删除某个传感器。===================请修改为自己的设备ID,传感标识名ApiTag qry = SDK.DeleteSensor(deviceId, newApiTag, Token); Console.WriteLine("删除某个传感器返回JSON:" + Environment.NewLine); Console.WriteLine(SerializeToJson(qry) + Environment.NewLine); } #endregion #region -- 传感数据API测试 -- //新增传感数据。===================请修改为自己的设备ID,传感标识名ApiTag var sensorData1 = new SensorDataAddDTO() { ApiTag = apiTag }; sensorData1.PointDTO = new List <SensorDataPointDTO>() { new SensorDataPointDTO() { Value = 3000 }, new SensorDataPointDTO() { Value = 5500 } }; var apiTag2 = "apiTagDemo"; SensorDataAddDTO sensorData2 = new SensorDataAddDTO() { ApiTag = apiTag2 }; sensorData2.PointDTO = new List <SensorDataPointDTO>() { new SensorDataPointDTO() { Value = "dataDemo" } }; var data = new SensorDataListAddDTO(); data.DatasDTO = new List <SensorDataAddDTO>() { sensorData1, sensorData2 }; qry = SDK.AddSensorDatas(deviceId, data, Token); Console.WriteLine("新增传感数据返回JSON:" + Environment.NewLine); Console.WriteLine(SerializeToJson(qry) + Environment.NewLine); //模糊查询传感数据。===================请修改为自己的设备ID,传感标识名ApiTag var query2 = new SensorDataFuzzyQryPagingParas() { DeviceID = deviceId, Method = 6, //TimeAgo = 30, //ApiTags = "m_waterPH,m_waterNTU,m_waterConduct", StartDate = "2018-09-13 12:06:09 ", Sort = "DESC", PageSize = 30, PageIndex = 1 }; System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch(); sw.Start(); qry = SDK.GetSensorDatas(query2, Token); sw.Stop(); var tmp = ((ResultMsg <SensorDataInfoDTO>)qry); if (tmp.IsSuccess() && tmp.ResultObj != null) { } Console.WriteLine("查询传感数据返回JSON:" + Environment.NewLine); Console.WriteLine(SerializeToJson(qry) + Environment.NewLine); //聚合查询传感数据。===================请修改为自己的设备ID,传感标识名ApiTag var query3 = new SensorDataJuHeQryPagingParas() { DeviceID = deviceId, //ApiTags = "nl_temperature,nl_fan", GroupBy = 2, Func = "MAX", StartDate = "2018-01-02 12:06:09" }; sw.Restart(); qry = SDK.GroupingSensorDatas(query3, Token); sw.Stop(); Console.WriteLine("聚合查询传感数据返回JSON:" + Environment.NewLine); Console.WriteLine(SerializeToJson(qry) + Environment.NewLine); #endregion #region -- 命令API测试 -- //发送命令。===================请修改为自己的设备ID,标识名ApiTag,控制值 qry = SDK.Cmds(deviceId, actuatorApiTag, 1, Token); Console.WriteLine("发送命令返回JSON:" + Environment.NewLine); Console.WriteLine(SerializeToJson(qry) + Environment.NewLine); #endregion }
/// <summary> /// 更新状态 /// </summary> private void Run() { while (isRunning) { Thread.Sleep(100); _waitTime++; #region 直接获取单个传感信息,反应很慢 // 获取安防状态,更新视图 //{ // var resp = nle_api.GetSensorInfo(UDG_.DEVICE_ID, UDG_.APITAG_DEFENSE_STATUS, m_token); // if (resp.IsSuccess()) // { // var rstObj = resp.ResultObj; // var val = int.Parse(rstObj.Value.ToString()); // switch (val) // { // case UDG_.DEFENSE_STATUS_OFF: // IsDefense = false; // break; // case UDG_.DEFENSE_STATUS_ON: // IsDefense = true; // break; // default: // break; // } // } //} // 获取报警信号,更新视图 //{ // var resp = nle_api.GetSensorInfo(UDG_.DEVICE_ID, UDG_.APITAG_ALARM, m_token); // if (resp.IsSuccess()) // { // var rstObj = resp.ResultObj; // var val = int.Parse(rstObj.Value.ToString()); // switch (val) // { // case UDG_.ALARM_STATUS_OPEN: // IsBoxOpen = true; // break; // case UDG_.ALARM_STATUS_CLOSE: // IsBoxOpen = false; // break; // case UDG_.ALARM_STATUS_ALARM: // break; // default: // break; // } // } //} #endregion #region 通过获取历史数据来得到第一个数据,反应快 lock (_mutex) { if (_waitTime < WAIT_TIME_MAX) { continue; } _waitTime = 0; // 获取报警信号,更新视图 { var paras = new SensorDataFuzzyQryPagingParas() { DeviceID = UDG_.DEVICE_ID, ApiTags = UDG_.APITAG_ALARM, Method = 1, TimeAgo = 1, Sort = "DESC", PageSize = 1, PageIndex = 1 }; var resp = nle_api.GetSensorDatas(paras, m_token); if (resp.IsSuccess()) { var rstObj = resp.ResultObj; int val; var rst = int.TryParse(rstObj?.DataPoints?.ToArray()[0]?.PointDTO?.ToArray()[0].Value.ToString(), out val); if (rst == true) { switch (val) { case UDG_.ALARM_STATUS_OPEN: IsBoxOpen = true; break; case UDG_.ALARM_STATUS_CLOSE: IsBoxOpen = false; break; case UDG_.ALARM_STATUS_ALARM: break; default: break; } } } } // 获取安防状态,更新视图 { var paras = new SensorDataFuzzyQryPagingParas() { DeviceID = UDG_.DEVICE_ID, ApiTags = UDG_.APITAG_DEFENSE_STATUS, Method = 1, TimeAgo = 1, Sort = "DESC", PageSize = 1, PageIndex = 1 }; var resp = nle_api.GetSensorDatas(paras, m_token); if (resp.IsSuccess()) { var rstObj = resp.ResultObj; int val; var rst = int.TryParse(rstObj?.DataPoints?.ToArray()[0]?.PointDTO?.ToArray()[0].Value.ToString(), out val); if (rst == true) { switch (val) { case UDG_.DEFENSE_STATUS_OFF: IsDefense = false; break; case UDG_.DEFENSE_STATUS_ON: IsDefense = true; break; default: break; } } } } } #endregion } }