mac
2024-07-25 3f6685c77beeb12baf840733fb890860f4c26e7c
HDL_ON/UI/UI1-Login/LoginPage.cs
@@ -22,6 +22,76 @@
                Application.HideSoftInput();
            };
            pm = new HttpServerRequest();
#if __ANDROID__
            BaseActivity.HideKeyboardEvent = () => {
                if (this.Y != 0)
                {
                    Application.RunOnMainThread(() =>
                    {
                        try
                        {
                            this.Y = 0;
                        }
                        catch { }
                    });
                }
            };
            BaseActivity.ShowKeyboardEvent = () => {
                try
                {
                    if (etPassword.Foucs)
                    {
                        new Thread(() =>
                        {
                            Thread.Sleep(100);
                            if (this.Y < 0)
                            {
                                return;
                            }
                            for (var i = 0; i < 10; i++)
                            {
                                Application.RunOnMainThread(() =>
                                {
                                    try
                                    {
                                        this.Y = 0 - Application.GetRealHeight(10 * i);
                                    }
                                    catch { }
                                });
                                Thread.Sleep(10);
                            }
                        })
                        { IsBackground = true }.Start();
                    }
                }
                catch { }
            };
            BaseActivity.SmsAction = (message) => {
                Console.WriteLine($"接收到短信:"+ message);
                string pattern = @"【HDL】.*(\d{6}).*";
                Regex regex = new Regex(pattern);
                Match match = regex.Match(message);
                if (match.Success)
                {
                    string code = match.Groups[1].Value;
                    Console.WriteLine("验证码为:" + code);
                    if(loginType==0 && logintMode == 1)
                    {
                        etPassword.Text = code;
                    }
                    smsCode = code;
                }
                else
                {
                    Console.WriteLine("未找到验证码!");
                }
            };
#endif
        }
        public override void RemoveFromParent()
@@ -33,13 +103,20 @@
                waitPage = null;
            }
#if __ANDROID__
            BaseActivity.HideKeyboardEvent = () => {
            };
            BaseActivity.ShowKeyboardEvent = () => { };
            BaseActivity.SmsAction = (sms) => { };
#endif
            base.RemoveFromParent();
            ////2020-12-22 增加点击隐藏键盘事件
            //2020-12-22 增加点击隐藏键盘事件
            //Application.HideSoftInput();
        }
        #region 局部变量
#region 局部变量
        /// <summary>
        /// 登录类型
        /// 0:手机
@@ -54,9 +131,13 @@
        int logintMode = 0;
        string account = "";
        string password = "";
        #endregion
        /// <summary>
        /// 短信验证码
        /// </summary>
        string smsCode = "";
#endregion
        #region 控件列表
#region 控件列表
        /// <summary>
        /// 等待提示
        /// </summary>
@@ -149,7 +230,7 @@
        /// 服务器请求对象
        /// </summary>
        HttpServerRequest pm;
        #endregion
#endregion
        string verAccount = "";
@@ -171,6 +252,8 @@
#if __Android__
            OnAppConfig.Instance.isAgreePrivacyPolicy = true;
#endif
            this.BackgroundColor = CSS_Color.MainBackgroundColor;
            var btnIcon = new Button()
            {
                X = Application.GetRealWidth(28),
@@ -190,6 +273,9 @@
                UnSelectedImagePath = "Public/Logo-bg.png"
            };
            bodyView.AddChidren(btnIcon_bg);
            btnIcon_bg.MouseDownEventHandler += (sender, e) => {
                Application.HideSoftInput();
            };
#if DEBUG
            btnIcon_bg.MouseUpEventHandler += (sender, e) =>
