JLChen
2021-01-08 281f7d0b8a363a3ed4d6f83bb5fa22bb6d0340f3
2021-01-08 1.更新
10个文件已修改
289 ■■■■■ 已修改文件
Crabtree/.vs/SmartHome/xs/UserPrefs.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Crabtree/ON.Ios/AppDelegate.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Crabtree/SmartHome/HDL/Common/Constant.cs 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Crabtree/SmartHome/HDL/Common/HttpUtil/HttpServerRequest.cs 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Crabtree/SmartHome/HDL/Common/HttpUtil/IMessageCommon.cs 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Crabtree/SmartHome/HDL/Common/HttpUtil/NewAPI.cs 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Crabtree/SmartHome/HDL/Common/HttpUtil/NewApiRes.cs 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Crabtree/SmartHome/UI/SimpleControl/Phone/Guide/GuideAddGateway.cs 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Crabtree/SmartHome/UI/SimpleControl/Phone/Guide/GuideSettingGateway.cs 147 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
README.md 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Crabtree/.vs/SmartHome/xs/UserPrefs.xml
@@ -1,10 +1,9 @@
<Properties StartupConfiguration="{1D83BF28-BA88-4152-BA41-D7EFE90A5437}|Default">
  <MonoDevelop.Ide.ItemProperties.ON.Droid PreferredExecutionTarget="Android.822QECU5228FU" />
  <MonoDevelop.Ide.Workbench ActiveDocument="SmartHome/UI/SimpleControl/R.cs">
  <MonoDevelop.Ide.Workbench ActiveDocument="SmartHome/UI/SimpleControl/Phone/Guide/GuideSettingGateway.cs">
    <Files>
      <File FileName="SmartHome/HDL/Common/HttpUtil/ErrorCode.cs" Line="74" Column="53" />
      <File FileName="SmartHome/HDL/Common/HttpUtil/IMessageCommon.cs" Line="166" Column="76" />
      <File FileName="SmartHome/UI/SimpleControl/R.cs" Line="1052" Column="26" />
      <File FileName="SmartHome/UI/SimpleControl/Phone/Guide/GuideAddGateway.cs" Line="1" Column="1" />
      <File FileName="SmartHome/UI/SimpleControl/Phone/Guide/GuideSettingGateway.cs" Line="1" Column="1" />
    </Files>
    <Pads>
      <Pad Id="ProjectPad">
@@ -18,7 +17,11 @@
              </Node>
              <Node name="UI" expanded="True">
                <Node name="SimpleControl" expanded="True">
                  <Node name="R.cs" selected="True" />
                  <Node name="Phone" expanded="True">
                    <Node name="Guide" expanded="True">
                      <Node name="GuideSettingGateway.cs" selected="True" />
                    </Node>
                  </Node>
                </Node>
              </Node>
            </Node>
Crabtree/ON.Ios/AppDelegate.cs
@@ -76,9 +76,9 @@
            AppCenter.Start ("44cbdfbf-d33e-4e92-a795-1c4452e54d3e", typeof (Analytics), typeof (Crashes));
            Utlis.WriteLine ("FinishedLaunching");
            //Shared.Application.IsGpsEnable = false;
            //Shared.Application.IsUsePingFang = true;
            base.FinishedLaunching (application, launchOptions);
            SharedMethod.SharedMethod.sharedApp = application;
