/// <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);
                    }
                }
            }
        }
Exemplo n.º 2
0
        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;
        }
Exemplo n.º 3
0
        /// <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);
        }
Exemplo n.º 4
0
        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 = "设备离线,获取失败";
            }
        }
Exemplo n.º 5
0
        /// <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
        }
Exemplo n.º 6
0
        /// <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
            }
        }