@@ -208,84 +294,65 @@
                //return;
                if (b)
                {
                    //etAccount.Text = "13375012446";//测试服务器
                    //etAccount.Text = "1033326940@qq.com";
                    //etAccount.Text = "18022428438";//wjc
                    //etAccount.Text = "13602944661";//kx
                    //etAccount.Text = "13226233133";//豆豆
                    //etAccount.Text = "18316120654";//tujie
                    //etAccount.Text = "13450425807";//黄竹溪 knx项目
                    //etAccount.Text = "tf@smarttech.com.ua";
                    //etAccount.Text = "455740454@qq.com";
                    //etAccount.Text = "18688565449";
                    //etAccount.Text = "support7@hdlautomation.com";
                    //etAccount.Text = "18570064522";
                    //etAccount.Text = "18718417827";
                    etAccount.Text = "18188019284";
                    //etAccount.Text = "13143792049";
                    //etAccount.Text = "13288623489";//罗晓东
                    //etAccount.Text = "18244942707";
                    //etAccount.Text = "13143792049";
                    etAccount.Text = "18688414428";//天河3楼
                    //etAccount.Text = "18244942707";
                    //etAccount.Text = "12345678904";
                    //etAccount.Text = "13418062953";
                    etAccount.Text = "13138683659";
                    //etAccount.Text = "15217626103";
                    etAccount.Text = "18100573477";
                    //etAccount.Text = "18688414428";//天河3楼
                    //etAccount.Text = "pjh@hdlchina.com.cn";
                    //etAccount.Text = "12345678904";//2.0 测试  萤石
                    //etAccount.Text = "1272061968@qq.com";//万科城市之光E区8栋206
                    //etAccount.Text = "marketing@australindo.co.id";
                    //etAccount.Text = "13922115008";//刘总
                    //etAccount.Text = "support7@hdlautomation.com";
                    etAccount.Text = "13336018868";
                    etAccount.Text = "13435693712";
                }
                else
                {
                    //etAccount.Text = "15018447586";//音乐数量刷新问题
                    //etAccount.Text = "464027401@qq.com";//
                    //etAccount.Text = "15217626103";//
                    //etAccount.Text = "13682244600";//波哥
                    etAccount.Text = "13168123446";//昆明金茂项目,新风问题
                    //etAccount.Text = "13168123446";//昆明金茂项目,新风问题
                    //etAccount.Text = "2949126848@qq.com";//陈琳
                    etAccount.Text = "15014291819 ";
                    //etAccount.Text = "13676202754";//巴林服务器
                    //etAccount.Text = "13602944661";//kx
                    //etAccount.Text = "18666455392";//13375012446//13602944661//tzy 18778381374
                    //etAccount.Text = "15971583093";//高胜
                    //etAccount.Text = "15217626103";//昆明金茂项目
                    //etAccount.Text = "18598273624";
                    //etAccount.Text = "tf@smarttech.com.ua";
                    //etAccount.Text = "18814122445";//董泽斌 天河办公室
                    //etAccount.Text = "18824864143";//"464027401@qq.com"; //"2791308028@qq.com";//13697499568
                    //etAccount.Text = "18402017839";//wjc
                    //etAccount.Text = "13430286286";//cwc
                    //etAccount.Text = "13709260805";
                    //etAccount.Text = "support5@hdlchina.com.cn";
                    //etAccount.Text = "13375012441";
                    //etAccount.Text = "info@smartlife-ks.com";
                    //etAccount.Text = "551775569@qq.com";//wcf
                    etAccount.Text = "15626203746";
                    //etAccount.Text = "zhangquansongjava@163.com";
                    //etAccount.Text = "s.savinov@hdlautomation.ru";
                }
                b = !b;
                etPassword.Text = "123456";
                if(etAccount.Text == "18188019284")
                if(etAccount.Text == "13336018868")
                {
                    etPassword.Text = "CEZUJHSZ";
                    etPassword.Text = "zzy20020928";
                }
                else if(etAccount.Text == "13143792049")
                else if(etAccount.Text == "13435693712")
                {
                    etPassword.Text = "BVVBQATD";
                    etPassword.Text = "a123456";
                }else if(etAccount.Text == "13288623489")
                {
                    etPassword.Text = "luoxiaodong";
                }else if(etAccount.Text == "18688414428")
                }else if(etAccount.Text == "15014291819")
                {
                    etPassword.Text = "HDL1985000";
                }else if (etAccount.Text == "13138683659")
                    etPassword.Text = "hdl123456";
                }else if (etAccount.Text == "15262988048")
                {
                    etPassword.Text = "wsad123321";
                    etPassword.Text = "15262988048";
                }
                else if (etAccount.Text == "18100573477")
                else if (etAccount.Text == "649362315@qq.com")
                {
                    etPassword.Text = "huang12345";
                    etPassword.Text = "aa123456";
                }else if(etAccount.Text == "dcai.assist@gmail.com")
                {
                    etPassword.Text = "GraniteTileS57";
                }
                //etPassword.Text = "Hdl85521566";
                btnLogin.IsSelected = true;
@@ -314,7 +381,7 @@
                Height = Application.GetRealHeight(40),
                TextID = StringId.LoginByEmail,
                TextColor = CSS_Color.PromptingColor1,
                TextAlignment = TextAlignment.Center,
                TextAlignment = TextAlignment.CenterLeft,
                TextSize = CSS_FontSize.TextFontSize,
            };
            bodyView.AddChidren(btnEmailLogin);