Crabtree/SmartHome/HDL/Common/Constant.cs
@@ -7,26 +7,7 @@
    /// </summary>
    public class Constant
    {
        /// <summary>
        /// 用户协议
        /// </summary>
        public const string URL_USERAGREEMENT = "https://developer.hdlcontrol.com/HDLOnPlusUserAgreement.html";
        /// <summary>
        /// 隐私政策
        /// </summary>
        public const string URL_PRIVACYPOLICY = "https://developer.hdlcontrol.com/HDLOnPlusPrivacyPolicy.html";
        /// <summary>
        /// 技术支持电话号码
        /// </summary>
        public const string SUPPORT_TELEPHONENUMBER = "4008558535";
        /// <summary>
        /// 技术支持邮箱地址
        /// </summary>
        public const string SUPPORT_EMAIL = "hdltickets@hdlautomation.com";
        /// <summary>
        /// 苹果商店地址
        /// </summary>
        public const string URL_APPSTORE = "https://apps.apple.com/cn/app/on/id1532353432";
        /// <summary>
        /// 裁剪图片的高大小
@@ -286,5 +267,18 @@
    }
    /// <summary>
    /// 网关类型
    /// </summary>
    public enum GatewayType
    {
        BUSUDPGATEWAY = 1,
        AGATEWAY,
        ZIGBEEGATEWAY,
        KNXGATEWAY,
    }
    #endregion
}
Crabtree/SmartHome/HDL/Common/HttpUtil/HttpServerRequest.cs
@@ -65,13 +65,9 @@
            }
            return revertObj.Code;
        }
        #endregion
        #region 注册、登录部分
        /// <summary>
        /// 通用 发送验证码方法
        /// </summary>
@@ -488,6 +484,17 @@
        }
        /// <summary>
        /// 绑定网关
        /// </summary>
        /// <param name="mac"></param>
        /// <returns></returns>
        public ResponsePackNew BindGateway (BindGatewayObj newGateway)
        {
            var requestJson = HttpUtil.GetSignRequestJson (newGateway);
            return HttpUtil.RequestHttpsPostFroHome (NewAPI.API_POST_BindGateway, requestJson);
        }
        /// <summary>
        /// 获取刷新当前住宅的网关列表
        /// </summary>
        public string GetHomeGatewayList()
@@ -552,6 +559,8 @@
            return revertObj.Code;
        }
        /// <summary>
        /// 获取住宅下的成员账号
        /// </summary>
Crabtree/SmartHome/HDL/Common/HttpUtil/IMessageCommon.cs
@@ -62,10 +62,10 @@
            //dicMsg = new Dictionary<string, Dictionary<string, int>>();
            #region 共通错误码
            stateCodeDic = new Dictionary<string, int>();
            //与服务器通讯失败
            stateCodeDic ["NETWORK_ERROR"] = MyInternationalizationString.FailedRequestServer;
            //数据异常
            stateCodeDic ["DATA_EXCEPTION"] = MyInternationalizationString.DataExceptionPleaseTryAgain;
            ////与服务器通讯失败
            //stateCodeDic ["NETWORK_ERROR"] = MyInternationalizationString.FailedRequestServer;
            ////数据异常
            //stateCodeDic ["DATA_EXCEPTION"] = MyInternationalizationString.DataExceptionPleaseTryAgain;
            //与服务器通讯失败
            stateCodeDic [StateCode.NETWORK_ERROR] = MyInternationalizationString.FailedRequestServer;
            //数据异常
Crabtree/SmartHome/HDL/Common/HttpUtil/NewAPI.cs
@@ -162,10 +162,10 @@
        #endregion
        #region  ■ GatewayCluster -- 网关___________________________
        ///// <summary>
        ///// 绑定网关到住宅
        ///// </summary>
        //public const string API_POST_BindGateway = "/home-wisdom/app/gateway/bindGateway";
        /// <summary>
        /// 绑定网关到住宅
        /// </summary>
        public const string API_POST_BindGateway = "/home-wisdom/app/gateway/bindGateway";
        /// <summary>
        /// 获取住宅网关分页
        /// </summary>
Crabtree/SmartHome/HDL/Common/HttpUtil/NewApiRes.cs
@@ -519,6 +519,14 @@
        /// 设备号
        /// </summary>
        public int deviceId;
        /// <summary>
        /// 是否强制换绑Mac
        /// </summary>
        public bool swapGateway = true;
        /// <summary>
        /// 禁止多网关,保证一个住宅下只有一个网关
        /// </summary>
        public bool disableMoreGw = true;
    }
