| | |
| | | using Shared; |
| | | using System;
|
| | | using System.Collections.Generic; |
| | | using System.IO; |
| | | using System.Net;
|
| | | using System.Text; |
| | | using HDL_ON.Entity; |
| | | using Newtonsoft.Json.Linq; |
| | | using Shared; |
| | | |
| | | namespace HDL_ON.DAL.Server |
| | | { |
| | |
| | | 获取返回的数据 |
| | | var sss = Newtonsoft.Json.Linq.JObject.FromObject("sss"); |
| | | var xxx = homeJsonStr.GetValue("xxx").ToString(), |
| | | |
| | | |
| | | Dictionary<string, object> d = new Dictionary<string, object>(); |
| | | d.Add("Id", fId); |
| | | var jsonString = Newtonsoft.Json.JsonConvert.SerializeObject(d); |
| | | |
| | | |
| | | */ |
| | | |
| | | //public ResponsePack GetCityId(string lon,string lat) |
| | | //{ |
| | | // string jsonString = "{" +
|
| | | // "\"Account\":" + "\"" + lon + "\"" + "," + |
| | | // "\"Password\":" + "\"" + lat + "\"" + |
| | | // "}"; |
| | | // return RequestHttps(@"https://global.hdlcontrol.com/HangZhouHdlCloudApi/ZigbeeUsers/Login", jsonString, false); |
| | | // //string url = $"https://developer.hdlcontrol.com/Weather/Weather/FindCity/?lon={arg1}&lat={arg2}"; |
| | | //} |
| | | public string relaseaSever = "https://global.hdlcontrol.com/HangZhouHdlCloudApi"; |
| | | public string debugSever = "https://global.hdlcontrol.com/ProposedProductionApi"; |
| | | |
| | | string severAddress; |
| | | |
| | | public HttpServerRequest() |
| | | { |
| | | #if DEBUG |
| | | severAddress = debugSever; |
| | | #else |
| | | severAddress = relaseaSever; |
| | | #endif |
| | | } |
| | | |
| | | 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.AccountAlreadyExists); |
| | | break; |
| | | case "Self:Net_Error": |
| | | result = Language.StringByID(StringId.NetworkAnomaly); |
| | | break; |
| | | } |
| | | return result; |
| | | } |
| | | |
| | | |
| | | |
| | | #region 注册、登录部分 |
| | | /// <summary> |
| | |
| | | "\"Account\":" + "\"" + account + "\"" + "," + |
| | | "\"Password\":" + "\"" + password + "\"" + |
| | | "}"; |
| | | return RequestHttps(@"https://global.hdlcontrol.com/HangZhouHdlCloudApi/ZigbeeUsers/Login", jsonString, false); |
| | | return RequestHttps($"{severAddress}/ZigbeeUsers/Login", jsonString, false); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 验证码登录 |
| | | /// </summary> |
| | | public ResponsePack LoginValidCode(string account,string vCode) |
| | | { |
| | | Dictionary<string, object> d = new Dictionary<string, object>(); |
| | | d.Add("Account", account); |
| | | d.Add("Code", vCode); |
| | | d.Add("Language", MainPage.LoginUser.language); |
| | | d.Add("AreaCode", MainPage.LoginUser.areaCode); |
| | | var jsonString = Newtonsoft.Json.JsonConvert.SerializeObject(d); |
| | | return RequestHttps($"{severAddress}/ZigbeeUsers/LoginValidCode", jsonString, false); |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | "\"Password\":" + "\"" + password + "\"" + "," + |
| | | "\"Language\":" + "\"" + language + "\"" + |
| | | "}"; |
| | | return RequestHttps(@"https://global.hdlcontrol.com/HangZhouHdlCloudApi/SignIn", jsonString, false); |
| | | return RequestHttps($"{severAddress}/SignIn", jsonString, false); |
| | | } |
| | | |
| | | public ResponsePack GetAreaCode() |
| | | { |
| | | string requestJson = "{}"; |
| | | return RequestHttps(@"https://global.hdlcontrol.com/HangZhouHdlCloudApi/ZigbeeUsers/GetAreaCode", requestJson, false); |
| | | return RequestHttps($"{severAddress}/ZigbeeUsers/GetAreaCode", requestJson, false); |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | "\"Account\":" + "\"" + account + "\"" + "," + |
| | | "\"Password\":" + "\"" + password + "\"" + "," + |
| | | "\"EnterPassword\":" + "\"" + entryPassword + "\"" + "," + |
| | | "\"Language\":" + "\"" + Language.CurrentLanguage + "\"" + "," + |
| | | "\"Language\":" + "\"" + MainPage.LoginUser.language.ToLower() + "\"" + "," + |
| | | "\"Code\":" + "\"" + code + "\"" + "," + |
| | | "\"RegisterSoruce\":" + 0 + "," + |
| | | "\"AreaCode\":" + areaCode + |
| | | "}"; |
| | | return RequestHttps(@"https://global.hdlcontrol.com/HangZhouHdlCloudApi/ZigbeeUsers/ValidataCodeAndRegisterAccount", requestJson, false); |
| | | return RequestHttps($"{severAddress}/ZigbeeUsers/ValidataCodeAndRegisterAccount", requestJson, false); |
| | | } |
| | | |
| | | |
| | |
| | | string jsonString = "{" +
|
| | | "\"Account\":" + "\"" + account + "\"" + "," + |
| | | "\"Company\":" + MainPage.Company + "," + |
| | | "\"Language\":" + "\"" + Language.CurrentLanguage + "\"" + "," + |
| | | "\"AreaCode\":" + UserConfig.Instance.CountryNumber + |
| | | "\"Language\":" + "\"" + MainPage.LoginUser.language.ToLower() + "\"" + "," + |
| | | "\"AreaCode\":" + OnAppConfig.Instance.CountryNumber + |
| | | "}"; |
| | | return RequestHttps(@"https://global.hdlcontrol.com/HangZhouHdlCloudApi/ZigbeeUsers/RegisterSendVerCode", jsonString, false); |
| | | return RequestHttps($"{severAddress}/ZigbeeUsers/RegisterSendVerCode", jsonString, false); |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | /// <summary> |
| | |
| | | { |
| | | |
| | | string jsonString = "{" +
|
| | | "\"Phone\":" + "\"" + phoneNum + "\"" + "," + |
| | | "\"Company\":" + MainPage.Company + |
| | | "\"Account\":" + "\"" + phoneNum + "\"" + "," + |
| | | "\"AreaCode\":" + MainPage.LoginUser.areaCode + |
| | | "}"; |
| | | return RequestHttps(@"https://global.hdlcontrol.com/HangZhouHdlCloudApi/ZigbeeUsers/LoginSendVerCode", jsonString, false); |
| | | return RequestHttps($"{severAddress}/ZigbeeUsers/LoginSendVerCode", jsonString, false); |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | "\"Account\":" + "\"" + account + "\"" + "," + |
| | | "\"Company\":" + MainPage.Company + "," + |
| | | "\"Language\":" + "\"" + Language.CurrentLanguage + "\"" + "," + |
| | | "\"AreaCode\":" + UserConfig.Instance.CountryNumber + |
| | | "\"AreaCode\":" + OnAppConfig.Instance.CountryNumber + |
| | | "}"; |
| | | return RequestHttps(@"https://global.hdlcontrol.com/HangZhouHdlCloudApi/ZigbeeUsers/LoginSendVerCode", jsonString, false); |
| | | return RequestHttps($"{severAddress}/ZigbeeUsers/LoginSendVerCode", jsonString, false); |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | "\"Language\":" + "\"" + Language.CurrentLanguage + "\"" + "," + |
| | | "\"AreaCode\":" + countryIndex + |
| | | "}"; |
| | | return RequestHttps(@"https://global.hdlcontrol.com/HangZhouHdlCloudApi/ZigbeeUsers/ValidatorCode", jsonString, false); |
| | | return RequestHttps($"{severAddress}/ZigbeeUsers/ValidatorCode", jsonString, false); |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | "\"AgainPassword\":" + "\"" + rePassword + "\"" + "," + |
| | | "\"AreaCode\":" + countryIndex + |
| | | "}"; |
| | | return RequestHttps(@"https://global.hdlcontrol.com/HangZhouHdlCloudApi/ZigbeeUsers/ResetPassword", jsonString, false); |
| | | return RequestHttps($"{severAddress}/ZigbeeUsers/ResetPassword", jsonString, false); |
| | | } |
| | | #endregion |
| | | |
| | | #region 个人信息部分 |
| | | /// <summary> |
| | | /// 获取用户信息 |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | public void GetUserInfo() |
| | | { |
| | | Dictionary<string, object> d = new Dictionary<string, object>(); |
| | | var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject(d); |
| | | var revertObj = RequestHttps($"{severAddress}/ZigbeeUsers/GetAccountInfo", requestJson, true); |
| | | |
| | | if (revertObj.StateCode.ToUpper() == "SUCCESS") |
| | | { |
| | | var dataStr = Newtonsoft.Json.Linq.JObject.FromObject(revertObj.ResponseData); |
| | | //MainPage.LoginUser.userName = dataStr.GetValue("UserName").ToString(); |
| | | //"DistributedMark": "96439601-fd26-4768-8440-1d9dfa32c109", < !--帐号Id-- > |
| | | MainPage.LoginUser.userEmailInfo = dataStr.GetValue("Email").ToString(); |
| | | MainPage.LoginUser.userMobileInfo = dataStr.GetValue("Phone").ToString(); |
| | | //"HeadImage": null, < !--头相,类型byte[] --> |
| | | FileStream fs = null; |
| | | try |
| | | { |
| | | var headImageString = dataStr.GetValue("HeadImage").ToString(); |
| | | var ss = Newtonsoft.Json.JsonConvert.DeserializeObject<byte[]>(headImageString); |
| | | var bytes = Encoding.UTF8.GetBytes(headImageString); |
| | | MainPage.LoginUser.headImagePageBytes = bytes; |
| | | //var bytes = Newtonsoft.Json.JsonConvert.DeserializeObject<byte[]>(headImageString); |
| | | //var byteStr = Encoding.UTF8.GetString(bytes); |
| | | var filePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal) + "/", "headImage.png"); |
| | | |
| | | #if DEBUG |
| | | Application.RunOnMainThread(() => |
| | | { |
| | | new Tip() { CloseTime = 5, Text = filePath }.Show(MainPage.BasePageView); |
| | | }); |
| | | #endif |
| | | fs = new FileStream(filePath, FileMode.Create, FileAccess.Write); |
| | | fs.Write(bytes, 0, bytes.Length); |
| | | fs.Flush(); |
| | | MainPage.LoginUser.headImagePagePath = filePath; |
| | | }catch (Exception ex) |
| | | { |
| | | MainPage.Log($"download headImage error : {ex.Message}"); |
| | | } |
| | | finally |
| | | { |
| | | if (fs != null) |
| | | { |
| | | fs.Close(); |
| | | } |
| | | } |
| | | // "GesturePwd": null, < !--手势密码-- > |
| | | // "StringPwd": null , < !--字符串密码-- > |
| | | MainPage.LoginUser.userName = dataStr.GetValue("Remark").ToString(); |
| | | |
| | | MainPage.LoginUser.SaveUserInfo(); |
| | | MainPage.Log("获取用户信息成功。"); |
| | | } |
| | | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 更新用户头像 |
| | | /// </summary> |
| | | /// <param name="vs"></param> |
| | | /// <returns></returns> |
| | | public string UpdataUserHeadImage(string fileName) |
| | | { |
| | | FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read); |
| | | byte[] bytes = new byte[fs.Length]; |
| | | fs.Read(bytes, 0, bytes.Length); |
| | | |
| | | Dictionary<string, byte[]> d = new Dictionary<string, byte[]>(); |
| | | d.Add("HeadImage", bytes); |
| | | var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject(d); |
| | | |
| | | var revertObj = RequestHttps($"{severAddress}/ZigbeeUsers/UpdateHeadImage", requestJson, true); |
| | | return revertObj.StateCode; |
| | | } |
| | | #endregion |
| | | |
| | |
| | | { |
| | | string jsonString = "{" +
|
| | | "\"RequestVersion\":" + "\"" + MainPage.VersionString + "\"" + "," + |
| | | "\"RequestSource\":" + "\"" + "1" + "\"" + "," + |
| | | "\"RequestSource\":" + "\"" + "2" + "\"" + "," + |
| | | "\"HomeType\":" + "\"" + "1" + "\"" + "," + |
| | | "\"LoginAccessToken\":" + "\"" + MainPage.LoginUser.LoginTokenString + "\"" + |
| | | "\"LoginAccessToken\":" + "\"" + MainPage.LoginUser.loginTokenString + "\"" + |
| | | "}"; |
| | | return RequestHttps(@"https://global.hdlcontrol.com/HangZhouHdlCloudApi/App/GetHomePager", jsonString,false); |
| | | return RequestHttps($"{severAddress}/App/GetHomePager", jsonString,false); |
| | | } |
| | | /// <summary> |
| | | /// 编辑住宅信息 |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | public ResponsePack EditResidenceInfo() |
| | | { |
| | | //创建字典 |
| | | Dictionary<string, object> d = new Dictionary<string, object>(); |
| | | //添加元素 |
| | | d.Add("RequestVersion", MainPage.VersionString); |
| | | d.Add("RequestSource", "2"); |
| | | d.Add("LoginAccessToken", MainPage.LoginUser.loginTokenString); |
| | | d.Add("HomeId", DB_ResidenceData.residenceData.residecenInfo.RegionID); |
| | | d.Add("HomeType", 1); |
| | | d.Add("Name", DB_ResidenceData.residenceData.residecenInfo.Name); |
| | | d.Add("Address", DB_ResidenceData.residenceData.residecenInfo.Address); |
| | | //添加完成以后把字典类中数据格式化为json字符串 |
| | | //将对象转为json字符串 |
| | | |
| | | string jsonString = Newtonsoft.Json.JsonConvert.SerializeObject(d); |
| | | return RequestHttps($"{severAddress}/App/EditHome", jsonString, false); |
| | | } |
| | | |
| | | |
| | | #endregion |
| | | |
| | | #region 获取天气部分 |
| | | /// <summary> |
| | | /// 获取指定经纬度的城市信息 |
| | | /// </summary> |
| | | 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<ResponsePack>(responseString); |
| | | JObject jt = Newtonsoft.Json.JsonConvert.DeserializeObject<JObject>(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<ResponsePack>(responseString); |
| | | jt = Newtonsoft.Json.JsonConvert.DeserializeObject<JObject>(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(); |
| | | 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 备份部分 |
| | | /// <summary> |
| | | /// 获取住宅备份列表 |
| | | /// </summary> |
| | | public Dictionary<int,string> GetRegionLastBackupId() |
| | | { |
| | | //Dialog dialog = new Dialog(); |
| | | //dialog.Show(); |
| | | |
| | | Dictionary<int, string> backupList = new Dictionary<int, string>(); |
| | | Dictionary<string, object> d = new Dictionary<string, object>(); |
| | | 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<int, string>(); |
| | | } |
| | | var jt = Newtonsoft.Json.JsonConvert.DeserializeObject<List<JObject>>(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; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 获取备份文件列表 |
| | | /// </summary> |
| | | 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<string, object> d = new Dictionary<string, object>(); |
| | | 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<List<JObject>>(revertObj.ResponseData.ToString()); |
| | | #region 恢复房间数据 |
| | | |
| | | |
| | | GetBackupRoom(jt,loading); |
| | | #endregion |
| | | |
| | | Application.RunOnMainThread(() => { |
| | | loading.Hide(); |
| | | dialog.Close(); |
| | | }); |
| | | }) |
| | | { IsBackground = true }.Start(); |
| | | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 下载图片 |
| | | /// </summary> |
| | | /// <param name="fileName"></param> |
| | | 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<string, object> d = new Dictionary<string, object>(); |
| | | 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<byte[]>(jsonBytes); |
| | | var byteStr = Encoding.UTF8.GetString(bytes); |
| | | var ss = Newtonsoft.Json.JsonConvert.DeserializeObject<JObject>(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()); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 获取备份房间数据 |
| | | /// </summary> |
| | | void GetBackupRoom(List<JObject> jt, Loading loading) |
| | | { |
| | | var roomList = new Dictionary<JObject, Room>(); |
| | | |
| | | var roomsObject = jt.FindAll((room) => room.GetValue("FileName").ToString().StartsWith("Room_") && room.GetValue("FileName").ToString().Split('_').Length == 2); |
| | | foreach (var roomJObj in roomsObject) |
| | | { |
| | | Dictionary<string, object> d = new Dictionary<string, object>(); |
| | | 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<byte[]>(jsonBytes); |
| | | var byteStr = Encoding.UTF8.GetString(byresss); |
| | | var ss = Newtonsoft.Json.JsonConvert.DeserializeObject<JObject>(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.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<string> downDeviceList = new List<string>(); |
| | | List<string> downImageList = new List<string>(); |
| | | |
| | | /// <summary> |
| | | /// 获取备份设备文件 |
| | | /// </summary> |
| | | void GetBackupFile(string fileName, int fId, Dictionary<JObject, Room> 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<string, object> d = new Dictionary<string, object>(); |
| | | 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<byte[]>(revertObj.ResponseData.ToString()); |
| | | var jsonBytes = Newtonsoft.Json.JsonConvert.SerializeObject(revertObj.ResponseData); |
| | | var byresss = Newtonsoft.Json.JsonConvert.DeserializeObject<byte[]>(jsonBytes); |
| | | var byteStr = System.Text.Encoding.UTF8.GetString(byresss); |
| | | var ss = Newtonsoft.Json.JsonConvert.DeserializeObject<JObject>(byteStr); |
| | | |
| | | /// <summary> |
| | | /// 功能ID |
| | | /// 厂商代码 2bytes; 01 HDL
|
| | | /// 通讯方式 1byte ; 01 HDL Bus; 02 Zigbee;03 KNX;04 Z-Wave |
| | | /// 产品GUID 8bytes |
| | | /// 产品类别 1byte ; 01 调光器;02继电器;03干接点模块;04传感器;05面板 |
| | | /// 物模型类型2bytes 01 开关类 --01开关;02插座 |
| | | /// 02 照明 --01开关类;02调光类;03色温;04LED |
| | | /// 03 遮阳 --01窗帘电机;02百叶窗;03开合帘;04卷帘 |
| | | /// 04 恒温器 --01空调;02地暖;03毛细空调 |
| | | /// 05 新风 |
| | | /// 06 影音 |
| | | /// 07 音乐 |
| | | /// 08 能源 |
| | | /// 09 安防 |
| | | /// 通道号 2bytes |
| | | /// Key_id 2bytes |
| | | /// </summary> |
| | | /// "00010112345678901234560101230123AABB"; |
| | | 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<string> roomIds = new List<string>(); |
| | | foreach (var d1 in dir) |
| | | { |
| | | var key = d1.Key; |
| | | var des = key.GetValue("DeviceFilePathList"); |
| | | if (Newtonsoft.Json.JsonConvert.DeserializeObject<List<string>>(des.ToString()).Contains(fileName)) |
| | | { |
| | | roomIds.Add(d1.Value.sid); |
| | | } |
| | | } |
| | | switch (type) |
| | | { |
| | | case "LightSwitch": |
| | | case "LightMixSwitch": |
| | | var light1 = DB_ResidenceData.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.residenceData.functionList.lights.Add(new Light() |
| | | { |
| | | sid = "000101" + guid + "0102010001AABB", |
| | | name = ss.GetValue("Name").ToString(), |
| | | trait = new List<Trait>() { |
| | | new Trait { attri="on_off", max=100,min = 0, value= new List<string> { "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.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.residenceData.functionList.lights.Add(new Light() |
| | | { |
| | | sid = "000101" + guid + "0202020001AABB", |
| | | name = ss.GetValue("Name").ToString(), |
| | | trait = new List<Trait>() { |
| | | new Trait { attri="brightness", max=100,min = 0, value= new List<string> { "up","down"} }, |
| | | }, |
| | | roomIdList = roomIds, |
| | | //roomIdList = new List<string>() { "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.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.residenceData.functionList.lights.Add(new Light() |
| | | { |
| | | sid = "000101" + guid + "0202040001AABB", |
| | | name = ss.GetValue("Name").ToString(), |
| | | trait = new List<Trait>() { |
| | | new Trait { attri="brightness", max=100,min = 0, value= new List<string> { "on","off"} }, |
| | | new Trait { attri="color", max=100,min = 0, value= new List<string> { "255", "255", "255" } }, |
| | | }, |
| | | roomIdList = roomIds, |
| | | //roomIdList = new List<string>() { 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.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.residenceData.functionList.aCs.Add(new AC() |
| | | { |
| | | sid = "000101" + guid + "0204010001AABB", |
| | | name = ss.GetValue("Name").ToString(), |
| | | trait = new List<Trait>() { |
| | | new Trait { attri="on_off", max=1,min = 0, value= new List<string> { "on","off"} }, |
| | | new Trait { attri="mode", max = 2,min =0,value = new List<string>{ "auto", "heat", "cool","dry" } }, |
| | | new Trait { attri = "fan",max = 3,min =0,value = new List<string>{ "low", "mid", "high" ,"auto"} }, |
| | | new Trait { attri = "temperature", max = 32,min=16,value = new List<string>{"up","down" } }, |
| | | }, |
| | | roomIdList = roomIds, |
| | | //roomIdList = new List<string>() { 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.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.residenceData.functionList.curtains.Add(new Curtain() |
| | | { |
| | | sid = "000101" + guid + "0203010001AABB", |
| | | name = ss.GetValue("Name").ToString(), |
| | | roomIdList = roomIds, |
| | | //roomIdList = new List<string>() { roomSid }, |
| | | trait = new List<Trait>() { |
| | | new Trait { attri="on_off", max=2,min = 0, value= new List<string> { "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.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.residenceData.functionList.curtains.Add(new Curtain() |
| | | { |
| | | sid = "000101" + guid + "0203040001AABB", |
| | | name = ss.GetValue("Name").ToString(), |
| | | roomIdList = roomIds, |
| | | //roomIdList = new List<string>() { roomSid }, |
| | | trait = new List<Trait>() { |
| | | new Trait { attri="on_off", max=100,min = 0, value= new List<string> { "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.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.residenceData.functionList.curtains.Add(new Curtain() |
| | | { |
| | | sid = "000101" + guid + "0203030001AABB", |
| | | name = ss.GetValue("Name").ToString(), |
| | | roomIdList = roomIds, |
| | | //roomIdList = new List<string>() { roomSid }, |
| | | trait = new List<Trait>() { |
| | | new Trait { attri="on_off", max=100,min = 0, value= new List<string> { "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.residenceData.functionList.floorHeatings.Add(new FloorHeating() |
| | | //{ |
| | | // sid = "12341212345678901234560704010004ABCD", |
| | | // name = "地热", |
| | | // roomIdList = new List<string>() { "0001" }, |
| | | // trait = new List<Trait>() { |
| | | // new Trait { attri="on_off", max=1,min = 0, value= new List<string> { "on","off"} }, |
| | | // new Trait { attri="mode", max = 2,min =0,value = new List<string>{ "auto", "heat", "cool","dry" } }, |
| | | // new Trait { attri = "temperature", max = 32,min=16,value = new List<string>{"up","down" } }, |
| | | // },// |
| | | // lastState = "" |
| | | //}); |
| | | //Entity. |
| | | //break; |
| | | } |
| | | |
| | | } |
| | | } |
| | | |
| | | |
| | | #endregion |
| | | } |