@@ -379,6 +446,9 @@
                PlaceholderText = Language.StringByID(StringId.PlsEntryPhoneNumber),
                TextAlignment = TextAlignment.CenterLeft,
            };
#if __IOS__
            etAccount.MyTextContentType = UIKit.UITextContentType.Name;
#endif
            accountView.AddChidren(etAccount);
            if (userInfo != null && userInfo.ID != "1234567890")
@@ -451,6 +521,7 @@
                PlaceholderText = Language.StringByID(StringId.PlsEntryPassword),
                SecureTextEntry = true,
                TextAlignment = TextAlignment.CenterLeft,
            };
            passwordView.AddChidren(etPassword);
@@ -678,8 +749,8 @@
#region 功能
                var lightRgb1 = new Function()
                {
                    sid = "light1",
                    deviceId = "light1",
                    sid = "light10000000000",
                    deviceId = "light10000000000",
                    name = Language.CurrentLanguage == "Chinese"?  "客厅氛围灯1": "RGB light 1",
                    spk = SPK.LightRGB,
                    roomIds = new List<string>() { "1405771024583090178"},
@@ -689,8 +760,12 @@
                        new FunctionAttributes() { key = "on_off",value =new List<string>(){ "on","off" }, curValue="on",state = "on"   },
                        new FunctionAttributes() { key = "brightness",value =new List<string>(){ "0","100" }, curValue="100",state = "100"   },
                        new FunctionAttributes() { key = "rgb",value =new List<string>(){ "0","100" }, curValue="0,0,0",state = "0,0,0"   },
                        //new FunctionAttributes() { key = "fade_time",value =new List<string>(){ "0","100" }, curValue="0",state = "0"   },
                        new FunctionAttributes() { key = "fade_time",value =new List<string>(){ "0","100" }, curValue="0",state = "0"   },
                        new FunctionAttributes() { key = "delay",value =new List<string>(){ "0","100" }, curValue="0",state = "0"   },
                        new FunctionAttributes() { key = "colorful",value =new List<string>(){ "on","off" }, curValue="on",state = "on"   },
                        new FunctionAttributes() { key = FunctionAttributeKey.ColorfulBegin,value =new List<string>(){ "0","100" }, curValue="0,0,0",state = "0,0,0"   },
                        new FunctionAttributes() { key = FunctionAttributeKey.ColorfulEnd,value =new List<string>(){ "0","100" }, curValue="0,0,0",state = "0,0,0"   },
                        new FunctionAttributes() { key = FunctionAttributeKey.ColorfulTime,value =new List<string>(){ "0","100" }, curValue="0",state = "0"   },
                    },
                };
                lightRgb1.SaveFunctionFile();
@@ -817,6 +892,7 @@
                        new FunctionAttributes() { key = "mode",value =new List<string>(){ "day", "night", "away", "normal", "timer" }, curValue="day",state = "day"   },
                        new FunctionAttributes() { key = "set_temp",value =new List<string>(){ "" }, curValue="26",state = "26" ,max = 35,min = 5  },
                        new FunctionAttributes() { key = "room_temp",value =new List<string>(){ "" }, curValue="26",state = "26"   },
                        new FunctionAttributes() { key = "temperature_type", value = new List<string>() { "°F", "°C" }, curValue = "°C", state = "°C" },
                    },
                };
                fh.SaveFunctionFile();