Crabtree/SmartHome/UI/SimpleControl/Phone/Guide/GuideAddGateway.cs
@@ -284,6 +284,8 @@
                };
                EventHandler<MouseEventArgs> eHandler = (sender, e) => {
                    //跳转之前先绑定APP
                    MainPage.Loading.Start ("Please wait...");
                    bool needHide = true;
                    new System.Threading.Thread (() => {
@@ -300,8 +302,14 @@
                    bool goNext = false;
                    System.Threading.Tasks.Task.Run (() => {
                        try {
                            //
                            goNext = CheckIfGoNext (common);
                            if (goNext) {
                                //先重置
                                goNext = false;
                                //网关版本符合要求,判断是否绑定网关成功,绑定成功了才能进行下一步
                                goNext = CheckIfBindGatewaySuccess (common);
                            }
                         
                        } catch (Exception ex) {
                            Utlis.WriteLine (ex.Message);
@@ -342,7 +350,46 @@
            }
        }
        /// <summary>
        /// 检测是否绑定网关成功
        /// </summary>
        /// <returns></returns>
        static bool CheckIfBindGatewaySuccess (GatewayBase gatewayBase)
        {
            try {
                if (UserConfig.Instance.CheckHomeGatewaysNotEmpty ()) {
                    //之前绑定过网关,并且和当前搜索到到网关一致
                    if (UserConfig.Instance.HomeGateway.mac.ToUpper () == gatewayBase.MAC.Replace (".", "").ToUpper ()) {
                        return true;
                    }
                }
                var gatewayMAC = gatewayBase.MAC.Replace (".", "");
                //重新绑定
                var bindGatewayObj = new BindGatewayObj () {
                    homeId = UserConfig.Instance.CurrentRegion.Id,
                    subnetId = gatewayBase.sceneID,
                    deviceId = gatewayBase.DeviceID,
                    gatewayType = GatewayType.BUSUDPGATEWAY.ToString (),
                    mac = gatewayMAC
                };
                var revertObj = HttpServerRequest.Current.BindGateway (bindGatewayObj);
                if (revertObj.Code == StateCode.SUCCESS) {
                    var homeGatewayInfo = Newtonsoft.Json.JsonConvert.DeserializeObject<HomeGatewayInfo> (revertObj.Data.ToString ());
                    if (homeGatewayInfo != null && !string.IsNullOrEmpty (homeGatewayInfo.gatewayId)) {
                        //绑定网关成功,并且成功获取到新绑定的gatewayId
                        UserConfig.Instance.HomeGateway = homeGatewayInfo;
                        UserConfig.Instance.SaveUserConfig ();
                        return true;
                    }
                } else {
                    IMessageCommon.Current.ShowErrorInfoAlter (revertObj.Code);
                }
            } catch {
            }
            return false;
        }
        static bool inThisView = false;
Crabtree/SmartHome/UI/SimpleControl/Phone/Guide/GuideSettingGateway.cs
@@ -713,7 +713,7 @@
                                return;
                            }
                        }
                        BindGatewaysNew ();
                        GotoHomePage ();
                    }
                } catch (Exception ex) {
                    Utlis.WriteLine (ex.Message);
@@ -914,80 +914,73 @@
                }
            }
            BindGatewaysNew ();
            GotoHomePage ();
        }
        /// <summary>
        /// Gateway setting succeeded,data up.Please wait...
        /// 绑定Mac(印度版)
        /// </summary>
        void BindGatewaysNew ()
        {
            Application.RunOnMainThread (() => {
                MainPage.Loading.Start ("Gateway setting succeeded,data up. Please wait...");
            });
            IO.FileUtils.SaveEquipmentMessage (gatewayDeicve);
            var gatewayMAC = gatewayDeicve.MAC.Replace (".", "");
        ///// <summary>
        ///// Gateway setting succeeded,data up.Please wait...
        ///// 绑定Mac(印度版)
        ///// </summary>
        //void BindGatewaysNew ()
        //{
        //    //Application.RunOnMainThread (() => {
        //    //    MainPage.Loading.Start ("Gateway setting succeeded,data up. Please wait...");
        //    //});
        //    //IO.FileUtils.SaveEquipmentMessage (gatewayDeicve);
        //    //var gatewayMAC = gatewayDeicve.MAC.Replace (".", "");
            //走新更新绑定接口
            var mBindMacObj = new BindMacObj () {
                LoginAccessToken = MainPage.LoginUser.LoginTokenString,
                HomeId = UserConfig.Instance.CurrentRegion.Id,
                MAC = gatewayMAC
        //    ////走新更新绑定接口
        //    //var mBindMacObj = new BindMacObj () {
        //    //    LoginAccessToken = MainPage.LoginUser.LoginTokenString,
        //    //    HomeId = UserConfig.Instance.CurrentRegion.Id,
        //    //    MAC = gatewayMAC
            };
            string urlHead = MainPage.RequestHttpsHost;
            if (mBindMacObj.IsOtherAccountCtrl) {
                urlHead = UserConfig.Instance.MasterAccountRequestBaseUrl;
                mBindMacObj.LoginAccessToken = UserConfig.Instance.MasterAccountToken;
            }
        //    //};
        //    //string urlHead = MainPage.RequestHttpsHost;
        //    //if (mBindMacObj.IsOtherAccountCtrl) {
        //    //    urlHead = UserConfig.Instance.MasterAccountRequestBaseUrl;
        //    //    mBindMacObj.LoginAccessToken = UserConfig.Instance.MasterAccountToken;
        //    //}
            var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject (mBindMacObj);
        //    //var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject (mBindMacObj);
            //var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject (new EditMACByHomeId { RegionID = UserConfig.Instance.CurrentRegion.Id, MAC = gatewayMAC, IsReBind = true });
            var respone = MainPage.RequestHttps (API.BindMac, requestJson, urlHead);
            if (respone.StateCode.ToUpper () != StateCode.SUCCESS) {
                GetNowHomeGatewayAfterBindMacFailed ();//2020-01-11
                Application.RunOnMainThread (() => {
                    new Alert ("", $"Failed to bind Mac address! {ErrorCode.Reason }{respone.StateCode}", Language.StringByID (R.MyInternationalizationString.Close)).Show ();
                    if (MainPage.LoginUser.AccountString == "464027401@qq.com") {
                        new Alert (respone.StateCode, respone.ErrorInfo, Language.StringByID (R.MyInternationalizationString.Close)).Show ();
                    }
                });
                return;
            }
            //GetNowHomeGateway ();
            AddMacToUserConfig (gatewayMAC);
        //    ////var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject (new EditMACByHomeId { RegionID = UserConfig.Instance.CurrentRegion.Id, MAC = gatewayMAC, IsReBind = true });
        //    //var respone = MainPage.RequestHttps (API.BindMac, requestJson, urlHead);
        //    //if (respone.StateCode.ToUpper () != StateCode.SUCCESS) {
        //    //    GetNowHomeGatewayAfterBindMacFailed ();//2020-01-11
        //    //    Application.RunOnMainThread (() => {
        //    //        new Alert ("", $"Failed to bind Mac address! {ErrorCode.Reason }{respone.StateCode}", Language.StringByID (R.MyInternationalizationString.Close)).Show ();
        //    //        if (MainPage.LoginUser.AccountString == "464027401@qq.com") {
        //    //            new Alert (respone.StateCode, respone.ErrorInfo, Language.StringByID (R.MyInternationalizationString.Close)).Show ();
        //    //        }
        //    //    });
        //    //    return;
        //    //}
        //    //GetNowHomeGateway ();
        }
        //    var gatewayMAC = gatewayDeicve.MAC.Replace (".", "");
        //    AddMacToUserConfig (gatewayMAC);
        //}
        /// <summary>
        /// 修改切换本地住宅 网关
        /// 跳转主页面
        /// </summary>
        void AddMacToUserConfig (string gatewayMAC)
        void GotoHomePage ()
        {
            UserConfig.Instance.GatewayMAC = gatewayMAC;
            UserConfig.Instance.SaveUserConfig ();
            MainPage.LoginUser.LastTime = DateTime.Now;
            Application.RunOnMainThread (() => {
                bodyView.RemoveAll ();
                this.RemoveFromParent ();
                //MainPage.WiFiStatus = "CrabtreeAdd/WiFi.png";
                UserMiddle.Init (true);
                MainPage.WiFiStatus = "CrabtreeAdd/WiFi.png";
                UserMiddle.btnLinkStatus.UnSelectedImagePath = MainPage.WiFiStatus;
            });
            //Utlis.ShowAppLinkStatus (AppLinkStatus.WiFi);
        }
        ///// <summary>
