using System; using System.Collections.Generic; using System.IO; using System.Net; using System.Text; using HDL_ON.Entity; using Newtonsoft.Json.Linq; namespace HDL_ON.DAL.Server { public partial class HttpServerRequest { /* * json格式 "{" + "\"sss\":" + "\"" + sss + "\"" + "," + "\"xxx\":" + xxx + "," + "}"; 获取返回的数据 var sss = Newtonsoft.Json.Linq.JObject.FromObject("sss"); var xxx = homeJsonStr.GetValue("xxx").ToString(), Dictionary d = new Dictionary(); d.Add("Id", fId); var jsonString = Newtonsoft.Json.JsonConvert.SerializeObject(d); */ string severAddress = "https://global.hdlcontrol.com/ProposedProductionApi"; public HttpServerRequest() { } /// /// 获取传感器历史数据 /// /// /// /// /// /// /// /// /// /// public ResponsePack GetSensorHistory(int subnetId, int deviceId, int bigClass, int minClass, int queryType, int loopId, int nowMonth, string mac) { Dictionary d = new Dictionary(); d.Add("SubnetID", subnetId); d.Add("DeviceID", deviceId); d.Add("LargeType", bigClass); d.Add("SmallType", minClass); d.Add("QueryType", queryType); d.Add("loopId", loopId); d.Add("NowMonth", nowMonth); d.Add("MAC", DB_ResidenceData.Instance.residenceGatewayMAC); d.Add("LocalTimeZone", 8); var jsonString = Newtonsoft.Json.JsonConvert.SerializeObject(d); return RequestHttps("https://developer.hdlcontrol.com/api/GetSensorPushHistory", jsonString, true); } //public string GetRequestResultMsg(string resultCode) //{ // string result = ""; // switch (resultCode.ToUpper()) // { // case "USERNAMEORPWDERROR": // result = Language.StringByID(StringId.LoginFailed_AccountOrPasswordError); // break; // case "ACCOUNTNOEXISTS": // result = Language.StringByID(StringId.ACCOUNTNOEXISTS); // break; // case "SENDFAIL": // result = Language.StringByID(StringId.FailedToSendVerificationCode); // break; // case "EXIST": // result = Language.StringByID(StringId.AccountAlreadyUse); // break; // case "Self:Net_Error": // result = Language.StringByID(StringId.NetworkAnomaly); // break; // } // return result; //} #region ■ 通用请求接口_______________________ /// /// 根椐用户账号获取注册区域 免登录 // 检测账号是否注册也用这个接口 /// /// /// public ResponsePackNew GetRegionByAccount(string account) { var requestJson = HttpUtil.GetSignRequestJson(new RegionByAccountObj() { account = account }); return HttpUtil.RequestHttpsPost(NewAPI.API_POST_GetRegionByAccount, requestJson, HttpUtil.GlobalRequestHttpsHost); } /// /// 刷新Token /// /// public bool RefreshToken() { var requestJson = HttpUtil.GetSignRequestJson(new RefreshTokenObj() { refreshToken = UserInfo.Current.RefreshToken, }); var revertObj = HttpUtil.RequestHttpsPost(NewAPI.API_POST_Login, requestJson); if (revertObj.Code.ToUpper() == StateCode.SUCCESS) { var revertData = Newtonsoft.Json.JsonConvert.DeserializeObject(revertObj.Data.ToString()); UserInfo.Current.LoginTokenString = revertData.headerPrefix + revertData.accessToken; UserInfo.Current.RefreshToken = revertData.refreshToken; UserInfo.Current.LastTime = DateTime.Now; UserInfo.Current.SaveUserInfo(); return true; } return false; } #endregion /// /// 绑定调试人员提交的住宅,一个住宅只能绑定一次 /// /// public ResponsePackNew BindingResidence(string strUrl) { try { if (strUrl.Contains("app/home/deliver") == false) { //非法的URL 返回一个自定义的状态码 return new ResponsePackNew() { Code = "-100" }; } var client = new RestSharp.RestClient(strUrl); var request = new RestSharp.RestRequest(RestSharp.Method.GET); request.Timeout = 5 * 1000; request.AddHeader("content-type", "application/json"); request.AddHeader("Authorization", UserInfo.Current.LoginTokenString); var response = client.Execute(request); if (response.StatusCode == HttpStatusCode.OK) { return Newtonsoft.Json.JsonConvert.DeserializeObject(response.Content); } else { return null; } } catch { return null; } } #region 注册、登录部分 /// /// 通用 发送验证码方法 /// /// 1:注册 2:找回密码 3:绑定4:验证码登陆 5:敏感数据 /// 邮箱或者手机号 /// 是否手机 /// 手机国家区号 /// public ResponsePackNew VerificationCodeSend(VerifyType verifyType, string account, bool isPhone = false, string phoneZoneCode = "86") { var requestObj = new VerifyCodeSendObj() { verifyType = (int)verifyType, languageType = Utlis.GetPostLanguageType() }; // 是否是手机 if (isPhone) { requestObj.phone = account; requestObj.phonePrefix = phoneZoneCode; } else { requestObj.mail = account; } // 超时时间设置为20秒,应该测试海外服务器发送验证码响应时间很久 var requestJson = HttpUtil.GetSignRequestJson(requestObj); return HttpUtil.RequestHttpsPost(NewAPI.API_POST_Verification_Send, requestJson, "", "", HttpUtil.TIME_OUT_LONG); } /// /// 账号登录-使用密码 /// /// 账号 /// 密码 /// public ResponsePackNew LoginByPassword(string account, string password) { var requestJson = HttpUtil.GetSignRequestJson(new LoginObj() { account = account, loginPwd = password }); return HttpUtil.RequestHttpsPost(NewAPI.API_POST_Login, requestJson); } /// /// 验证码登录 /// /// 账号 /// 验证码 /// public ResponsePackNew LoginValidCode(string account, string vCode) { var requestJson = HttpUtil.GetSignRequestJson(new LoginObj() { account = account, verifyCode = vCode, grantType = "verify" }); return HttpUtil.RequestHttpsPost(NewAPI.API_POST_Login, requestJson); } /// /// 验证短信或者邮箱验证码,之后注册 /// /// 邮箱或者手机号 /// 密码 /// 验证码 /// 是否手机 /// public ResponsePackNew ValidataCodeAndRegister(string account, string password, string code, bool isPhone = false) { var requestObj = new RegisterObj() { loginPwd = password, verifyCode = code};//, memberName = account if (isPhone) { requestObj.memberPhone = account; } else { requestObj.memberEmail = account; } var requestJson = HttpUtil.GetSignRequestJson(requestObj); return HttpUtil.RequestHttpsPost(NewAPI.API_POST_Member_Register, requestJson); } /// /// 忘记密码,重置密码 /// /// 邮箱或者手机号 /// 新密码 /// 验证码 /// 是否手机账号 /// public ResponsePackNew ForgetPassword(string account, string password, string vCode, bool isPhone) { var requestObj = new ForgetPwdObj() { verifyCode = vCode, loginPwd = password }; if (isPhone) { //手机忘记密码 requestObj.memberPhone = account; } else { //邮箱忘记密码 requestObj.memberEmail = account; } var requestJson = HttpUtil.GetSignRequestJson(requestObj); return HttpUtil.RequestHttpsPost(NewAPI.API_POST_Member_ForgetPwd, requestJson); } /// /// 验证验证码 /// /// 验证类型 /// 验证账号 /// 验证码 /// 是否手机 /// 验证通过后,验证码是否失效 /// public ResponsePackNew ValidatorCode(VerifyType verifyType, string account, string code, bool isPhone, bool verifySuccessFail = true) { var requestObj = new VerifyCodeCheckObj() { verifyCode = code, verifyType = (int)verifyType, verifySuccessFail = verifySuccessFail }; if (isPhone) { //手机 requestObj.phone = account; } else { //邮箱 requestObj.mail = account; } var requestJson = HttpUtil.GetSignRequestJson(requestObj); return HttpUtil.RequestHttpsPost(NewAPI.API_POST_Verification_Check, requestJson); } #endregion #region 个人信息部分 /// /// 获取用户信息 /// /// public void GetUserInfo(bool bGetHeadImage = true) { var requestJson = HttpUtil.GetSignRequestJson(new NullObj()); var resultObj = HttpUtil.RequestHttpsPost(NewAPI.API_POST_Member_GetMemberInfo, requestJson); if (resultObj.Code == StateCode.SUCCESS) { var info = Newtonsoft.Json.JsonConvert.DeserializeObject(resultObj.Data.ToString()); UserInfo.Current.userEmailInfo = info.memberEmail; UserInfo.Current.userMobileInfo = info.memberPhone; UserInfo.Current.userName = info.memberName; if (!string.IsNullOrEmpty(info.memberPhonePrefix)) { UserInfo.Current.areaCode = info.memberPhonePrefix; } //是否需要获取头像 if (bGetHeadImage) { //2020-12-15 修改头像方案 if (!string.IsNullOrEmpty(info.memberHeadIcon)) { var headImageBytes = ImageUtlis.Current.DownHeadImageByImageKey(info.memberHeadIcon); if (headImageBytes != null && headImageBytes.Length > 0) { UserInfo.Current.headImagePagePath = info.memberHeadIcon; //UserInfo.Current.headImagePagePath = imageKey; } } } UserInfo.Current.SaveUserInfo(); MainPage.Log("获取用户信息成功。"); } // Dictionary d = new Dictionary(); //var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject(d); //var revertObj = RequestHttps($"{severAddress}/ZigbeeUsers/GetAccountInfo", requestJson, true); //if (revertObj.StateCode.ToUpper() == StateCode.SUCCESS) //{ // var dataStr = JObject.FromObject(revertObj.ResponseData); // //"DistributedMark": "96439601-fd26-4768-8440-1d9dfa32c109", < !--帐号Id-- > // UserInfo.Current.userEmailInfo = dataStr.GetValue("Email").ToString(); // UserInfo.Current.userMobileInfo = dataStr.GetValue("Phone").ToString(); // FileStream fs = null; // try // { // var headImageString = dataStr.GetValue("HeadImage").ToString(); // if (!string.IsNullOrEmpty(headImageString)) // { // var jsonString = Newtonsoft.Json.JsonConvert.SerializeObject(headImageString); // var headImageBytes = Newtonsoft.Json.JsonConvert.DeserializeObject(jsonString); // UserInfo.Current.headImagePageBytes = headImageBytes; // var filePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal) + "/", "headImage.png"); // fs = new FileStream(filePath, FileMode.Create, FileAccess.Write); // fs.Write(headImageBytes, 0, headImageBytes.Length); // fs.Flush(); // UserInfo.Current.headImagePagePath = filePath; // } // } // catch (Exception ex) // { // MainPage.Log($"download headImage error : {ex.Message}"); // } // finally // { // if (fs != null) // { // fs.Close(); // } // } // // "GesturePwd": null, < !--手势密码-- > // // "StringPwd": null , < !--字符串密码-- > // UserInfo.Current.userName = dataStr.GetValue("UserName").ToString(); // Application.RunOnMainThread(() => // { // }); // UserInfo.Current.SaveUserInfo(); // MainPage.Log("获取用户信息成功。"); //} } /// /// 获取用户头像 /// /// public void GetUserHeadImageByKey(string imageKey) { var headImageBytes = ImageUtlis.Current.DownHeadImageByImageKey(imageKey); if (headImageBytes != null && headImageBytes.Length > 0) { //UserInfo.Current.headImagePageBytes = headImageBytes; UserInfo.Current.headImagePagePath = imageKey; } } /// /// 更新用户昵称 /// /// /// public ResponsePackNew EditUserName(string userName) { var requestJson = HttpUtil.GetSignRequestJson(new UpdateMemberNameRes() { memberName = userName }); return HttpUtil.RequestHttpsPost(NewAPI.API_POST_Member_UpdateMemberInfo, requestJson); } ///// ///// 更新用户头像 ///// ///// ///// //public ResponsePackNew UpdateMemberHeadIcon(string memberHeadIcon) //{ // var requestJson = HttpUtil.GetSignRequestJson(new UpdateMemberHeadIconRes() // { // memberHeadIcon = memberHeadIcon // }); // return HttpUtil.RequestHttpsPost(NewAPI.API_POST_Member_UpdateMemberInfo, requestJson); //} ///// ///// 更新用户头像 ///// ///// ///// //public string UpdataUserHeadImage(string fileName) //{ // byte[] bytes = Shared.IO.FileUtils.ReadFile(fileName); // var revertObj = HttpUtil.RequestHttpsUpload(RestSharp.Method.POST, NewAPI.API_POST_Head_Upload, bytes); // return revertObj.Code; //} /// /// 更改绑定账户的邮箱或者手机号 /// 2020-11-16 待修改 /// /// /// /// /// public string BindAccount(string account, string code = "", bool isPhone = false) { var requestObj = new BindWithAccountObj() { verifyCode = code }; if (isPhone) { //手机 requestObj.memberPhone = account; } else { //邮箱 requestObj.memberEmail = account; } var requestJson = HttpUtil.GetSignRequestJson(requestObj); return HttpUtil.RequestHttpsPost(NewAPI.API_POST_Member_BindWithAccount, requestJson).Code; } /// /// 解绑手机或者邮箱 /// /// /// public string UnBindAccount(bool isPhone) { var requestObj = new UnBindAccountObj() { unBindLabel = isPhone ? "PHONE" : "EMAIL" }; var requestJson = HttpUtil.GetSignRequestJson(requestObj); return HttpUtil.RequestHttpsPost(NewAPI.API_POST_Member_UnbindWithAccount, requestJson).Code; } #endregion #region 住宅部分 /// /// 获取住宅列表 /// public string GetHomePager(HomeTypeEnum homeType = HomeTypeEnum.ALL) { var requestJson = HttpUtil.GetSignRequestJson(new GetHomeListObj() { homeType = homeType.ToString() }); var resultObj = HttpUtil.RequestHttpsPost(NewAPI.API_POST_Gethomepager, requestJson); if (resultObj.Code == StateCode.SUCCESS) { UserInfo.Current.regionList = new List(); var homeList = Newtonsoft.Json.JsonConvert.DeserializeObject>(resultObj.Data.ToString()); if (homeList == null || homeList.Count == 0) { } else { foreach (var mHome in homeList) { var home = new RegionInfoRes() { RegionID = mHome.Id, Name = mHome.homeName, IsOthreShare = mHome.IsOtherShare, accountType = mHome.accountType, isRemoteControl = mHome.isRemoteControl, longitude = mHome.longitude, latitude = mHome.latitude, deliverstatus = mHome.deliverstatus, homeType = mHome.homeType, regionUrl = mHome.regionUrl, emqUrl = mHome.emqUrl, homeRegionName = mHome.homeRegionName, homeRegionId = mHome.homeRegionId, Address = mHome.homeAddress, isAllowCreateScene = mHome.isAllowCreateScene, }; UserInfo.Current.regionList.Add(home); } //-------如果账号是首次登录 if (DB_ResidenceData.Instance.CurrentRegion == null || string.IsNullOrEmpty(DB_ResidenceData.Instance.CurrentRegion.RegionID)) { //刷新当前住宅 DB_ResidenceData.Instance.CurrentRegion = UserInfo.Current.regionList[0]; DB_ResidenceData.Instance.SaveResidenceData(); UserInfo.Current.SaveUserInfo(); //刷新一次住宅网关 GetHomeGatewayList(); } else { //住宅被删除 var findHome = UserInfo.Current.regionList.Find((obj) => obj.RegionID == DB_ResidenceData.Instance.CurrentRegion.RegionID); if (findHome == null) { Shared.Application.RunOnMainThread(() => { DB_ResidenceData.Instance.CurrentRegion = UserInfo.Current.regionList[0]; GetHomeGatewayList(); DB_ResidenceData.Instance.SaveResidenceData(); UserInfo.Current.SaveUserInfo(); Action action = () => { MainPage.GoUserPage(); }; new UI.PublicAssmebly().TipMsg(StringId.Tip, StringId.ResidenceDeletedSwitchToAnotherResidence, action); }); } else { //刷新当前住宅 DB_ResidenceData.Instance.CurrentRegion = findHome; DB_ResidenceData.Instance.SaveResidenceData(); UserInfo.Current.SaveUserInfo(); //刷新一次住宅网关 GetHomeGatewayList(); } } } } return resultObj.Code; } /// /// 编辑住宅信息 /// /// 0 修改住宅名字、1 修改住宅地址 /// /// public ResponsePackNew EditResidenceInfo(int editId, string editName) { var requestObj = new AddOrUpdateHomeObj() { homeId = DB_ResidenceData.Instance.CurrentRegion.RegionID, }; if (editId == 0) { requestObj.homeName = editName; } else if (editId == 1) { requestObj.Address = editName; } var requestJson = HttpUtil.GetSignRequestJson(requestObj); return HttpUtil.RequestHttpsPostFroHome(NewAPI.API_POST_Home_UpdateHome, requestJson); } /// /// 获取刷新当前住宅的网关列表 /// public void GetHomeGatewayList() { try { if (string.IsNullOrEmpty(DB_ResidenceData.Instance.CurrentRegion.RegionID)) return; var nowhomeId = DB_ResidenceData.Instance.CurrentRegion.RegionID; var requestJson = HttpUtil.GetSignRequestJson(new HomeIdObj() { homeId = nowhomeId }); var revertObj = HttpUtil.RequestHttpsPostFroHome(NewAPI.API_POST_GetGatewayList, requestJson); if (revertObj.Code == StateCode.SUCCESS) { var mHomeGatewayRes = Newtonsoft.Json.JsonConvert.DeserializeObject>(revertObj.Data.ToString()); if (nowhomeId == DB_ResidenceData.Instance.CurrentRegion.RegionID) { if (mHomeGatewayRes != null) { if (mHomeGatewayRes.Count > 0) { DB_ResidenceData.Instance.HomeGateway = mHomeGatewayRes[0]; if(mHomeGatewayRes[0].gatewayStatus) { //DriverLayer.Control.Ins.IsRemote = true; DriverLayer.Control.Ins.GatewayOnline = true; } else { DriverLayer.Control.Ins.GatewayOnline = false; } DB_ResidenceData.Instance.SaveResidenceData(); return; } } //其余情况清空网关信息 DB_ResidenceData.Instance.HomeGateway = null; DB_ResidenceData.Instance.SaveResidenceData(); } } else { //提示错误 } } catch { } } /// /// 获取住宅下的成员账号 /// /// public ResponsePackNew GetResidenceMemberAccount() { var requestJson = HttpUtil.GetSignRequestJson(new HomeIdObj() { homeId = DB_ResidenceData.Instance.CurrentRegion.RegionID }); return HttpUtil.RequestHttpsPostFroHome(NewAPI.API_POST_Child_FindAll, requestJson); } /// /// 删除住宅下的成员账号 /// /// public ResponsePackNew DeleteResidenceMemberAccount(ResidenceMemberInfo subaccount) { var requestObj = new ChildDeleteObj() { childAccountId = subaccount.childAccountId, homeId = subaccount.homeId }; var requestJson = HttpUtil.GetSignRequestJson(requestObj); return HttpUtil.RequestHttpsPostFroHome(NewAPI.API_POST_Child_Delete, requestJson); } /// /// 修改子账号昵称 /// /// /// /// public ResponsePackNew EditSubAccountNickName(string nickName, string childAccountId) { var requestJson = HttpUtil.GetSignRequestJson(new UpdateChildNickNameObj() { homeId = DB_ResidenceData.Instance.CurrentRegion.RegionID, childAccountId = childAccountId, nickName = nickName, }); return HttpUtil.RequestHttpsPostFroHome(NewAPI.API_POST_Child_Update, requestJson); } /// /// 修改子账号创建场景权限 /// /// /// /// public ResponsePackNew ChangeCreateSceneState(bool isAllow, string childAccountId) { var requestJson = HttpUtil.GetSignRequestJson(new UpdateChildAllowCreateSceneObj() { homeId = DB_ResidenceData.Instance.CurrentRegion.RegionID, childAccountId = childAccountId, isAllowCreateScene = isAllow, }); return HttpUtil.RequestHttpsPostFroHome(NewAPI.API_POST_Child_Update, requestJson); } #region 新数据分享 /// /// 添加分享 /// /// /// public ResponsePackNew AddShareData(AddShareObj addShareObj) { var requestJson = HttpUtil.GetSignRequestJson(addShareObj); return HttpUtil.RequestHttpsPostFroHome(NewAPI.API_POST_Share_Add, requestJson); } /// /// 删除分享 /// /// /// public ResponsePackNew DeleteShareData(DeleteShareObj deleteShareObj) { var requestJson = HttpUtil.GetSignRequestJson(deleteShareObj); return HttpUtil.RequestHttpsPostFroHome(NewAPI.API_POST_Share_Delete, requestJson); } /// /// 获取分享 /// /// /// public ResponsePackNew GetShareDataByMemberAccount(string childAccountId) { var requestJson = HttpUtil.GetSignRequestJson(new GetShareObj() { homeId = DB_ResidenceData.Instance.CurrentRegion.RegionID, childAccountId = childAccountId, }); return HttpUtil.RequestHttpsPostFroHome(NewAPI.API_POST_Share_GetList, requestJson); } #endregion ///// ///// 获取住宅下子账号的共享数据列表 ///// ///// //public ResponsePackNew GetShareDataByMemberAccount(string childAccountId) //{ // //Dictionary d = new Dictionary(); // //d.Add("DistributedMark", memberId); // //d.Add("HouseDistributedMark", DB_ResidenceData.residenceData.residecenInfo.RegionID); // //string jsonString = Newtonsoft.Json.JsonConvert.SerializeObject(d); // //return RequestHttps($"{severAddress}/ZigbeeDataShare/GetShareDataBySubAccount", jsonString, true); // var requestJson = HttpUtil.GetSignRequestJson(new HomeShareFindAll() // { // homeId = DB_ResidenceData.residenceData.residecenInfo.RegionID, // childAccountId = childAccountId // }); // return HttpUtil.RequestHttpsPostFroHome(NewAPI.API_POST_Home_Share_FindAll, requestJson); //} ///// ///// 下载单个分享文件 ///// ///// //public byte[] GetShareData(ShareData shareData) //{ // //Dictionary d = new Dictionary(); // //d.Add("DistributedMark", memberId); // //d.Add("HouseDistributedMark", hId); // //string jsonString = Newtonsoft.Json.JsonConvert.SerializeObject(d); // //return RequestHttps($"{severAddress}/ZigbeeDataShare/GetOneShareData", jsonString, true); // var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject(new ShareFileDownObj() // { // homeId = shareData.homeId, // homeShareId = shareData.id // }); // var replaceToken = ""; // if (DB_ResidenceData.residenceData.residecenInfo.IsOthreShare) // { // replaceToken = DB_ResidenceData.residenceData.MasterToken; // } // return HttpUtil.RequestHttpsDownload(NewAPI.API_POST_Home_Share_DownOne, requestJson, null, DB_ResidenceData.residenceData.residecenInfo.regionUrl, replaceToken); //} ///// ///// 增加共享数据列表 ///// ///// //public ResponsePackNew AddShareData(ShareData shareData) //{ // //Dictionary d = new Dictionary(); // //d.Add("ShareName", shareData.ShareName); // //d.Add("HouseDistributedMark", shareData.HouseDistributedMark); // //d.Add("ShareDataBytes", shareData.ShareDataBytes); // //d.Add("SubAccountDistributedMark", shareData.SubAccountDistributedMark); // //string jsonString = Newtonsoft.Json.JsonConvert.SerializeObject(d); // //return RequestHttps($"{severAddress}/ZigbeeDataShare/AddShareData", jsonString, true); // var queryDic = new Dictionary(); // queryDic.Add("homeId", DB_ResidenceData.residenceData.residecenInfo.RegionID); // queryDic.Add("childAccountId", shareData.childAccountId); // queryDic.Add("fileName", shareData.fileName); // var replaceToken = ""; // if (DB_ResidenceData.residenceData.residecenInfo.IsOthreShare) // { // replaceToken = DB_ResidenceData.residenceData.MasterToken; // } // return HttpUtil.RequestHttpsUpload(RestSharp.Method.POST, NewAPI.API_POST_Home_Share_Add, shareData.ShareDataBytes, queryDic, null, DB_ResidenceData.residenceData.residecenInfo.regionUrl, replaceToken); //} ///// ///// 增加共享数据 ///// ///// //public ResponsePackNew EditShareData(ShareData shareData) //{ // return AddShareData(shareData); // //Dictionary d = new Dictionary(); // //d.Add("DistributedMark", shareData.DistributedMark); // //d.Add("ShareName", shareData.ShareName); // //d.Add("HouseDistributedMark", shareData.HouseDistributedMark); // //d.Add("ShareDataBytes", shareData.ShareDataBytes); // //d.Add("SubAccountDistributedMark", shareData.SubAccountDistributedMark); // //string jsonString = Newtonsoft.Json.JsonConvert.SerializeObject(d); // //return RequestHttps($"{severAddress}/ZigbeeDataShare/EditShareData", jsonString, true); //} ///// ///// 删除共享数据 ///// ///// ///// //public ResponsePackNew DeleteShareData(ShareData shareData) //{ // var requestJson = HttpUtil.GetSignRequestJson(new ShareFileDownObj() // { // homeId = shareData.homeId, // homeShareId = shareData.id // }); // return HttpUtil.RequestHttpsPostFroHome(NewAPI.API_POST_Home_Share_Delete, requestJson); // //Dictionary d = new Dictionary(); // //d.Add("DistributedMark", shareData.DistributedMark); // //d.Add("HouseDistributedMark", shareData.HouseDistributedMark); // //string jsonString = Newtonsoft.Json.JsonConvert.SerializeObject(d); // //return RequestHttps($"{severAddress}/ZigbeeDataShare/DeleteShareData", jsonString, true); //} ///// ///// 删除子账号当前住宅的所有共享数据 ///// ///// //public ResponsePack DeleteCurrentResidenceSharedData(ShareData shareData) //{ // Dictionary d = new Dictionary(); // d.Add("SubAccountDistributedMark", shareData.SubAccountDistributedMark); // d.Add("HouseDistributedMark", shareData.HouseDistributedMark); // string jsonString = Newtonsoft.Json.JsonConvert.SerializeObject(d); // return RequestHttps($"{severAddress}/ZigbeeDataShare/DeleteShareData", jsonString, true); //} /// /// 绑定子账号到住宅下 /// /// /// /// public ResponsePackNew BindResidenceMemberAccount(string subAccount, string nickName) { //添加子账号 var requestObj = new ChildAddObj() { homeId = DB_ResidenceData.Instance.CurrentRegion.RegionID, account = subAccount, nickName = nickName }; var requestJson = HttpUtil.GetSignRequestJson(requestObj); return HttpUtil.RequestHttpsPostFroHome(NewAPI.API_POST_Child_Add, requestJson); } ///// ///// 获取住宅下的成员账号信息 ///// ///// //public ResponsePack GetResidenceMemberAccountInfo(string account) //{ // Dictionary d = new Dictionary(); // d.Add("Account", account); // string jsonString = Newtonsoft.Json.JsonConvert.SerializeObject(d); // return RequestHttps($"{severAddress}/ZigbeeUsers/GetSubAccountInfo", jsonString, true); //} #endregion /// /// 获取MQTT远程连接信息接口 /// public MqttInfo GetMqttRemoteInfo(string attachClientId) { try { var requestJson = HttpUtil.GetSignRequestJson(new GetMqttRemoteInfoObj() { attachClientId = attachClientId, homeType = HomeTypeEnum.BUSPRO.ToString() }); var revertObj = HttpUtil.RequestHttpsPost(NewAPI.API_POST_GetMqttRemoteInfo, requestJson, DB_ResidenceData.Instance.CurrentRegion.regionUrl); if (revertObj.Code == StateCode.SUCCESS) { return Newtonsoft.Json.JsonConvert.DeserializeObject(revertObj.Data.ToString()); } else { Utlis.WriteLine("GetMqttRemoteInfo error"); return null; } } catch { return null; } } #region 推送 /// /// 提交推送需要的关键标识信息 /// public bool PushSerivceAddPushInfo() { try { string deviceType = PhoneDeviceType.Android.ToString(); #if __IOS__ deviceType = PhoneDeviceType.IOS.ToString(); #endif //是否生产模式 bool isProduce = true; #if DEBUG isProduce = false; #endif if (string.IsNullOrEmpty(OnAppConfig.Instance.PushDeviceToken)) { Utlis.WriteLine("PushDeviceToken 为空"); return false; } var mAddpushinfoObj = new AddpushinfoObj() { pushToken = OnAppConfig.Instance.PushDeviceToken, deviceName = OnAppConfig.Instance.PhoneName, deviceType = deviceType, produce = isProduce, }; //var mAddpushinfoJson = Newtonsoft.Json.JsonConvert.SerializeObject(mAddpushinfoObj); var mAddpushinfoJson = HttpUtil.GetSignRequestJson(mAddpushinfoObj); var revertObj = HttpUtil.RequestHttpsPost(NewAPI.API_POST_PushSerivce_AddToken, mAddpushinfoJson); if (revertObj.Code == StateCode.SUCCESS) { if (revertObj.Data != null) { var pushId = revertObj.Data.ToString(); if (!string.IsNullOrEmpty(pushId)) { OnAppConfig.Instance.PushId = pushId; OnAppConfig.Instance.SaveConfig(); Utlis.WriteLine("PushId: " + pushId); return true; } } } else { //Utlis.WriteLine("AddToken 失败"); } return false; } catch { return false; } } /// /// 查询推送信息列表 /// /// 0全部 1分享与功能 2报警类 3系统信息 /// public ResponsePackNew PushSerivceGetPushmessagelist(int queryType = 0) { string pushType = null; if (queryType == 1) { pushType = PushType.Default.ToString(); } else if (queryType == 2) { pushType = PushType.Alarm.ToString(); } else if (queryType == 3) { pushType = PushType.Prompt.ToString(); } var requestJson = HttpUtil.GetSignRequestJson(new GetMessageListObj() { pushId = OnAppConfig.Instance.PushId, pushType = pushType }); return HttpUtil.RequestHttpsPost(NewAPI.API_POST_PushSerivce_Getpushmessagelist, requestJson); } /// /// 清空消息记录 /// /// public bool PushSerivceClearmessagelist() { if (string.IsNullOrEmpty(OnAppConfig.Instance.PushId)) return false; var requestJson = HttpUtil.GetSignRequestJson(new PushIdObj() { pushId = OnAppConfig.Instance.PushId }); var revertObj = HttpUtil.RequestHttpsPost(NewAPI.API_POST_PushSerivce_Clearmessagelist, requestJson); if (revertObj.Code == StateCode.SUCCESS) { return true; } else { } return false; } /// /// 退出登录,清空推送标识 /// /// public bool PushSerivceSignOut() { if (string.IsNullOrEmpty(OnAppConfig.Instance.PushId)) return false; try { var requestJson = HttpUtil.GetSignRequestJson(new PushIdObj() { pushId = OnAppConfig.Instance.PushId }); var revertObj = HttpUtil.RequestHttpsPost(NewAPI.API_POST_PushSerivce_DeleteToken, requestJson); if (revertObj.Code == StateCode.SUCCESS) { return true; } else { } return false; } catch { return false; } } /// /// 标记消息全部已读 /// /// /// public bool PushSerivceMarkAllMessageRead() { if (string.IsNullOrEmpty(OnAppConfig.Instance.PushId)) return false; try { var requestJson = HttpUtil.GetSignRequestJson(new PushIdObj() { pushId = OnAppConfig.Instance.PushId }); var revertObj = HttpUtil.RequestHttpsPost(NewAPI.API_POST_PushSerivce_ALLMarkread, requestJson); if (revertObj.Code == StateCode.SUCCESS) { return true; } else { } return false; } catch { return false; } } /// /// 标记指定消息已读 /// /// /// public bool PushSerivceMarkMessageRead(string msgId) { if (string.IsNullOrEmpty(OnAppConfig.Instance.PushId)) return false; try { var requestJson = HttpUtil.GetSignRequestJson(new PushMsgIdObj() { msgId = msgId }); var revertObj = HttpUtil.RequestHttpsPost(NewAPI.API_POST_PushSerivce_Markread, requestJson); if (revertObj.Code == StateCode.SUCCESS) { return true; } else { } return false; } catch { return false; } } /// /// 通过主键id删除一条推送记录 /// /// /// public bool PushSerivceDeleteMessage(string msgId) { if (string.IsNullOrEmpty(OnAppConfig.Instance.PushId)) return false; try { var requestJson = HttpUtil.GetSignRequestJson(new PushMsgIdObj() { msgId = msgId }); var revertObj = HttpUtil.RequestHttpsPost(NewAPI.API_POST_PushSerivce_Deletepushinfo, requestJson); if (revertObj.Code == StateCode.SUCCESS) { return true; } else { IMessageCommon.Current.ShowErrorInfoAlter(revertObj.Code); } return false; } catch { return false; } } /// /// 注册推送 /// public void RegisteredPush() { new System.Threading.Thread(() => { var success = PushSerivceAddPushInfo(); if (success) { Utlis.WriteLine("推送注册成功"); } else { Utlis.WriteLine("推送注册失败"); } }) { IsBackground = true }.Start(); } /// /// 注销推送 /// public void SignOutPush() { new System.Threading.Thread(() => { var success = PushSerivceSignOut(); if (success) { Utlis.WriteLine("推送注销成功"); } else { Utlis.WriteLine("推送注销失败"); } }) { IsBackground = true }.Start(); } #endregion #region 检测更新 /// /// /// /// public ResponsePackNew CheckAppVersion() { var requestObj = new AppVersionCheckObj() { }; var requestJson = HttpUtil.GetSignRequestJson(requestObj); return HttpUtil.RequestHttpsPost(NewAPI.API_POST_CheckAppVersion, requestJson); } #endregion #region 获取天气部分 /// /// 获取指定经纬度的城市信息 /// public void GetCityInfo(string lon, string lat) { System.Threading.Tasks.Task.Run(() => { while (true) { //获取天气 var webClient = new WebClient(); string url = $"https://developer.hdlcontrol.com/Weather/Weather/FindCity/?lon={lon}&lat={lat}"; string responseString = null; try { responseString = Encoding.UTF8.GetString(webClient.DownloadData(url)); } catch (Exception ex) { MainPage.Log(ex.Message); } if (responseString != null) { try { var revertObj = Newtonsoft.Json.JsonConvert.DeserializeObject(responseString); JObject jt = Newtonsoft.Json.JsonConvert.DeserializeObject(revertObj.ResponseData.ToString()); MainPage.cityInfo.city = jt["City"].ToString(); MainPage.cityInfo.cid = jt["Cid"].ToString(); MainPage.cityInfo.location = jt.GetValue("Location").ToString(); MainPage.cityInfo.province = jt.GetValue("Province").ToString(); MainPage.cityInfo.country = jt.GetValue("Country").ToString(); MainPage.cityInfo.timeZone = jt.GetValue("TimeZone").ToString(); url = $"https://developer.hdlcontrol.com/Weather/Weather/GetAirQualityAndWeather/?cid={MainPage.cityInfo.cid}"; responseString = null; responseString = Encoding.UTF8.GetString(webClient.DownloadData(url)); revertObj = Newtonsoft.Json.JsonConvert.DeserializeObject(responseString); jt = Newtonsoft.Json.JsonConvert.DeserializeObject(revertObj.ResponseData.ToString()); MainPage.cityInfo.temperature = jt.GetValue("Temperature").ToString(); MainPage.cityInfo.humidity = jt.GetValue("Humidity").ToString(); MainPage.cityInfo.pm25 = jt.GetValue("Air_Quality").ToString(); MainPage.cityInfo.windLevel = jt.GetValue("WindLevel").ToString(); MainPage.cityInfo.weather = jt.GetValue("Weather").ToString(); break; } catch (Exception ex) { MainPage.Log($"get weather error : {ex.Message}"); } } System.Threading.Thread.Sleep(1000); } Shared.Application.RunOnMainThread(() => { try { HDL_ON.UI.HomePage.LoadEvent_RefreshAir(); } catch { } }); }); } #endregion #region 备份部分 ///// ///// 获取住宅备份列表 ///// //public Dictionary GetRegionLastBackupId() //{ // //Dialog dialog = new Dialog(); // //dialog.Show(); // Dictionary backupList = new Dictionary(); // Dictionary d = new Dictionary(); // d.Add("LevelID", DB_ResidenceData.residenceData.residecenInfo.RegionID);// 199200); // var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject(d); // var revertObj = RequestHttps("https://developer.hdlcontrol.com/api/GetUserFolder", requestJson, true); // if (revertObj == null || revertObj.ResponseData == null) // { // return new Dictionary(); // } // var jt = Newtonsoft.Json.JsonConvert.DeserializeObject>(revertObj.ResponseData.ToString()); // foreach (var j in jt) // { // var folderId = (int)j.GetValue("FolderID"); // var folderName = j.GetValue("FolderName").ToString(); // backupList.Add(folderId, folderName); // } // return backupList; //} /* 2020-09-01 弃用 恢复旧数据功能在bus软件上实现 /// /// 获取备份文件列表 /// public void GetBackupFileList(int levelId) { Dialog dialog = new Dialog(); dialog.Show(); Loading loading = new Loading(); dialog.AddChidren(loading); loading.Start(""); new System.Threading.Thread(() => { Dictionary d = new Dictionary(); d.Add("LevelID", levelId); var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject(d); var revertObj = RequestHttps("https://developer.hdlcontrol.com/api/UserBackupList", requestJson, true); var jt = Newtonsoft.Json.JsonConvert.DeserializeObject>(revertObj.ResponseData.ToString()); #region 恢复房间数据 GetBackupRoom(jt,loading); #endregion Application.RunOnMainThread(() => { loading.Hide(); dialog.Close(); }); }) { IsBackground = true }.Start(); } /// /// 下载图片 /// /// void DownloadImage(string fileName,int fId) { if (downImageList.Contains(fileName)) { return; } else { downDeviceList.Add(fileName); } System.Text.RegularExpressions.Match match = System.Text.RegularExpressions.Regex.Match(fileName, @"^[0-9a-f]{8}(-[0-9a-f]{4}){3}-[0-9a-f]{12}$", System.Text.RegularExpressions.RegexOptions.IgnoreCase); if (match.Success) { FileStream fs = null; try { Dictionary d = new Dictionary(); d.Add("Id", fId); var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject(d); var revertObj = RequestHttps("https://developer.hdlcontrol.com/api/BackupDetail", requestJson, true); var jsonBytes = Newtonsoft.Json.JsonConvert.SerializeObject(revertObj.ResponseData); var bytes = Newtonsoft.Json.JsonConvert.DeserializeObject(jsonBytes); var byteStr = Encoding.UTF8.GetString(bytes); var ss = Newtonsoft.Json.JsonConvert.DeserializeObject(byteStr); var filePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal) + "/", fileName+".png"); fs = new FileStream(filePath, FileMode.Create, FileAccess.Write); fs.Write(bytes, 0, bytes.Length); fs.Flush(); MainPage.Log($"download image {fileName}"); } catch (Exception ex) { MainPage.Log("FileUtiles Code 113:" + ex.ToString()); } finally { try { if (fs != null) { fs.Close(); } } catch (Exception ex) { MainPage.Log("FileUtils Code 121 :" + ex.ToString()); } } } } /// /// 获取备份房间数据 /// void GetBackupRoom(List jt, Loading loading) { var roomList = new Dictionary(); var roomsObject = jt.FindAll((room) => room.GetValue("FileName").ToString().StartsWith("Room_") && room.GetValue("FileName").ToString().Split('_').Length == 2); foreach(var pp in jt) { if(pp.GetValue("FileName").ToString().StartsWith("Equipment")) { MainPage.Log(pp.GetValue("FileName").ToString()); } } roomsObject = jt.FindAll((room) => room.GetValue("FileName").ToString().StartsWith("Equipment_OnePortBus")); foreach (var roomJObj in roomsObject) { Dictionary d = new Dictionary(); d.Add("Id", (int)roomJObj.GetValue("Id")); var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject(d); var revertObj = RequestHttps("https://developer.hdlcontrol.com/api/BackupDetail", requestJson, true); var jsonBytes = Newtonsoft.Json.JsonConvert.SerializeObject(revertObj.ResponseData); var byresss = Newtonsoft.Json.JsonConvert.DeserializeObject(jsonBytes); var byteStr = Encoding.UTF8.GetString(byresss); var ss = Newtonsoft.Json.JsonConvert.DeserializeObject(byteStr); //var RootPath = Environment.GetFolderPath(Environment.SpecialFolder.Personal) + "/"; //var filePath = Path.Combine(RootPath, ss.GetValue("BackGroundImage").ToString()) + ".png"; //var room1 = new Room() //{ // sid = Guid.NewGuid().ToString(), // name = ss.GetValue("Name").ToString(), // floorIndex = 1, // backgroundImage = "Classification/Room/Roombg.png", // //backgroundImage = ss.GetValue("BackGroundImage").ToString() == "Room/r1.png" ? "Classification/Room/Roombg.png" : filePath, //}; //DB_ResidenceData.rooms.Add(room1); //roomList.Add(ss, room1); } var index = 1; foreach (var j in jt) { Application.RunOnMainThread(() => { int pro = (int)(index * 1.0 / jt.Count * 100); loading.Text = pro.ToString() + "%"; }); var fileName = j.GetValue("FileName").ToString(); var fileNameArrary = fileName.Split('_'); if (fileNameArrary.Length == 5 && fileName.Split('_')[0] == "Equipment") { GetBackupFile(fileName, (int)j.GetValue("Id"), roomList); } else { DownloadImage(fileName, (int)j.GetValue("Id")); } index++; } DB_ResidenceData.residenceData.SaveResidenceData(); } List downDeviceList = new List(); List downImageList = new List(); /// /// 获取备份设备文件 /// void GetBackupFile(string fileName, int fId, Dictionary dir) { var type = fileName.Split('_')[1]; if (downDeviceList.Contains(fileName)) { return; } else { downDeviceList.Add(fileName); } if (type == "LightSwitch" || type == "LightMixSwitch" || type == "LightDimming" || type == "LightDALI" || type == "LightMixDimming" || type == "LightLogic" || type == "LightRGB" || type == "AC" || type == "HVAC" || type == "ACPanel" || type == "ACInfrared" || type == "CurtainModel" || type == "CurtainRoller" || type == "CurtainTrietex") { MainPage.Log($"download file {fileName}"); Dictionary d = new Dictionary(); d.Add("Id", fId); var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject(d); var revertObj = RequestHttps("https://developer.hdlcontrol.com/api/BackupDetail", requestJson, true); //var jt = Newtonsoft.Json.JsonConvert.DeserializeObject(revertObj.ResponseData.ToString()); var jsonBytes = Newtonsoft.Json.JsonConvert.SerializeObject(revertObj.ResponseData); var byresss = Newtonsoft.Json.JsonConvert.DeserializeObject(jsonBytes); var byteStr = System.Text.Encoding.UTF8.GetString(byresss); var ss = Newtonsoft.Json.JsonConvert.DeserializeObject(byteStr); /// /// 功能ID /// /// "03010112345678901234560101230123AABB"; var buffer = Guid.NewGuid().ToByteArray(); string guid = ""; if (buffer != null) { for (int i = 0; i < buffer.Length; i++) { if (i > 7) break; guid += buffer[i].ToString("X2"); } } //var guid = BitConverter.ToUInt32(buffer, 16).ToString(); List roomIds = new List(); foreach (var d1 in dir) { var key = d1.Key; var des = key.GetValue("DeviceFilePathList"); if (Newtonsoft.Json.JsonConvert.DeserializeObject>(des.ToString()).Contains(fileName)) { roomIds.Add(d1.Value.sid); } } switch (type) { case "LightSwitch": case "LightMixSwitch": var light1 = DB_ResidenceData.functionList.lights.Find((obj) => obj.bus_Data.SubnetID == (byte)ss.GetValue("SubnetID") && obj.bus_Data.DeviceID == (byte)ss.GetValue("DeviceID") && obj.bus_Data.LoopID == (byte)ss.GetValue("LoopID")); if (light1 != null) { //light1.roomIdList.Add(roomSid); break; } DB_ResidenceData.functionList.lights.Add(new Light() { sid = "030101" + guid + "0102010001AABB", name = ss.GetValue("Name").ToString(), function = new List() { new Trait { name="on_off", max=100,min = 0, value_key= new List { "on","off"} }, }, roomIdList = roomIds, bus_Data = new BusData { SubnetID = (byte)ss.GetValue("SubnetID"), DeviceID = (byte)ss.GetValue("DeviceID"), LoopID = (byte)ss.GetValue("LoopID"), }, }); break; case "LightDimming": case "LightDALI": case "LightMixDimming": var light2 = DB_ResidenceData.functionList.lights.Find((obj) => obj.bus_Data.SubnetID == (byte)ss.GetValue("SubnetID") && obj.bus_Data.DeviceID == (byte)ss.GetValue("DeviceID") && obj.bus_Data.LoopID == (byte)ss.GetValue("LoopID")); if (light2 != null) { //light2.roomIdList.Add(roomSid); break; } DB_ResidenceData.functionList.lights.Add(new Light() { sid = "030101" + guid + "0202020001AABB", name = ss.GetValue("Name").ToString(), function = new List() { new Trait { name="brightness", max=100,min = 0, value_key= new List { "up","down"} }, }, roomIdList = roomIds, //roomIdList = new List() { "0001" }, lastState = "20%", bus_Data = new BusData { SubnetID = (byte)ss.GetValue("SubnetID"), DeviceID = (byte)ss.GetValue("DeviceID"), LoopID = (byte)ss.GetValue("LoopID"), }, }); break; case "LightLogic": case "LightRGB": var light3 = DB_ResidenceData.functionList.lights.Find((obj) => obj.bus_Data.SubnetID == (byte)ss.GetValue("SubnetID") && obj.bus_Data.DeviceID == (byte)ss.GetValue("DeviceID") && obj.bus_Data.LoopID == (byte)ss.GetValue("LoopID")); if (light3 != null) { //light3.roomIdList.Add(roomSid); break; } DB_ResidenceData.functionList.lights.Add(new Light() { sid = "030101" + guid + "0202040001AABB", name = ss.GetValue("Name").ToString(), function = new List() { new Trait { name="brightness", max=100,min = 0, value_key= new List { "on","off"} }, new Trait { name="color", max=100,min = 0, value_key= new List { "255", "255", "255" } }, }, roomIdList = roomIds, //roomIdList = new List() { roomSid }, bus_Data = new BusData { SubnetID = (byte)ss.GetValue("SubnetID"), DeviceID = (byte)ss.GetValue("DeviceID"), LoopID = (byte)ss.GetValue("LoopID"), }, }); break; case "AC": case "HVAC": case "ACPanel": case "ACInfrared": var ac = DB_ResidenceData.functionList.aCs.Find((obj) => obj.bus_Data.SubnetID == (byte)ss.GetValue("SubnetID") && obj.bus_Data.DeviceID == (byte)ss.GetValue("DeviceID") && obj.bus_Data.LoopID == (byte)ss.GetValue("LoopID")); if (ac != null) { //ac.roomIdList.Add(roomSid); break; } DB_ResidenceData.functionList.aCs.Add(new AC() { sid = "030101" + guid + "0204010001AABB", name = ss.GetValue("Name").ToString(), function = new List() { new Trait { name="on_off", max=1,min = 0, value_key= new List { "on","off"} }, new Trait { name="mode", max = 2,min =0,value_key = new List{ "auto", "heat", "cool","dry" } }, new Trait { name = "fan",max = 3,min =0,value_key = new List{ "low", "mid", "high" ,"auto"} }, new Trait { name = "temperature", max = 32,min=16,value_key = new List{"up","down" } }, }, roomIdList = roomIds, //roomIdList = new List() { roomSid}, lastState = "制冷 中风 18°C", bus_Data = new BusData { SubnetID = (byte)ss.GetValue("SubnetID"), DeviceID = (byte)ss.GetValue("DeviceID"), LoopID = (byte)ss.GetValue("LoopID"), }, }); break; //Entity. case "CurtainModel": var curtain1 = DB_ResidenceData.functionList.curtains.Find((obj) => obj.bus_Data.SubnetID == (byte)ss.GetValue("SubnetID") && obj.bus_Data.DeviceID == (byte)ss.GetValue("DeviceID") && obj.bus_Data.LoopID == (byte)ss.GetValue("LoopID")); if (curtain1 != null) { //curtain1.roomIdList.Add(roomSid); break; } DB_ResidenceData.functionList.curtains.Add(new Curtain() { sid = "030101" + guid + "0203010001AABB", name = ss.GetValue("Name").ToString(), roomIdList = roomIds, //roomIdList = new List() { roomSid }, function = new List() { new Trait { name="on_off", max=2,min = 0, value_key= new List { "on","off","stop"} }, },// "curtain", lastState = "开", bus_Data = new BusData { SubnetID = (byte)ss.GetValue("SubnetID"), DeviceID = (byte)ss.GetValue("DeviceID"), LoopID = (byte)ss.GetValue("LoopID"), }, }); break; case "CurtainRoller": var curtain2 = DB_ResidenceData.functionList.curtains.Find((obj) => obj.bus_Data.SubnetID == (byte)ss.GetValue("SubnetID") && obj.bus_Data.DeviceID == (byte)ss.GetValue("DeviceID") && obj.bus_Data.LoopID == (byte)ss.GetValue("LoopID")); if (curtain2 != null) { //curtain2.roomIdList.Add(roomSid); break; } DB_ResidenceData.functionList.curtains.Add(new Curtain() { sid = "030101" + guid + "0203040001AABB", name = ss.GetValue("Name").ToString(), roomIdList = roomIds, //roomIdList = new List() { roomSid }, function = new List() { new Trait { name="on_off", max=100,min = 0, value_key= new List { "on","off","stop"} }, },// "rollingshutter", lastState = "20%", bus_Data = new BusData { SubnetID = (byte)ss.GetValue("SubnetID"), DeviceID = (byte)ss.GetValue("DeviceID"), LoopID = (byte)ss.GetValue("LoopID"), }, }); break; case "CurtainTrietex": var curtain3 = DB_ResidenceData.functionList.curtains.Find((obj) => obj.bus_Data.SubnetID == (byte)ss.GetValue("SubnetID") && obj.bus_Data.DeviceID == (byte)ss.GetValue("DeviceID") && obj.bus_Data.LoopID == (byte)ss.GetValue("LoopID")); if (curtain3 != null) { //curtain3.roomIdList.Add(roomSid); break; } DB_ResidenceData.functionList.curtains.Add(new Curtain() { sid = "030101" + guid + "0203030001AABB", name = ss.GetValue("Name").ToString(), roomIdList = roomIds, //roomIdList = new List() { roomSid }, function = new List() { new Trait { name="on_off", max=100,min = 0, value_key= new List { "on","off","stop"} }, }, lastState = "20%", bus_Data = new BusData { SubnetID = (byte)ss.GetValue("SubnetID"), DeviceID = (byte)ss.GetValue("DeviceID"), LoopID = (byte)ss.GetValue("LoopID"), }, }); break; //Entity.DB_ResidenceData.functionList.floorHeatings.Add(new FloorHeating() //{ // sid = "12341212345678901234560704010004ABCD", // name = "地热", // roomIdList = new List() { "0001" }, // trait = new List() { // new Trait { attri="on_off", max=1,min = 0, value= new List { "on","off"} }, // new Trait { attri="mode", max = 2,min =0,value = new List{ "auto", "heat", "cool","dry" } }, // new Trait { attri = "temperature", max = 32,min=16,value = new List{"up","down" } }, // },// // lastState = "" //}); //Entity. //break; } } } */ #endregion #region Kaede --设备功能—————————————————————————————————— /// /// 获取设备列表 /// /// public ResponsePackNew GetDeviceList() { Dictionary d = new Dictionary(); d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.RegionID); //d.Add("gatewayId", DB_ResidenceData.residenceData.HomeGateway.gatewayId); //d.Add("roomId", DB_ResidenceData.residenceData.residecenInfo.RegionID);//可控参数,当需要分页获取,怎么知道分页总数 //d.Add("searchType", DB_ResidenceData.residenceData.residecenInfo.RegionID); //d.Add("pageSize", DB_ResidenceData.residenceData.residecenInfo.RegionID); //d.Add("pageNo", DB_ResidenceData.residenceData.residecenInfo.RegionID); var requestJson = HttpUtil.GetSignRequestJson(d); return HttpUtil.RequestHttpsPostFroHome(NewAPI.Api_Post_GetDevcieList, requestJson); } /// /// 获取设备详情列表 /// /// public ResponsePackNew GetDeviceInfoList(List functionIds) { Dictionary d = new Dictionary(); d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.RegionID); d.Add("deviceIds", functionIds); var requestJson = HttpUtil.GetSignRequestJson(d); return HttpUtil.RequestHttpsPostFroHome(NewAPI.Api_Post_GetDevcieInfoList, requestJson); } /// /// 刷新设备状态 /// /// public ResponsePackNew RefreshDeviceStatus(List functionIds) { Dictionary d = new Dictionary(); d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.RegionID); d.Add("deviceIds", functionIds); var requestJson = HttpUtil.GetSignRequestJson(d); return HttpUtil.RequestHttpsPostFroHome(NewAPI.Api_Post_RefreshDeviceStatus, requestJson); } /// /// 控制设备 /// /// public ResponsePackNew ControlDevice(List actionObjs) { Dictionary d = new Dictionary(); d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.RegionID); d.Add("gatewayId", DB_ResidenceData.Instance.HomeGateway.gatewayId);//DriverLayer.Control.Ins.GatewayId); d.Add("actions", actionObjs); var requestJson = HttpUtil.GetSignRequestJson(d); return HttpUtil.RequestHttpsPostFroHome(NewAPI.Api_Post_ControlDevice, requestJson); } /// /// 编辑设备信息 /// 绑定关系、名称、收藏 /// /// public ResponsePackNew UpdataDevcieInfo(Function function) { Dictionary d = new Dictionary(); d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.RegionID); d.Add("deviceId", function.deviceId);//DriverLayer.Control.Ins.GatewayId); d.Add("name", function.name); d.Add("collect", function.collect); d.Add("roomIds", function.roomIds); var requestJson = HttpUtil.GetSignRequestJson(d); return HttpUtil.RequestHttpsPostFroHome(NewAPI.Api_Post_EditDevice, requestJson); } /// /// 设备绑定房间 /// public ResponsePackNew BindDeviceToRoom(List deviceIds,List roomIds) { Dictionary d = new Dictionary(); d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.RegionID); d.Add("deviceIds", deviceIds); d.Add("roomIds", roomIds); var requestJson = HttpUtil.GetSignRequestJson(d); return HttpUtil.RequestHttpsPostFroHome(NewAPI.Api_Post_BindDeviceToRoom, requestJson); } /// /// 设备解绑房间 /// public string UnbindDeviceToRoom(string deviceId, string roomId) { Dictionary d = new Dictionary(); d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.RegionID); d.Add("deviceIds", new List() { deviceId }); d.Add("roomIds", new List() { roomId }); var requestJson = HttpUtil.GetSignRequestJson(d); return HttpUtil.RequestHttpsPostFroHome(NewAPI.Api_Post_UnbindDeviceToRoom, requestJson).Code; } /// /// 设备名称修改 /// public string EditDeviceName(string deviceId, string deviceName) { Dictionary d = new Dictionary(); d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.RegionID); d.Add("deviceId", deviceId); d.Add("name", deviceName); var requestJson = HttpUtil.GetSignRequestJson(d); return HttpUtil.RequestHttpsPostFroHome(NewAPI.Api_Post_EditDeviceName, requestJson).Code; } /// /// 收藏设备 /// public ResponsePackNew CollectDevice(string deviceId) { Dictionary d = new Dictionary(); d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.RegionID); d.Add("deviceIds",new List() { deviceId }); var requestJson = HttpUtil.GetSignRequestJson(d); return HttpUtil.RequestHttpsPostFroHome(NewAPI.Api_Post_CollectDevice, requestJson); } /// /// 取消收藏设备 /// public ResponsePackNew CancelCollectDevice(string deviceId) { Dictionary d = new Dictionary(); d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.RegionID); d.Add("deviceIds", new List() { deviceId }); var requestJson = HttpUtil.GetSignRequestJson(d); return HttpUtil.RequestHttpsPostFroHome(NewAPI.Api_Post_CancelCollectDevice, requestJson); } #endregion #region Kaede --场景功能-------------------------- /// /// 获取场景列表 /// 房间ID可空,默认查询住宅下所有房间 /// /// 房间ID /// public ResponsePackNew GetSceneList(string roomId = null) { Dictionary d = new Dictionary(); d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.RegionID); if (roomId != null) { d.Add("roomId", roomId); } var requestJson = HttpUtil.GetSignRequestJson(d); return HttpUtil.RequestHttpsPostFroHome(NewAPI.Api_Post_GetSecneList, requestJson); } /// /// 获取场景详情 /// /// 场景ID /// public ResponsePackNew GetSceneInfo(string seceneId) { Dictionary d = new Dictionary(); d.Add("userSceneIds",new List() { seceneId }); var requestJson = HttpUtil.GetSignRequestJson(d); return HttpUtil.RequestHttpsPostFroHome(NewAPI.Api_Post_GetSecneInfo, requestJson); } /// /// 添加场景 /// /// public ResponsePackNew AddScene(Scene scene) { Dictionary d = new Dictionary(); d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.RegionID); d.Add("scenes", new List() { scene }); var requestJson = HttpUtil.GetSignRequestJson(d); return HttpUtil.RequestHttpsPostFroHome(NewAPI.Api_Post_AddSecne, requestJson); } /// /// 编辑场景 /// /// /// public ResponsePackNew EditScene(Scene scene) { Dictionary d = new Dictionary(); d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.RegionID); d.Add("scenes", new List() { scene }); var requestJson = HttpUtil.GetSignRequestJson(d); return HttpUtil.RequestHttpsPostFroHome(NewAPI.Api_Post_EditSecne, requestJson); } /// /// 删除场景 /// /// public string DeleteScene(string userSceneId) { Dictionary d = new Dictionary(); d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.RegionID); d.Add("userSceneIds", new List() { userSceneId }); var requestJson = HttpUtil.GetSignRequestJson(d); return HttpUtil.RequestHttpsPostFroHome(NewAPI.Api_Post_DeleteSecne, requestJson).Code; } /// /// 执行场景 /// /// public string ExecuteScene(string userSceneId) { Dictionary d = new Dictionary(); d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.RegionID); d.Add("userSceneIds", new List() { userSceneId }); var requestJson = HttpUtil.GetSignRequestJson(d); return HttpUtil.RequestHttpsPostFroHome(NewAPI.Api_Post_ExecuteSecne, requestJson).Code; } /// /// 收藏场景 /// /// /// public string CollectScene(string userSceneId) { Dictionary d = new Dictionary(); d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.RegionID); d.Add("userSceneIds", new List() { userSceneId }); var requestJson = HttpUtil.GetSignRequestJson(d); return HttpUtil.RequestHttpsPostFroHome(NewAPI.Api_Post_CollectScene, requestJson).Code; } /// /// 取消收藏场景 /// /// /// public string CancelCollectScene(string userSceneId) { Dictionary d = new Dictionary(); d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.RegionID); d.Add("userSceneIds", new List() { userSceneId }); var requestJson = HttpUtil.GetSignRequestJson(d); return HttpUtil.RequestHttpsPostFroHome(NewAPI.Api_Post_CancelCollectScene, requestJson).Code; } #endregion #region Kaede --房间功能-------------------------- /// /// 获取房间列表 /// /// 获取类型:ROOM\FLOOR;不输入返回全部 /// public ResponsePackNew GetRoomList(string GetType = "All") { Dictionary d = new Dictionary(); d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.RegionID); if (GetType != "All") { d.Add("roomType", GetType); } d.Add("pageSize", "1000"); var requestJson = HttpUtil.GetSignRequestJson(d); var pack = HttpUtil.RequestHttpsPostFroHome(NewAPI.Api_Post_GetRoomList, requestJson); return pack; } /// /// 添加房间\楼层 /// 楼层也属于房间 /// /// public ResponsePackNew AddRoom(List rooms) { Dictionary d = new Dictionary(); d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.RegionID); d.Add("rooms", rooms); var requestJson = HttpUtil.GetSignRequestJson(d); var pack = HttpUtil.RequestHttpsPostFroHome(NewAPI.Api_Post_AddRoom, requestJson); //var revData = Newtonsoft.Json.JsonConvert.DeserializeObject>(pack.Data.ToString()); //if (revData != null) //{ // SpatialInfo.CurrentSpatial.UpdateSpatialList(revData, OptionType.Update); //} return pack; } /// /// 修改房间信息 /// /// public ResponsePackNew UpdateRoom(List rooms) { Dictionary d = new Dictionary(); d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.RegionID); d.Add("rooms", rooms); var requestJson = HttpUtil.GetSignRequestJson(d); var pack = HttpUtil.RequestHttpsPostFroHome(NewAPI.Api_Post_UpdateRoom, requestJson); //var revData = Newtonsoft.Json.JsonConvert.DeserializeObject>(pack.Data.ToString()); //if (revData != null) //{ // SpatialInfo.CurrentSpatial.UpdateSpatialList(revData,OptionType.Update); //} return pack; } /// /// 删除房间 /// /// /// public ResponsePackNew DeleteRoom(List roomIds) { Dictionary d = new Dictionary(); d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.RegionID); d.Add("ids", roomIds); var requestJson = HttpUtil.GetSignRequestJson(d); var pack = HttpUtil.RequestHttpsPostFroHome(NewAPI.Api_Post_DelRoom, requestJson); return pack; } #endregion } }