@@ -824,6 +900,119 @@
#if DEBUG
                var hesTv = new Function()
                {
                    sid = "hisense000000000001",
                    deviceId = "hisense000000000001",
                    name = "海信电视",
                    spk = SPK.ElectricalTvHisense,
                    roomIds = new List<string>() { "1405771024583090178" },
                    attributes = new List<FunctionAttributes>()
                    {
                        new FunctionAttributes() { key = "on_off",value =new List<string>(){ "off" }, curValue="on",state = "on"   },
                        new FunctionAttributes() { key = "wol",value =new List<string>(){ "on" }, curValue="on",state = "on"   },
                    }
                };
                hesTv.SaveFunctionFile();
                var airSwitchP3 = new Function()
                {
                    sid = "airSwitchP3000000000001",
                    deviceId = "airSwitchP3000000000001",
                    name = "测试-三相智能空开",
                    spk = SPK.AirSwitchP3,
                    roomIds = new List<string>() { "1405771024583090178" },
                    attributes = new List<FunctionAttributes>()
                    {
                        new FunctionAttributes() { key = "on_off",value =new List<string>(){ "on","off" }, curValue="on",state = "on"   },
                        new FunctionAttributes() { key = "delay",value =new List<string>(){ "0","100" }, curValue="0",state = "0"   },
                        new FunctionAttributes() { key = FunctionAttributeKey.PowerA,value =new List<string>(){ "" }, curValue="26",state = "26" ,max = 1000,min = 0  },
                        new FunctionAttributes() { key = FunctionAttributeKey.PowerB,value =new List<string>(){ "" }, curValue="26",state = "26" ,max = 1000,min = 0  },
                        new FunctionAttributes() { key = FunctionAttributeKey.PowerC,value =new List<string>(){ "" }, curValue="26",state = "26" ,max = 1000,min = 0  },
                        new FunctionAttributes() { key = FunctionAttributeKey.VoltageA,value =new List<string>(){ "" }, curValue="26",state = "26" ,max = 1000,min = 0  },
                        new FunctionAttributes() { key = FunctionAttributeKey.VoltageB,value =new List<string>(){ "" }, curValue="26",state = "26" ,max = 1000,min = 0  },
                        new FunctionAttributes() { key = FunctionAttributeKey.VoltageC,value =new List<string>(){ "" }, curValue="26",state = "26" ,max = 1000,min = 0  },
                        new FunctionAttributes() { key = FunctionAttributeKey.CurrentA,value =new List<string>(){ "" }, curValue="26",state = "26" ,max = 1000,min = 0  },
                        new FunctionAttributes() { key = FunctionAttributeKey.CurrentB,value =new List<string>(){ "" }, curValue="26",state = "26" ,max = 1000,min = 0  },
                        new FunctionAttributes() { key = FunctionAttributeKey.CurrentC,value =new List<string>(){ "" }, curValue="26",state = "26" ,max = 1000,min = 0  },
                        new FunctionAttributes() { key = FunctionAttributeKey.TempA,value =new List<string>(){ "" }, curValue="26",state = "26" ,max = 1000,min = 0  },
                        new FunctionAttributes() { key = FunctionAttributeKey.TempB,value =new List<string>(){ "" }, curValue="26",state = "26" ,max = 1000,min = 0  },
                        new FunctionAttributes() { key = FunctionAttributeKey.TempC,value =new List<string>(){ "" }, curValue="26",state = "26" ,max = 1000,min = 0  },
                        new FunctionAttributes() { key = FunctionAttributeKey.MaxCurrent,value =new List<string>(){ "" }, curValue="26",state = "26" ,max = 1000,min = 0  },
                        new FunctionAttributes() { key = FunctionAttributeKey.MaxTemp,value =new List<string>(){ "" }, curValue="26",state = "26" ,max = 1000,min = 0  },
                        new FunctionAttributes() { key = FunctionAttributeKey.ElectricityA,value =new List<string>(){ "" }, curValue="26",state = "26" ,max = 1000,min = 0  },
                        new FunctionAttributes() { key = FunctionAttributeKey.ElectricityB,value =new List<string>(){ "" }, curValue="26",state = "26" ,max = 1000,min = 0  },
                        new FunctionAttributes() { key = FunctionAttributeKey.ElectricityC,value =new List<string>(){ "" }, curValue="26",state = "26" ,max = 1000,min = 0  },
                        new FunctionAttributes() { key = FunctionAttributeKey.TotalElectricity,value =new List<string>(){ "" }, curValue="26",state = "26" ,max = 1000,min = 0  },
                    },
                    //collect = true,
                };
                airSwitchP3.SaveFunctionFile();
                if (FunctionList.List.groupControls.Count == 0)
                {
                    FunctionList.List.groupControls.Add(new GroupControl()
                    {
                        name = "群控测试",
                        collect = true,
                        sid = "234567876545678765",
                        uids = new List<string>()
                        {
                            "1405771024583090178",
                            "9191a3a2-026f-4667-a0b1-e3af699e7295",
                        },
                        roomIds = new List<string>()
                        {
                            "1405771024583090178",
                            "9191a3a2-026f-4667-a0b1-e3af699e7295",
                        },
                        sids = new List<GroupControlFunction>()
                        {
                            new GroupControlFunction(){
                                sid = lightRgb1.sid,
                                spk = SPK.LightRGB,
                            },
                            new GroupControlFunction(){
                                sid = "light2",
                                spk = SPK.LightRGB,
                            },
                        }
                    });
                }
                var series1 = new Function()
                {
                    sid = "light10000000000series1",
                    deviceId = "light10000000000series1",
                    name = Language.CurrentLanguage == "Chinese" ? "序列1" : "Series1",
                    spk = SPK.CommonSeries,
                    roomIds = new List<string>() { "1405771024583090178" },
                    attributes = new List<FunctionAttributes>()
                    {
                        new FunctionAttributes() { key = "on_off",value =new List<string>(){ "on","off" }, curValue="on",state = "on"   },
                    },
                };
                series1.SaveFunctionFile();
                var series2 = new Function()
                {
                    sid = "light10000000000series2",
                    deviceId = "light10000000000series2",
                    name = Language.CurrentLanguage == "Chinese" ? "序列2" : "Series2",
                    spk = SPK.CommonSeries,
                    roomIds = new List<string>() { "1405771024583090178" },
                    attributes = new List<FunctionAttributes>()
                    {
                        new FunctionAttributes() { key = "on_off",value =new List<string>(){ "on","off" }, curValue="on",state = "on"   },
                    },
                };
                series2.SaveFunctionFile();
                var mechanicalArm = new Function()
                {
                    sid = "mechanicalArm1",
@@ -862,7 +1051,7 @@
                {
                    name = "测试-空调科技系统总控",
                    spk = SPK.AcstParent,
                    collect = true,
                    //collect = true,
                    attributes = new List<FunctionAttributes>()
                {
                    new FunctionAttributes(){ key = FunctionAttributeKey.OnOff ,curValue = "on",state = "on" },
@@ -889,17 +1078,17 @@
                    new FunctionAttributes(){ key = AcstParent_AttrEnum.month_electricity.ToString(),curValue = "999",state = "999"},
                    new FunctionAttributes(){ key = AcstParent_AttrEnum.total_electricity.ToString(),curValue = "9999",state = "9999"},
                    new FunctionAttributes(){ key = AcstParent_AttrEnum.active_power.ToString(),curValue = "9999",state = "9999"},
                    //new FunctionAttributes(){ key = AcstParent_AttrEnum.room_temp.ToString(),curValue = "26",state = "26"},
                    //new FunctionAttributes(){ key = AcstParent_AttrEnum.room_humidity.ToString(),curValue = "66",state = "66"},
                    //new FunctionAttributes(){ key = AcstParent_AttrEnum.co2.ToString(),curValue = "266",state = "266"},
                    //new FunctionAttributes(){ key = AcstParent_AttrEnum.tvoc.ToString(),curValue = "666",state = "666"},
                    //new FunctionAttributes(){ key = AcstParent_AttrEnum.pm25.ToString(),curValue = "36",state = "36"},
                    new FunctionAttributes(){ key = AcstParent_AttrEnum.room_temp.ToString(),curValue = "26",state = "26"},
                    new FunctionAttributes(){ key = AcstParent_AttrEnum.room_humidity.ToString(),curValue = "66",state = "66"},
                    new FunctionAttributes(){ key = AcstParent_AttrEnum.co2.ToString(),curValue = "266",state = "266"},
                    new FunctionAttributes(){ key = AcstParent_AttrEnum.tvoc.ToString(),curValue = "666",state = "666"},
                    new FunctionAttributes(){ key = AcstParent_AttrEnum.pm25.ToString(),curValue = "36",state = "36"},
                }
                });
                FunctionList.List.Functions.Add(new Function
                {
                    name = "测试-空调科技系统子控-1",
                    name = "子控-1",
                    spk = SPK.AcstSub,
                    sid = "0000001",
                    attributes = new List<FunctionAttributes>()
@@ -912,7 +1101,7 @@
                });
                FunctionList.List.Functions.Add(new Function
                {
                    name = "测试-空调科技系统子控-2",
                    name = "子控-2",
                    spk = SPK.AcstSub,
                    sid = "0000002",
                    attributes = new List<FunctionAttributes>()
@@ -925,7 +1114,7 @@
                });
                FunctionList.List.Functions.Add(new Function
                {
                    name = "测试-空调科技系统子控-3",
                    name = "子控-3",
                    spk = SPK.AcstSub,
                    sid = "0000003",
                    attributes = new List<FunctionAttributes>()
@@ -938,7 +1127,7 @@
                });
                FunctionList.List.Functions.Add(new Function
                {
                    name = "测试-空调科技系统子控-4",
                    name = "子控-4",
                    spk = SPK.AcstSub,
                    sid = "0000004",
                    attributes = new List<FunctionAttributes>()
@@ -951,7 +1140,7 @@
                });
                FunctionList.List.Functions.Add(new Function
                {
                    name = "测试-空调科技系统子控-5",
                    name = "子控-5",
                    spk = SPK.AcstSub,
                    sid = "0000005",
                    attributes = new List<FunctionAttributes>()
@@ -966,34 +1155,34 @@
                //FunctionList.List.Functions.Add(new Function
                //{
                //    name = "测试梦幻窗帘",
                //    spk = SPK.CurtainDream,
                //    sid = "1234577",
                //    attributes = new List<FunctionAttributes> {
                //        new FunctionAttributes(){ key = "on_off",curValue= "on",state = "on" },
                //        new FunctionAttributes(){ key = "percent",curValue= "100",state = "100" },
                //        new FunctionAttributes(){ key = "angle",curValue= "0",state = "0" },
                //    }
                //});
                FunctionList.List.Functions.Add(new Function
                {
                    name = "测试梦幻窗帘",
                    spk = SPK.CurtainDream,
                    sid = "1234577",
                    attributes = new List<FunctionAttributes> {
                        new FunctionAttributes(){ key = "on_off",curValue= "on",state = "on" },
                        new FunctionAttributes(){ key = "percent",curValue= "100",state = "100" },
                        new FunctionAttributes(){ key = "angle",curValue= "0",state = "0" },
                    }
                });
                //FunctionList.List.Functions.Add(new Function
                //{
                //    name = "测试毫米波传感器",
                //    spk = SPK.SenesorMegahealth,
                //    attributes = new List<FunctionAttributes>
                //    {
                //        new FunctionAttributes(){ key = "enable",curValue = "true",state = "true" },
                //        new FunctionAttributes(){ key = "people_num",curValue = "0",state = "0" },
                //        new FunctionAttributes(){ key = "people_id",curValue = "1",state = "1" },
                //        new FunctionAttributes(){ key = "target_status",curValue = "0",state = "0" },//0空,1走,2跑,3坐,4跌倒,5站
                //        new FunctionAttributes(){ key = "people_status",curValue = "false",state = "false" },//状态  有人无人
                //        //new FunctionAttributes(){ key = "",curValue = "",state = "" },
                //        //new FunctionAttributes(){ key = "",curValue = "",state = "" },
                //        //new FunctionAttributes(){ key = "",curValue = "",state = "" },
                //    }
                //});
                FunctionList.List.Functions.Add(new Function
                {
                    name = "测试毫米波传感器",
                    spk = SPK.SenesorMegahealth,
                    attributes = new List<FunctionAttributes>
                    {
                        new FunctionAttributes(){ key = "enable",curValue = "true",state = "true" },
                        new FunctionAttributes(){ key = "people_num",curValue = "0",state = "0" },
                        new FunctionAttributes(){ key = "people_id",curValue = "1",state = "1" },
                        new FunctionAttributes(){ key = "target_status",curValue = "1",state = "1" },//0空,1走,2跑,3坐,4跌倒,5站
                        new FunctionAttributes(){ key = "people_status",curValue = "false",state = "false" },//状态  有人无人
                        //new FunctionAttributes(){ key = "",curValue = "",state = "" },
                        //new FunctionAttributes(){ key = "",curValue = "",state = "" },
                        //new FunctionAttributes(){ key = "",curValue = "",state = "" },
                    }
                });
                FunctionList.List.Functions.Add(new Function
                {
                    name = "测试温控器",
@@ -1064,15 +1253,69 @@
                //    }
                //});
                //FunctionList.List.Functions.Add(new Function()
                //{
                //    spk = SPK.SensorDryContact,
                //    name = "干接点",
                //    attributes = new List<FunctionAttributes>()
                //    {
                //        new FunctionAttributes(){ key = "status",curValue= "on",state = "on" },
                //    },
                //});
                FunctionList.List.Functions.Add(new Function()
                {
                    spk = SPK.SensorDryContact,
                    name = "干接点",
                    //collect = true,
                    sid = "sss000001",
                    attributes = new List<FunctionAttributes>()
                    {
                        new FunctionAttributes(){ key = "contact_status",curValue= "open",state = "open" },
                    },
                });
                FunctionList.List.Functions.Add(new Function()
                {
                    spk = SPK.SensorLight,
                    name = "光照传感器",
                    //collect = true,
                    sid = "SensorLightsss000001",
                    attributes = new List<FunctionAttributes>()
                    {
                        new FunctionAttributes(){ key = "illuminance",curValue= "100",state = "100" },
                    },
                });
                FunctionList.List.Functions.Add(new Function()
                {
                    spk = SPK.OtherCommon,
                    name = "通用开关",
                    //collect = true,
                    sid = "sssCommon000001",
                    attributes = new List<FunctionAttributes>()
                    {
                        new FunctionAttributes(){ key = "on_off",curValue= "on",state = "off" },
                    },
                });
                FunctionList.List.Functions.Add(new Function()
                {
                    spk = SPK.SensorPir,
                    name = "人体存在传感器1",
                    collect = true,
                    sid = "sss000001111",
                    attributes = new List<FunctionAttributes>()
                    {
                        new FunctionAttributes(){ key = "people_status",curValue= "false",state = "false" },
                    },
                });
                FunctionList.List.Functions.Add(new Function()
                {
                    spk = SPK.SensorPirHold,
                    name = "人体存在传感器2",
                    collect = true,
                    sid = "sss0000011112",
                    attributes = new List<FunctionAttributes>()
                    {
                        new FunctionAttributes(){ key = "people_status",curValue= "true",state = "true" },
                    },
                });
                //FunctionList.List.Functions.Add(new Function()
                //{
@@ -1087,7 +1330,7 @@
                //        new AttrKeyConfig (){
                //            key = "pm2.5",
                //            type = "interval" ,
                //            unit = "ug/m²",
                //            unit = "ug/m³",
                //            configs = new List<AttrKeyInfo>(){
                //               new AttrKeyInfo(){ start = "0",end = "75",color = "0xFFADE764", desc = "良好"},
                //               new AttrKeyInfo(){ start = "76",end = "150",color = "0xFFFFD154",desc = "轻/中度污染"},
@@ -1097,19 +1340,19 @@
                //    },
                //});
                //FunctionList.List.Functions.Add(new Function()
                //{
                //    spk = SPK.SensorHelp,
                //    name = "测试紧急求助按钮",
                //    attributes = new List<FunctionAttributes>()
                //    {
                //        new FunctionAttributes(){ key = "status",curValue= "on",state = "on" },
                //        new FunctionAttributes(){ key = "alarm_status",curValue= "alarm",state = "alarm" },
                //        new FunctionAttributes(){ key = "battery_value",curValue= "200",state = "200" },
                //        new FunctionAttributes(){ key = "battery_percentage",curValue= "10",state = "10" },
                //        new FunctionAttributes(){ key = "battery_state",curValue= "low",state = "low" },
                //    },
                //});
                FunctionList.List.Functions.Add(new Function()
                {
                    spk = SPK.SensorHelp,
                    name = "测试紧急求助按钮",
                    attributes = new List<FunctionAttributes>()
                    {
                        new FunctionAttributes(){ key = "status",curValue= "on",state = "on" },
                        new FunctionAttributes(){ key = "alarm_status",curValue= "alarm",state = "alarm" },
                        new FunctionAttributes(){ key = "battery_value",curValue= "200",state = "200" },
                        new FunctionAttributes(){ key = "battery_percentage",curValue= "10",state = "10" },
                        new FunctionAttributes(){ key = "battery_state",curValue= "low",state = "low" },
                    },
                });
                //FunctionList.List.Functions.Add(new Function()
                //{
@@ -1151,16 +1394,16 @@
                //    },
                //});
                //FunctionList.List.Functions.Add(new Function()
                //{
                //    spk = SPK.SensorGas,
                //    name = "燃气传感器",
                //    attributes = new List<FunctionAttributes>()
                //    {
                //        new FunctionAttributes(){ key = "enable",curValue= "true",state = "true" ,value = new List<string>(){ "true", "false" } },
                //        new FunctionAttributes(){ key = "status",curValue= "normal",state = "normal" ,value = new List<string>(){ "alarm", "normal" } },
                //    },
                //});
                FunctionList.List.Functions.Add(new Function()
                {
                    spk = SPK.SensorGas,
                    name = "燃气传感器",
                    attributes = new List<FunctionAttributes>()
                    {
                        new FunctionAttributes(){ key = "enable",curValue= "true",state = "true" ,value = new List<string>(){ "true", "false" } },
                        new FunctionAttributes(){ key = "status",curValue= "normal",state = "normal" ,value = new List<string>(){ "alarm", "normal" } },
                    },
                });
                //FunctionList.List.Functions.Add(new Function() { spk = SPK.PjtIr, name = "测试投影仪",
                //                            attributes = new List<FunctionAttributes>() {
@@ -1246,6 +1489,7 @@
                #endregion
                #region 场景
                var scene1 = new Scene()
                {
@@ -1518,7 +1762,8 @@
                        new FunctionAttributes() { key = "on_off", value = new List<string>() { "on", "off" }, curValue = "on", state = "on" },
                        new FunctionAttributes() { key = "mode", value = new List<string>() { "cool", "heat", "fan", "auto", "dry" }, curValue = "cool", state = "cool" },
                        new FunctionAttributes() { key = "fan", value = new List<string>() { "high", "medium", "low", "auto" }, curValue = "auto", state = "auto" },
                        new FunctionAttributes() { key = "set_temp",step = "1", value = new List<string>() { "16", "30"}, curValue = "16", state = "16",max = 30,min = 16 },
                        new FunctionAttributes() { key = "set_temp",unit = "F", step = "1", value = new List<string>() { "16", "30"}, curValue = "16", state = "16",max = 30,min = 16 },
                        new FunctionAttributes() { key = FunctionAttributeKey.TempType,unit = "F", step = "1", value = new List<string>() { "16", "30"}, curValue = "16", state = "16",max = 30,min = 16 },
                        new FunctionAttributes() { key = "room_temp", value = new List<string>() { }, curValue = "20", state = "20" },
                        new FunctionAttributes() { key = "swing", value = new List<string>() {"up_down", "left_right", "stop" }, curValue = "20", state = "20" },
                    }
@@ -1540,6 +1785,7 @@
                        new FunctionAttributes() { key = "set_temp",step = "0.5", value = new List<string>() { "16", "30"}, curValue = "16", state = "16",max = 30,min = 16 },
                        new FunctionAttributes() { key = "room_temp", value = new List<string>() { }, curValue = "20", state = "20" },
                        new FunctionAttributes() { key = "swing", value = new List<string>() {"up_down", "left_right", "stop" }, curValue = "20", state = "20" },
                        new FunctionAttributes() { key = "temperature_type", value = new List<string>() { "°F", "°C" }, curValue = "°C", state = "°C" },
                    }
                };
                ac2.SaveFunctionFile();
@@ -1565,7 +1811,7 @@
                //    collect = false,
                //};
                //scene6.SaveSceneFile();
                #endregion
#endregion
                var lightSwitch6 = new Function()
@@ -1602,37 +1848,14 @@
            LoadEventList();
            account = etAccount.Text.Trim();
#if DEBUG1211
            //本地模式
            Button btnLocalMode = new Button()
            {
                Y = Application.GetRealHeight(600),
                Height = Application.GetRealHeight(67),
                Text = "Local Mode",
                TextAlignment = TextAlignment.Center,
                BackgroundColor  = CSS_Color.MainColor,
                TextColor = CSS_Color.TextualColor,
            };
            bodyView.AddChidren(btnLocalMode);
            btnLocalMode.MouseUpEventHandler = (sender, e) =>
            {
                MainPage.LocalMode = true;
                 UserInfo.Current = new UserInfo();
                MainPage.GoUserPage();
            };
            MainPage.Log("etAccount.TextAlignment : " + etAccount.TextAlignment.ToString());
#endif
#region 隐私政策
            AddServiceAgreementControl(bodyView);
            #endregion
#endregion
        }
        #region ■ 服务协议___________________________
#region ■ 服务协议___________________________
        bool isAgreePrivacyPolicy = false;
        /// <summary>
        /// 添加服务协议控件
@@ -1754,12 +1977,12 @@
                OpenWebViewPage(true);
            };
            #if __ANDROID__
#if __ANDROID__
            //if(OnAppConfig.Instance.FirstRunApp || !OnAppConfig.Instance.isAgreePrivacyPolicy)
            //{
            //    HDL_ON_Android.HDLONUtils.StartSplashActivity();    
            //}
            #endif
#endif
        }
        /// <summary>
@@ -1779,6 +2002,13 @@
        /// <returns></returns>
        private bool CheckPrivacyPolicy()
        {
#if DEBUG
            return true;
#endif
            if(HttpUtil.GlobalRequestHttpsHost == "https://test-gz.hdlcontrol.com")
            {
                return true;
            }
            if (isAgreePrivacyPolicy == false)
            {
                //请同意《用户协议》和《隐私政策》