private static void updateProperties(IoTDAClient client) { UpdatePropertiesRequest req = new UpdatePropertiesRequest { InstanceId = "1a7ffc5c-d89c-44dd-8265-b1653d951ce0", DeviceId = "", Body = new DevicePropertiesRequest() { Services = JObject.Parse("[{\"properties\":{\"value\":57},\"service_id\":\"Temperature\"}]") } }; try { var resp = client.UpdateProperties(req); Console.WriteLine(resp); } catch (RequestTimeoutException requestTimeoutException) { Console.WriteLine(requestTimeoutException.ErrorMessage); } catch (ServiceResponseException clientRequestException) { Console.WriteLine(clientRequestException.HttpStatusCode); Console.WriteLine(clientRequestException.ErrorCode); Console.WriteLine(clientRequestException.ErrorMsg); } catch (ConnectionException connectionException) { Console.WriteLine(connectionException.ErrorMessage); } }
/// <summary> /// 修改设备属性 /// </summary> public async Task <UpdatePropertiesResponse> UpdatePropertiesAsync(UpdatePropertiesRequest updatePropertiesRequest) { Dictionary <string, string> urlParam = new Dictionary <string, string>(); urlParam.Add("device_id", updatePropertiesRequest.DeviceId.ToString()); string urlPath = HttpUtils.AddUrlPath("/v5/iot/{project_id}/devices/{device_id}/properties", urlParam); SdkRequest request = HttpUtils.InitSdkRequest(urlPath, "application/json", updatePropertiesRequest); HttpResponseMessage response = await DoHttpRequestAsync("PUT", request); return(JsonUtils.DeSerialize <UpdatePropertiesResponse>(response)); }
private void UpdatePointDefineCacheByBz4(Jc_DefInfo Point) { Dictionary <string, object> paramater = new Dictionary <string, object>(); //休眠、检修状态标记 paramater.Add("Bz4", Point.Bz4); //定义改变标记 paramater.Add("DefIsInit", Point.DefIsInit); //修改标记 paramater.Add("InfoState", Point.InfoState); UpdatePropertiesRequest defineCacheUpdatePropertiesRequest = new UpdatePropertiesRequest(); defineCacheUpdatePropertiesRequest.PointID = Point.PointID; defineCacheUpdatePropertiesRequest.UpdateItems = paramater; _b_DefCacheService.UpdateInfo(defineCacheUpdatePropertiesRequest); }
/// <summary> /// 同步老广播系统测点定义 /// </summary> /// <returns></returns> public BasicResponse <bool> SynchronousPoint(SynchronousPointRequest PointDefineRequest) { BasicResponse <bool> response = new BasicResponse <bool>(); try { bool isupdate = false; if (PointDefineRequest.Points != null) { var points = _b_DefCacheService.Get(new B_DefCacheGetByConditionRequest { predicate = b => b.Sysid == (int)SystemEnum.Broadcast }).Data; bool isupdatedb = false;//是否更新数据库,如果只有状态发生改变,则只更新缓存数据;反之需要更新数据库 foreach (DataRow row in PointDefineRequest.Points.Rows) { var point = row["AddNum"].ToString(); //如果存在则比较更新测点信息;如果不存在则插入测点信息 if (points.FirstOrDefault(p => p.Point == point) != null) { Dictionary <string, object> paramater = new Dictionary <string, object>(); var definfo = points.FirstOrDefault(p => p.Point == point); //比较位置是否一致 if (definfo.Wz != row["Wz"].ToString()) { isupdatedb = true; definfo.Wzid = GetPositionId(row["Wz"].ToString()); definfo.Wz = row["Wz"].ToString(); paramater.Add("Wzid", GetPositionId(row["Wz"].ToString())); paramater.Add("Wz", row["Wz"].ToString()); } //比较区域是否一致 // 20180606 //var zoneId = row["ZoneId"]; if (row.Table.Columns.Contains("ZoneId") && row["ZoneId"] != null && row["ZoneId"].ToString() != "") { var req = new AreaCacheGetByConditionRequest(); req.Predicate = a => a.Areaid == definfo.Areaid; var res = _areaCacheService.GetAreaCache(req); var areaInfo = res.Data[0]; if (areaInfo.Areaname != row["Groupname"].ToString() || areaInfo.Areadescribe != row["ZoneId"].ToString()) { isupdatedb = true; definfo.Areaid = GetAreaId(row["Groupname"].ToString(), row["ZoneId"].ToString()); definfo.AreaName = row["Groupname"].ToString(); paramater.Add("Areaid", GetAreaId(row["Groupname"].ToString(), row["ZoneId"].ToString())); paramater.Add("AreaName", row["Groupname"].ToString()); paramater.Add("Areadescribe", row["ZoneId"].ToString()); } } else { if (definfo.AreaName != row["Groupname"].ToString()) { isupdatedb = true; definfo.Areaid = GetAreaId(row["Groupname"].ToString()); definfo.AreaName = row["Groupname"].ToString(); paramater.Add("Areaid", GetAreaId(row["Groupname"].ToString())); paramater.Add("AreaName", row["Groupname"].ToString()); } } //数据状态与设备状态不做比较,直接更新 var state = row["State"].ToString(); if (state == "0") { definfo.DataState = 3; definfo.State = 3; paramater.Add("DataState", 3); paramater.Add("State", 3); paramater.Add("Ssz", EnumHelper.GetEnumDescription(DeviceDataState.EquipmentAC)); } else if (state == "1") { definfo.DataState = 49; definfo.State = 3; paramater.Add("DataState", 49); paramater.Add("State", 3); paramater.Add("Ssz", EnumHelper.GetEnumDescription(DeviceDataState.BroadCastInCall)); } else if (state == "2") { definfo.DataState = 0; definfo.State = 0; paramater.Add("DataState", 0); paramater.Add("State", 0); paramater.Add("Ssz", EnumHelper.GetEnumDescription(DeviceDataState.EquipmentInterrupted)); } //比较Mac是否一致 if (definfo.Jckz1 != row["Mac"].ToString()) { isupdatedb = true; definfo.Jckz1 = row["Mac"].ToString(); paramater.Add("Jckz1", row["Mac"].ToString()); } //比较IP是否一致 if (definfo.Jckz2 != row["IP"].ToString()) { isupdatedb = true; definfo.Jckz2 = row["IP"].ToString(); paramater.Add("Jckz2", row["IP"].ToString()); } //比较设备类型是否一致 if (definfo.Bz6 != row["Type"].ToString()) { isupdatedb = true; definfo.Bz6 = row["Type"].ToString(); paramater.Add("Bz6", row["Type"].ToString()); } //更新数据库 if (isupdatedb) { isupdate = true; var _jc_Def = ObjectConverter.Copy <Jc_DefInfo, B_DefModel>(definfo); _repository.UpdateDef(_jc_Def); } //更新数据更新时间,每次调用都更新时间 20180422 paramater.Add("DttStateTime", DateTime.Now); //更新缓存 if (paramater.Count > 0) { UpdatePropertiesRequest updaterequest = new UpdatePropertiesRequest(); updaterequest.PointID = definfo.PointID; updaterequest.UpdateItems = paramater; _b_DefCacheService.UpdateInfo(updaterequest); } } else { var bdev = _devCacheService.GetPointDefineCache(new DeviceDefineCacheGetByConditonRequest { Predicate = dev => dev.Name == "广播主机" }).Data.FirstOrDefault(); if (bdev != null) { Jc_DefInfo bdefinfo = new Jc_DefInfo(); bdefinfo.ID = bdefinfo.PointID = IdHelper.CreateLongId().ToString(); bdefinfo.Wzid = GetPositionId(row["Wz"].ToString()); bdefinfo.Wz = row["Wz"].ToString(); // 20180606 //var zoneId = row["ZoneId"]; if (row.Table.Columns.Contains("ZoneId") && row["ZoneId"] != null && row["ZoneId"].ToString() != "") { bdefinfo.Areaid = GetAreaId(row["Groupname"].ToString(), row["ZoneId"].ToString()); bdefinfo.AreaName = row["Groupname"].ToString(); } else { bdefinfo.Areaid = GetAreaId(row["Groupname"].ToString()); bdefinfo.AreaName = row["Groupname"].ToString(); } bdefinfo.Point = point; bdefinfo.Upflag = "1";//子系统同步测点 bdefinfo.Jckz1 = row["Mac"].ToString(); bdefinfo.Jckz2 = row["IP"].ToString(); bdefinfo.Bz6 = row["Type"].ToString(); bdefinfo.CreateUpdateTime = DateTime.Now; bdefinfo.DeleteTime = DateTime.Parse("1900-01-01 00:00:00"); bdefinfo.Activity = "1"; bdefinfo.InfoState = InfoState.AddNew; bdefinfo.DevPropertyID = 0; bdefinfo.DevProperty = bdev.DevProperty; bdefinfo.Devid = bdev.Devid; bdefinfo.DevName = bdev.Name; bdefinfo.Sysid = (int)SystemEnum.Broadcast; bdefinfo.DttStateTime = DateTime.Now; var bdefinfos = _b_DefCacheService.Get(new B_DefCacheGetByConditionRequest { predicate = b => b.Sysid == (int)SystemEnum.Broadcast }).Data; //if (bdefinfos.Count == 0) //{ // bdefinfo.Fzh = 256; //} //else //{ // int maxstationnum = bdefinfos.Max(o => o.Fzh); // bdefinfo.Fzh = (short)(maxstationnum + 1); //} // 20180605 //生成分站号 var req = new B_DefCacheGetAllRequest(); var res = _b_DefCacheService.GetAll(req); var broadcastPoints = res.Data; short fzh = 0; for (int i = 257; i < 513; i++) { var exist = broadcastPoints.Any(a => a.Fzh == i); if (!exist) { fzh = (short)i; break; } } //var fzh = Convert.ToInt32(point) + 256; if (fzh == 0) { var ret = new BasicResponse <bool>(); ret.Code = 101; ret.Data = false; ret.Message = "广播设备对应分站号已满。"; return(ret); } bdefinfo.Fzh = fzh; isupdate = true; //添加数据库 var _jc_Def = ObjectConverter.Copy <Jc_DefInfo, B_DefModel>(bdefinfo); var resultjc_Def = _repository.AddDef(_jc_Def); //更新缓存 B_DefCacheInsertRequest addbDefCacheRequest = new B_DefCacheInsertRequest(); addbDefCacheRequest.B_DefInfo = bdefinfo; _b_DefCacheService.Insert(addbDefCacheRequest); } } } //判断同步数据是否有删除的测点信息,如果有则同步删除 for (int i = points.Count - 1; i >= 0; i--) { var pointrow = PointDefineRequest.Points.Select("AddNum = '" + points[i].Point + "'"); if (pointrow.Length == 0) { isupdate = true; //删除数据库 _repository.Delete(points[i].ID); //删除缓存 _b_DefCacheService.Delete(new B_DefCacheDeleteRequest { B_DefInfo = points[i] }); } } } if (isupdate) { var saveTime = DateTime.Now; //保存定义更新时间 if (Basic.Framework.Data.PlatRuntime.Items.ContainsKey("_DefUpdateTime")) { Basic.Framework.Data.PlatRuntime.Items["_DefUpdateTime"] = saveTime; } else { Basic.Framework.Data.PlatRuntime.Items.Add("_DefUpdateTime", saveTime); } //保存数据库 ConfigInfo tempConfig = new ConfigInfo(); tempConfig.Name = "defdatetime"; tempConfig.Text = saveTime.ToString("yyyy-MM-dd HH:mm:ss"); tempConfig.Upflag = "0"; ConfigCacheGetByKeyRequest configCacheRequest = new ConfigCacheGetByKeyRequest(); configCacheRequest.Name = "defdatetime"; var result = _configCacheService.GetConfigCacheByKey(configCacheRequest); ConfigInfo tempConfigCache = result.Data; if (tempConfig != null) { tempConfig.ID = tempConfigCache.ID; tempConfig.InfoState = InfoState.Modified; //更新数据库 var req2 = ObjectConverter.Copy <ConfigInfo, ConfigModel>(tempConfig); _configRepository.UpdateConfig(req2); //更新缓存 ConfigCacheUpdateRequest UpdateConfigCacheRequest = new ConfigCacheUpdateRequest(); UpdateConfigCacheRequest.ConfigInfo = tempConfig; _configCacheService.UpdateConfigCahce(UpdateConfigCacheRequest); } } response.Data = true; return(response); } catch (Exception ex) { LogHelper.Error("广播同步定义信息出错!" + ex.Message); response.Data = true; return(response); } }
public BasicResponse PointDefineSaveData() { BasicResponse Result = new BasicResponse(); //修改,根据保存时,置的初始化标记来置初始化标记 B_DefCacheGetAllRequest pointDefineCacheRequest = new B_DefCacheGetAllRequest(); var result = _b_DefCacheService.GetAll(pointDefineCacheRequest); List <Jc_DefInfo> newItems = result.Data.Where(a => a.DefIsInit).ToList(); //保存巡检时,如果设备置了休眠的标记,则将缓存的Bz4更新 20170705 newItems.ForEach(a => { if (a.Dormancyflag) { a.Bz4 |= 0x02; Dictionary <string, object> paramater = new Dictionary <string, object>(); paramater.Add("Bz4", a.Bz4); UpdatePropertiesRequest defineCacheUpdatePropertiesRequest = new UpdatePropertiesRequest(); defineCacheUpdatePropertiesRequest.PointID = a.PointID; defineCacheUpdatePropertiesRequest.UpdateItems = paramater; _b_DefCacheService.UpdateInfo(defineCacheUpdatePropertiesRequest); } }); IEnumerable <IGrouping <short, Jc_DefInfo> > groupFz = newItems.GroupBy(p => p.Fzh); ////驱动预处理 //foreach (IGrouping<short, Jc_DefInfo> info in groupFz) //{ // //调用驱动处理 // Drv_LoadDef(info.ToList<Jc_DefInfo>()); //} ////批量更新到缓存 //result = _rPointDefineCacheService.GetAllRPointDefineCache(pointDefineCacheRequest); //PointDefineCacheBatchUpdateRequest UpdatePointDefineCacheRequest = new PointDefineCacheBatchUpdateRequest(); ////保存巡检后将所有定义初始化判断标记置成false //Dictionary<string, Dictionary<string, object>> updateItemsList = new Dictionary<string, Dictionary<string, object>>(); //Dictionary<string, object> updateItems = new Dictionary<string, object>(); //List<Jc_DefInfo> items = result.Data; //foreach (Jc_DefInfo item in items) //{ // //if (item.DefIsInit)//交叉控制口变化要置kzchangeflag,但不会下发初始化,加上此条件会导致kzchangeflag一直为true // //{ // item.DefIsInit = false; // item.kzchangeflag = false; // item.Dormancyflag = false; // //} // updateItems = new Dictionary<string, object>(); // updateItems.Add("DefIsInit", false); // updateItems.Add("kzchangeflag", false); // updateItems.Add("Dormancyflag", false); // updateItemsList.Add(item.PointID, updateItems); //} //RDefineCacheBatchUpdatePropertiesRequest cacheUpdatePropertiesRequest = new RDefineCacheBatchUpdatePropertiesRequest(); //cacheUpdatePropertiesRequest.PointItems = updateItemsList; //_rPointDefineCacheService.BatchUpdatePointDefineInfo(cacheUpdatePropertiesRequest); //删除缓存中的非活动点 List <Jc_DefInfo> NonActivityList = result.Data.FindAll(a => a.Activity == "0" && a.InfoState == InfoState.Modified); B_DefCacheBatchDeleteRequest DeletePointDefineCacheRequest = new B_DefCacheBatchDeleteRequest(); DeletePointDefineCacheRequest.B_DefInfos = NonActivityList; _b_DefCacheService.BatchDelete(DeletePointDefineCacheRequest); return(Result); }
private void UpdatePointDefineCacheByProperty(Jc_DefInfo Point) { Dictionary <string, object> paramater = new Dictionary <string, object>(); paramater.Add("Areaid", Point.Areaid); paramater.Add("Sysid", Point.Sysid); paramater.Add("Activity", Point.Activity); paramater.Add("CreateUpdateTime", Point.CreateUpdateTime); paramater.Add("DeleteTime", Point.DeleteTime); paramater.Add("Fzh", Point.Fzh); paramater.Add("Kh", Point.Kh); paramater.Add("Dzh", Point.Dzh); paramater.Add("Devid", Point.Devid); paramater.Add("Wzid", Point.Wzid); paramater.Add("Csid", Point.Csid); paramater.Add("Point", Point.Point); paramater.Add("Jckz1", Point.Jckz1); paramater.Add("Jckz2", Point.Jckz2); paramater.Add("Jckz3", Point.Jckz3); paramater.Add("Z1", Point.Z1); paramater.Add("Z2", Point.Z2); paramater.Add("Z3", Point.Z3); paramater.Add("Z4", Point.Z4); paramater.Add("Z5", Point.Z5); paramater.Add("Z6", Point.Z6); paramater.Add("Z7", Point.Z7); paramater.Add("Z8", Point.Z8); paramater.Add("K1", Point.K1); paramater.Add("K2", Point.K2); paramater.Add("K3", Point.K3); paramater.Add("K4", Point.K4); paramater.Add("K5", Point.K5); paramater.Add("K6", Point.K6); paramater.Add("K7", Point.K7); paramater.Add("K8", Point.K8); paramater.Add("Bz1", Point.Bz1); paramater.Add("Bz2", Point.Bz2); paramater.Add("Bz3", Point.Bz3); paramater.Add("Bz4", Point.Bz4); paramater.Add("Bz5", Point.Bz5); paramater.Add("Bz6", Point.Bz6); paramater.Add("Bz7", Point.Bz7); paramater.Add("Bz8", Point.Bz8); paramater.Add("Bz9", Point.Bz9); paramater.Add("Bz10", Point.Bz10); paramater.Add("Bz11", Point.Bz11); paramater.Add("Bz12", Point.Bz12); paramater.Add("Bz13", Point.Bz13);//条件呼叫转移号码 paramater.Add("Bz18", Point.Bz18); //扩展字段更新 paramater.Add("Wz", Point.Wz); paramater.Add("DevName", Point.DevName); paramater.Add("DevPropertyID", Point.DevPropertyID); paramater.Add("DevClassID", Point.DevClassID); paramater.Add("DevModelID", Point.DevModelID); paramater.Add("DevProperty", Point.DevProperty); paramater.Add("DevClass", Point.DevClass); paramater.Add("DevModel", Point.DevModel); paramater.Add("Unit", Point.Unit); paramater.Add("AreaName", Point.AreaName); paramater.Add("AreaLoc", Point.AreaLoc); paramater.Add("XCoordinate", Point.XCoordinate); paramater.Add("YCoordinate", Point.YCoordinate); //定义改变标记 paramater.Add("PointEditState", Point.PointEditState); paramater.Add("DefIsInit", Point.DefIsInit); paramater.Add("kzchangeflag", Point.kzchangeflag); paramater.Add("ReDoDeal", Point.ReDoDeal); paramater.Add("Dormancyflag", Point.Dormancyflag); //修改标记 paramater.Add("InfoState", Point.InfoState); UpdatePropertiesRequest bDefCacheRequest = new UpdatePropertiesRequest(); bDefCacheRequest.PointID = Point.PointID; bDefCacheRequest.UpdateItems = paramater; _b_DefCacheService.UpdateInfo(bDefCacheRequest); }