@@ -1075,35 +1068,35 @@
        //}
        /// <summary>
        /// 绑定失败之后,查询刷新一次当前住宅 网关列表
        /// 2020-01-11
        /// </summary>
        void GetNowHomeGatewayAfterBindMacFailed ()
        {
        ///// <summary>
        ///// 绑定失败之后,查询刷新一次当前住宅 网关列表
        ///// 2020-01-11
        ///// </summary>
        //void GetNowHomeGatewayAfterBindMacFailed ()
        //{
            var requestObj3 = new GetSingleHomeGatewayPaggerObj ();
            requestObj3.ReqDto.LoginAccessToken = MainPage.LoginUser.LoginTokenString;
            requestObj3.ReqDto.HomeId = UserConfig.Instance.CurrentRegion.Id;
            requestObj3.ReqDto.PageSetting.Page = 1;
            requestObj3.ReqDto.PageSetting.PageSize = 10;
            string urlHead = MainPage.RequestHttpsHost;
            if (requestObj3.IsOtherAccountCtrl) {
                urlHead = UserConfig.Instance.MasterAccountRequestBaseUrl;
                requestObj3.ReqDto.LoginAccessToken = UserConfig.Instance.MasterAccountToken;
            }
        //    var requestObj3 = new GetSingleHomeGatewayPaggerObj ();
        //    requestObj3.ReqDto.LoginAccessToken = MainPage.LoginUser.LoginTokenString;
        //    requestObj3.ReqDto.HomeId = UserConfig.Instance.CurrentRegion.Id;
        //    requestObj3.ReqDto.PageSetting.Page = 1;
        //    requestObj3.ReqDto.PageSetting.PageSize = 10;
        //    string urlHead = MainPage.RequestHttpsHost;
        //    if (requestObj3.IsOtherAccountCtrl) {
        //        urlHead = UserConfig.Instance.MasterAccountRequestBaseUrl;
        //        requestObj3.ReqDto.LoginAccessToken = UserConfig.Instance.MasterAccountToken;
        //    }
            var requestJson3 = Newtonsoft.Json.JsonConvert.SerializeObject (requestObj3);
            var revertObj3 = MainPage.RequestHttps (API.GetSingleHomeGatewayPagger, requestJson3, urlHead);
            if (revertObj3.StateCode.ToUpper () == StateCode.SUCCESS) {
                var infoResult = Newtonsoft.Json.JsonConvert.DeserializeObject<GetGatewayResult> (revertObj3.ResponseData.ToString ());
                //2020-01-11
                UserConfig.Instance.SetNowHomeGateways (infoResult.PageData);
        //    var requestJson3 = Newtonsoft.Json.JsonConvert.SerializeObject (requestObj3);
        //    var revertObj3 = MainPage.RequestHttps (API.GetSingleHomeGatewayPagger, requestJson3, urlHead);
        //    if (revertObj3.StateCode.ToUpper () == StateCode.SUCCESS) {
        //        var infoResult = Newtonsoft.Json.JsonConvert.DeserializeObject<GetGatewayResult> (revertObj3.ResponseData.ToString ());
        //        //2020-01-11
        //        UserConfig.Instance.SetNowHomeGateways (infoResult.PageData);
                
            }
        //    }
        }
        //}
        #region 2020-07-02
        /// <summary>
README.md
@@ -2,6 +2,9 @@
CrabtreeOn
备注:
app目前本地通信开启了加密模式,密码为住宅ID前16位,点击搜索到的网关时会自动写加密密码给无线网关。
2020
客户的新需求记录
1.密码规则:密码必须是8-20个字符,包括至少一个大小写字母,数字和特殊字符。