wei
2021-06-23 531f1380ec8478e109118cf96bc2c9f31e9278d1
代码同步
14个文件已添加
30个文件已修改
1440 ■■■■ 已修改文件
.vs/HDL_APP_Project/xs/UserPrefs.xml 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Language.ini 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Phone/FunctionIcon/AC/SweepIconLR.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Phone/FunctionIcon/AC/SweepIconLROn.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Phone/FunctionIcon/AC/SweepIconNull.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Phone/FunctionIcon/AC/SweepIconNullOn.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Phone/FunctionIcon/AC/SweepIconUD.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Phone/FunctionIcon/AC/SweepIconUDOn.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Phone/Public/ScanGrey.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/HDL-ON_Android.csproj 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Properties/AndroidManifest.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/HDL-ON_iOS.csproj 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/Resources/Language.ini 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/Resources/Phone/FunctionIcon/AC/SweepIconLR.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/Resources/Phone/FunctionIcon/AC/SweepIconLROn.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/Resources/Phone/FunctionIcon/AC/SweepIconNull.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/Resources/Phone/FunctionIcon/AC/SweepIconNullOn.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/Resources/Phone/FunctionIcon/AC/SweepIconUD.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/Resources/Phone/FunctionIcon/AC/SweepIconUDOn.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/Resources/Phone/Public/ScanGrey.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/Common/R.cs 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/Common/UserInfo.cs 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/DAL/DriverLayer/Control.cs 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/DAL/Server/HttpServerRequest.cs 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/DAL/Server/HttpUtil.cs 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/Entity/DB_ResidenceData.cs 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/Entity/Function/AC.cs 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/Entity/Function/Function.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/Entity/Function/Light.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/Entity/Room.cs 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/BindingResidence/BindingResidencePage.cs 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/MainPage.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI1-Login/LoginPage.cs 601 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/1-HomePage/HomePage.cs 173 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/1-HomePage/HomePageBLL.cs 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/3-Intelligence/Automation/Send.cs 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/4-PersonalCenter/MyQRCodePage.cs 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/4-PersonalCenter/PersonalCenterPage.cs 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/4-PersonalCenter/PersonalDataPage.cs 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/4-PersonalCenter/PersonalDataPageBLL.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/AcControlPage.cs 147 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/Light/RGBPage.cs 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/UserPage.cs 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ThirdPartyIntegration/HdlBluWi/Blufi.xcodeproj/project.xcworkspace/xcuserdata/kaede.xcuserdatad/UserInterfaceState.xcuserstate 补丁 | 查看 | 原始文档 | blame | 历史
.vs/HDL_APP_Project/xs/UserPrefs.xml
@@ -1,60 +1,48 @@
<Properties StartupConfiguration="{D998E133-F0DD-4760-BE3C-461632F54DA4}|Default">
  <MonoDevelop.Ide.ItemProperties.HDL-ON__iOS PreferredExecutionTarget="MonoDevelop.IPhone.IPhoneDeviceTarget.6242be7109c740c6cb8999a8904b6e0ea8d45192" />
  <MonoDevelop.Ide.Workbench ActiveDocument="HDL_ON/Common/R.cs">
  <MonoDevelop.Ide.ItemProperties.HDL-ON__iOS PreferredExecutionTarget="MonoDevelop.IPhone.IPhoneDeviceTarget.00008030-000929D421E8802E" />
  <MonoDevelop.Ide.Workbench ActiveDocument="HDL_ON/UI/UI2/3-Intelligence/Automation/AddLogic.cs">
    <Files>
      <File FileName="HDL_ON/DAL/Server/HttpUtil.cs" Line="150" Column="25" IsPinned="True" />
      <File FileName="HDL-ON_iOS/Resources/Language.ini" Line="1963" Column="8" />
      <File FileName="HDL-ON_Android/Assets/Language.ini" Line="1593" Column="1" />
      <File FileName="HDL-ON_iOS/Info.plist" />
      <File FileName="HDL_ON/UI/UI1-Login/LoginPage.cs" Line="193" Column="26" />
      <File FileName="HDL_ON/UI/UI1-Login/LoginPageBLL.cs" Line="175" Column="1" />
      <File FileName="HDL_ON/Entity/DB_ResidenceData.cs" Line="31" Column="30" />
      <File FileName="HDL_ON/Common/UserInfo.cs" Line="29" Column="34" />
      <File FileName="HDL_ON/UI/UI2/UserPage.cs" Line="569" Column="25" />
      <File FileName="HDL_ON/UI/MainPage.cs" Line="174" Column="34" />
      <File FileName="HDL_ON/UI/UI2/1-HomePage/HomePageBLL.cs" Line="1" Column="1" />
      <File FileName="HDL_ON/UI/UI2/1-HomePage/HomePage.cs" Line="203" Column="38" />
      <File FileName="HDL_ON/Common/R.cs" Line="8" Column="36" />
      <File FileName="HDL_ON/DAL/DriverLayer/Control.cs" Line="275" Column="53" />
      <File FileName="HDL-ON_iOS/Resources/Language.ini" Line="30" Column="10" />
      <File FileName="HDL-ON_Android/Assets/Language.ini" />
      <File FileName="HDL_ON/UI/UI2/2-Classification/ClassificationPage.cs" Line="637" Column="53" />
      <File FileName="HDL_ON/UI/UI2/2-Classification/ClassificationPageBLL.cs" Line="402" Column="64" />
      <File FileName="HDL_ON/UI/MainPage.cs" Line="275" Column="45" />
      <File FileName="HDL_ON/UI/UI2/UserPageBLL.cs" Line="6" Column="26" />
      <File FileName="HDL_ON/UI/UI2/UserPage.cs" Line="571" Column="7" />
      <File FileName="HDL_ON/UI/UI2/1-HomePage/HomePage.cs" Line="101" Column="16" />
      <File FileName="HDL_ON/UI/UI1-Login/LoginPage.cs" Line="599" Column="27" />
      <File FileName="HDL_ON/UI/UI2/FuntionControlView/Light/RGBPageBLL.cs" Line="249" Column="22" />
      <File FileName="HDL_ON/UI/UI2/4-PersonalCenter/PersonalCenterPage.cs" Line="238" Column="25" />
      <File FileName="HDL_ON/UI/UI2/1-HomePage/HomePageBLL.cs" Line="94" Column="26" />
      <File FileName="HDL_ON/Common/ApiUtlis.cs" Line="123" Column="1" />
      <File FileName="HDL_ON/DAL/Server/HttpUtil.cs" Line="16" Column="22" />
      <File FileName="HDL_ON/Entity/Room.cs" Line="111" Column="43" />
      <File FileName="HDL_ON/UI/UI2/3-Intelligence/Automation/AddLogic.cs" Line="244" Column="1" />
      <File FileName="HDL_ON/UI/UI2/3-Intelligence/Automation/Send.cs" Line="186" Column="39" />
    </Files>
    <Pads>
      <Pad Id="ProjectPad">
        <State name="__root__">
          <Node name="HDL_APP_Project" expanded="True">
            <Node name="HDL_ON" expanded="True">
              <Node name="Common" expanded="True">
                <Node name="R.cs" selected="True" />
              </Node>
              <Node name="Common" expanded="True" />
              <Node name="DAL" expanded="True">
                <Node name="DriverLayer" expanded="True" />
                <Node name="Server" expanded="True" />
              </Node>
              <Node name="Entity" expanded="True">
                <Node name="Device" expanded="True" />
                <Node name="Function" expanded="True" />
              </Node>
              <Node name="Entity" expanded="True" />
              <Node name="UI" expanded="True">
                <Node name="UI1-Login" expanded="True" />
                <Node name="UI2" expanded="True">
                  <Node name="1-HomePage" expanded="True" />
                  <Node name="2-Classification" expanded="True" />
                  <Node name="3-Intelligence" expanded="True">
                    <Node name="Automation" expanded="True" />
                  </Node>
                  <Node name="4-PersonalCenter" expanded="True">
                    <Node name="AddDevice" expanded="True">
                      <Node name="SenesorMegahealth" expanded="True" />
                    <Node name="Automation" expanded="True">
                      <Node name="AddLogic.cs" selected="True" />
                    </Node>
                    <Node name="AddFunction" expanded="True" />
                    <Node name="RoomListManage" expanded="True">
                      <Node name="AddRoom" expanded="True" />
                    </Node>
                  </Node>
                  <Node name="FuntionControlView" expanded="True">
                    <Node name="1ContorlPage" expanded="True" />
                    <Node name="AC" expanded="True" />
                  </Node>
                </Node>
              </Node>
            </Node>
            <Node name="HDL-ON_iOS" expanded="True">
              <Node name="Resources" expanded="True" />
            </Node>
          </Node>
        </State>
@@ -72,10 +60,12 @@
  <MonoDevelop.Ide.DebuggingService.Breakpoints>
    <BreakpointStore>
      <Breakpoint file="/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/Method.cs" relfile="HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/Method.cs" line="34" column="1" />
      <Breakpoint file="/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/AcControlPage.cs" relfile="HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/AcControlPage.cs" line="313" column="1" />
      <Breakpoint file="/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/BindingResidence/BindingResidencePage.cs" relfile="HDL_ON/UI/BindingResidence/BindingResidencePage.cs" line="121" column="1" />
      <Breakpoint file="/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/SenesorMegahealth/AddSenesorMegahealthDirection1Page.cs" relfile="HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/SenesorMegahealth/AddSenesorMegahealthDirection1Page.cs" line="118" column="1" />
      <Breakpoint file="/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/1-HomePage/HomePage.cs" relfile="HDL_ON/UI/UI2/1-HomePage/HomePage.cs" line="198" column="1" />
      <Breakpoint file="/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/4-PersonalCenter/PersonalDataPage.cs" relfile="HDL_ON/UI/UI2/4-PersonalCenter/PersonalDataPage.cs" line="546" column="1" />
      <Breakpoint file="/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/Common/ApiUtlis.cs" relfile="HDL_ON/Common/ApiUtlis.cs" line="117" column="1" />
      <Breakpoint file="/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/3-Intelligence/Automation/AddLogic.cs" relfile="HDL_ON/UI/UI2/3-Intelligence/Automation/AddLogic.cs" line="255" column="1" />
      <Breakpoint file="/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/3-Intelligence/Automation/AddLogic.cs" relfile="HDL_ON/UI/UI2/3-Intelligence/Automation/AddLogic.cs" line="327" column="1" />
      <Breakpoint file="/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/3-Intelligence/Automation/Send.cs" relfile="HDL_ON/UI/UI2/3-Intelligence/Automation/Send.cs" line="191" column="1" />
    </BreakpointStore>
  </MonoDevelop.Ide.DebuggingService.Breakpoints>
  <MultiItemStartupConfigurations />
HDL-ON_Android/Assets/Language.ini
@@ -24,7 +24,7 @@
23=Incorrect verification code, please re-enter.
24=Incorrect account number, please enter the correct email address.
25=Email address
26=Residentce
26=Residence
27=Member
28=Disarm
29=Arming
@@ -459,6 +459,10 @@
470=Under protection
471=Millimeter wave sensor
472=Outdoor
473=Swing
474=Swing up and down
475=Swing left and right
476=Add residence
 
1000=Room Humidity
1001=V-chip
@@ -1511,6 +1515,10 @@
470=防护中
471=毫米波传感器
472=室外
473=扫风
474=上下扫风
475=左右扫风
476=添加住宅
 
 
1000=室内湿度
HDL-ON_Android/Assets/Phone/FunctionIcon/AC/SweepIconLR.png
HDL-ON_Android/Assets/Phone/FunctionIcon/AC/SweepIconLROn.png
HDL-ON_Android/Assets/Phone/FunctionIcon/AC/SweepIconNull.png
HDL-ON_Android/Assets/Phone/FunctionIcon/AC/SweepIconNullOn.png
HDL-ON_Android/Assets/Phone/FunctionIcon/AC/SweepIconUD.png
HDL-ON_Android/Assets/Phone/FunctionIcon/AC/SweepIconUDOn.png
HDL-ON_Android/Assets/Phone/Public/ScanGrey.png
HDL-ON_Android/HDL-ON_Android.csproj
@@ -401,6 +401,13 @@
  </ItemGroup>
  <ItemGroup>
    <AndroidAsset Include="Assets\Phone\Public\MsgIcon\TipSuccessIcon.png" />
    <AndroidAsset Include="Assets\Phone\FunctionIcon\AC\SweepIconLR.png" />
    <AndroidAsset Include="Assets\Phone\FunctionIcon\AC\SweepIconLROn.png" />
    <AndroidAsset Include="Assets\Phone\FunctionIcon\AC\SweepIconNull.png" />
    <AndroidAsset Include="Assets\Phone\FunctionIcon\AC\SweepIconNullOn.png" />
    <AndroidAsset Include="Assets\Phone\FunctionIcon\AC\SweepIconUD.png" />
    <AndroidAsset Include="Assets\Phone\FunctionIcon\AC\SweepIconUDOn.png" />
    <AndroidAsset Include="Assets\Phone\Public\ScanGrey.png" />
  </ItemGroup>
  <ItemGroup>
    <AndroidAsset Include="Assets\Phone\FunctionIcon\DoorLock\BindScene.png" />
HDL-ON_Android/Properties/AndroidManifest.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="202106083" android:versionName="1.2.202106083" package="com.hdl.onpro">
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="202106171" android:versionName="1.2.202106171" package="com.hdl.onpro">
    <uses-sdk android:minSdkVersion="23" android:targetSdkVersion="29" />
    <!--  可视对讲权限-->
    <uses-permission android:name="android.permission.CAMERA" />
HDL-ON_iOS/HDL-ON_iOS.csproj
@@ -55,7 +55,7 @@
        <MtouchExtraArgs>-gcc_flags="-dead_strip -ObjC"</MtouchExtraArgs>
        <MtouchEnableSGenConc>false</MtouchEnableSGenConc>
<CodesignEntitlements>Entitlements.plist</CodesignEntitlements>
<CodesignProvision>On+Dev-20210604-1</CodesignProvision>
<CodesignProvision>On+Dev-20210616-1</CodesignProvision>
    </PropertyGroup>
    <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|iPhone' ">
        <DebugType>none</DebugType>
@@ -1284,6 +1284,13 @@
      <BundleResource Include="Resources\Phone\FunctionIcon\ArmSensor\SomeoneFellBgIcon.png" />
      <BundleResource Include="Resources\Phone\FunctionIcon\ArmSensor\SomeoneInBgIcon.png" />
      <BundleResource Include="Resources\Phone\FunctionIcon\ArmSensor\UnderProtectionBgIcon.png" />
      <BundleResource Include="Resources\Phone\FunctionIcon\AC\SweepIconLR.png" />
      <BundleResource Include="Resources\Phone\FunctionIcon\AC\SweepIconLROn.png" />
      <BundleResource Include="Resources\Phone\FunctionIcon\AC\SweepIconNull.png" />
      <BundleResource Include="Resources\Phone\FunctionIcon\AC\SweepIconNullOn.png" />
      <BundleResource Include="Resources\Phone\FunctionIcon\AC\SweepIconUD.png" />
      <BundleResource Include="Resources\Phone\FunctionIcon\AC\SweepIconUDOn.png" />
      <BundleResource Include="Resources\Phone\Public\ScanGrey.png" />
    </ItemGroup>
    <ItemGroup>
      <ITunesArtwork Include="iTunesArtwork" />
HDL-ON_iOS/Resources/Language.ini
@@ -24,7 +24,7 @@
23=Incorrect verification code, please re-enter.
24=Incorrect account number, please enter the correct email address.
25=Email address
26=Residentce
26=Residence
27=Member
28=Disarm
29=Arming
@@ -459,6 +459,10 @@
470=Under protection
471=Millimeter wave sensor
472=Outdoor
473=Swing
474=Swing up and down
475=Swing left and right
476=Add residence
 
1000=Room Humidity
1001=V-chip
@@ -1511,6 +1515,10 @@
470=防护中
471=毫米波传感器
472=室外
473=扫风
474=上下扫风
475=左右扫风
476=添加住宅
 
 
1000=室内湿度
HDL-ON_iOS/Resources/Phone/FunctionIcon/AC/SweepIconLR.png
HDL-ON_iOS/Resources/Phone/FunctionIcon/AC/SweepIconLROn.png
HDL-ON_iOS/Resources/Phone/FunctionIcon/AC/SweepIconNull.png
HDL-ON_iOS/Resources/Phone/FunctionIcon/AC/SweepIconNullOn.png
HDL-ON_iOS/Resources/Phone/FunctionIcon/AC/SweepIconUD.png
HDL-ON_iOS/Resources/Phone/FunctionIcon/AC/SweepIconUDOn.png
HDL-ON_iOS/Resources/Phone/Public/ScanGrey.png
HDL_ON/Common/R.cs
@@ -5,6 +5,22 @@
    public static class StringId
    {
        /// <summary>
        /// 添加住宅
        /// </summary>
        public const int AddResidence = 476;
        /// <summary>
        /// 左右扫风
        /// </summary>
        public const int Swing_Left_Right = 475;
        /// <summary>
        /// 上下扫风
        /// </summary>
        public const int Swing_Up_Down = 474;
        /// <summary>
        /// 扫风
        /// </summary>
        public const int Swing = 473;
        /// <summary>
        /// 室外
        /// </summary>
        public const int Outdoor = 472;
HDL_ON/Common/UserInfo.cs
@@ -32,11 +32,11 @@
                        {
                            m_Current = new UserInfo()
                            {
                                ID = "1234567890",
                                userName = "试用账号",
                                AccountString = "试用账号",
                                userMobileInfo = "试用账号",
                                userEmailInfo = "试用账号",
                                ID = "体验账号1234567890",
                                userName = "体验账号",
                                AccountString = "体验账号",
                                userMobileInfo = "体验账号",
                                userEmailInfo = "体验账号",
                                language = "Chinese",
                                areaCode = "86",
                                headImagePagePath = "LoginIcon/2.png",
@@ -56,6 +56,7 @@
                                headImagePagePath = "LoginIcon/2.png",
                            };
                        }
                        return m_Current;
                    }
                    try
HDL_ON/DAL/DriverLayer/Control.cs
@@ -283,6 +283,29 @@
        /// </summary>
        public void ControlScene(Scene scene)
        {
            //体验模式
            if(MainPage.NoLoginMode)
            {
                foreach(var sceneFunction in scene.functions)
                {
                    var revString = "";
                    var upDataObj = new AlinkFunctionStatusObj();
                    upDataObj.id = "999";
                    upDataObj.objects = new List<AlinkStatusData>();
                    var asd = new AlinkStatusData() { deviceId = sceneFunction.localFunction.deviceId, sid = sceneFunction.sid };
                    var status1 = new List<AttributesStatus>();
                    foreach (var dic in sceneFunction.status)
                    {
                        status1.Add(new AttributesStatus() { key = dic.key, value = dic.value });
                    }
                    asd.status = status1;
                    upDataObj.objects.Add(asd);
                    revString = Newtonsoft.Json.JsonConvert.SerializeObject(upDataObj);
                    UpdataFunctionStatus(revString, null, true);
                }
                return;
            }
            //远程或者控制link网关场景
            if (!Ins.GatewayOnline_Local || DB_ResidenceData.Instance.GatewayType == 1)
            {
@@ -337,10 +360,31 @@
                }
            }
            ///dome控制
            if (MainPage.NoLoginMode)
            {
                var revString = "";
                var upDataObj = new AlinkFunctionStatusObj();
                upDataObj.id = "999";
                upDataObj.objects = new List<AlinkStatusData>();
                var asd = new AlinkStatusData() { deviceId = function.deviceId, sid = function.sid };
                var status1 = new List<AttributesStatus>();
                foreach (var dic in commandDictionary)
                {
                    status1.Add(new AttributesStatus() { key = dic.Key, value = dic.Value });
                }
                asd.status = status1;
                upDataObj.objects.Add(asd);
                revString = Newtonsoft.Json.JsonConvert.SerializeObject(upDataObj);
                UpdataFunctionStatus(revString, null, true);
                return;
            }
            //MainPage.Log($"发送数据:{Newtonsoft.Json.JsonConvert.SerializeObject(commandDictionary)}");
            ///第三方涂鸦设备统一使用远程控制
            switch(function.spk)
            switch (function.spk)
            {
                case SPK.ElectricTuyaAirCleaner:
                case SPK.ElectricTuyaFan:
@@ -415,6 +459,23 @@
        /// </summary>
        public void SwtichFunctions(bool open,List<Function> functions)
        {
            //dome模式控制
            if(MainPage.NoLoginMode)
            {
                new System.Threading.Thread(() =>
                {
                    foreach (var temp in functions)
                    {
                        Dictionary<string, string> d1 = new Dictionary<string, string>();
                        d1.Add(FunctionAttributeKey.OnOff, open ? "on" : "off");
                        SendWriteCommand(temp, d1);
                        System.Threading.Thread.Sleep(100);
                    }
                })
                { IsBackground = true }.Start();
                return;
            }
            var count = 0;
            var logString = open ? "打开\r\n" : "关闭\r\n";
            List<ApiAlinkControlActionObj> actionObjs = new List<ApiAlinkControlActionObj>();
@@ -560,7 +621,7 @@
            }
        }
        /// <summary>
        /// 转换通讯数据
        /// 转换发送数据
        /// </summary>
        public byte[] ConvertSendBodyData(string topic, string bodyDataString)
        {
HDL_ON/DAL/Server/HttpServerRequest.cs
@@ -482,7 +482,7 @@
        /// <summary>
        /// 获取住宅列表
        /// </summary>
        public string GetHomePager(HomeTypeEnum homeType = HomeTypeEnum.ALL)
        public string GetHomePager(HomeTypeEnum homeType = HomeTypeEnum.ALL,string homeId = "")
        {
            var requestJson = HttpUtil.GetSignRequestJson(new GetHomeListObj() { homeType = homeType.ToString() });
            var resultObj = HttpUtil.RequestHttpsPost(NewAPI.API_POST_Gethomepager, requestJson);
@@ -497,28 +497,17 @@
                {
                    foreach (var home in homeList)
                    {
                        //var home = new RegionInfoRes()
                        //{
                        //    RegionID = mHome.Id,
                        //    Name = mHome.homeName,
                        //    IsOthreShare = mHome.IsOtherShare,
                        //    accountType = mHome.accountType,
                        //    isRemoteControl = mHome.isRemoteControl,
                        //    isBindGateway = mHome.isBindGateway,
                        //    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,
                        //};
                        if (home.isBindGateway)
                        {
                            UserInfo.Current.regionList.Add(home);
                            //新绑定的住宅,直接切换到新住宅
                            if (!string.IsNullOrEmpty(homeId))
                            {
                                if (homeId.Contains(home.id))
                                {
                                    DB_ResidenceData.Instance.CurrentRegion = home;
                                }
                            }
                        }
                    }
                    if(UserInfo.Current.regionList.Count== 0)
@@ -927,8 +916,9 @@
            Dictionary<string, object> d = new Dictionary<string, object>();
            d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.id);
            d.Add("debugPerm", debugPerm);
            string jsonString = Newtonsoft.Json.JsonConvert.SerializeObject(d);
            return HttpUtil.RequestHttpsPostFroHome(NewAPI.API_Post_Home_UpdateDebugPerm, jsonString);
            var jsonString = HttpUtil.GetSignRequestJson(d,d);
            var pack = HttpUtil.RequestHttpsPost(NewAPI.API_Post_Home_UpdateDebugPerm, jsonString);
            return pack;
        }
HDL_ON/DAL/Server/HttpUtil.cs
@@ -147,6 +147,7 @@
        static ResponsePackNew RequestHttpsBase(Method method, string apiPath, string bodyParameterJson = null, Dictionary<string, object> queryDictionary = null, Dictionary<string, object> urlSegmentDictionary = null, string urlHead = "", string replaceToken = "", int mTimeout = 10)
        {
            //Dome模式登录
            if(MainPage.NoLoginMode)
            {
                return new ResponsePackNew() { Code = "0" };
@@ -575,12 +576,15 @@
        /// 计算sign签名
        /// </summary>
        /// <returns></returns>
        public static string GetSignRequestJson(object requestObj)
        public static string GetSignRequestJson(object requestObj,Dictionary<string,object> paramDictionary = null)
        {
            try
            {
                //1. 将model实体转为Dictionary<string, object>
                var paramDictionary = Newtonsoft.Json.JsonConvert.DeserializeObject<Dictionary<string, object>>(Newtonsoft.Json.JsonConvert.SerializeObject(requestObj));
                if (paramDictionary == null)
                {
                    paramDictionary = Newtonsoft.Json.JsonConvert.DeserializeObject<Dictionary<string, object>>(Newtonsoft.Json.JsonConvert.SerializeObject(requestObj));
                }
                //2. 计算sign
                if (paramDictionary != null)
                {
HDL_ON/Entity/DB_ResidenceData.cs
@@ -68,6 +68,32 @@
            {
                if (instance == null)
                {
                    if(MainPage.NoLoginMode)
                    {
                        instance = new DB_ResidenceData();
                        instance.functionTypeList.AddRange(new List<ShowFunction> {
                                    ShowFunction.Light,ShowFunction.AC,ShowFunction.Curtain,
                                    ShowFunction.FloorHeating,ShowFunction.Music,
                                    ShowFunction.Electric,ShowFunction.Environmental,
                                    ShowFunction.EnergyMonitoring,
                                    ShowFunction.FreshAir,ShowFunction.DoorLock,
                                    ShowFunction.Panel,ShowFunction.SecurityMonitoring,
                                    ShowFunction.Sensor,ShowFunction.VideoIntercom,
                                    ShowFunction.SecurityCenter
                                });
                        instance.SaveResidenceData();
                        instance.residenceImage = "Classification/Room/Roombg.png";
                        instance.HomeGateway = new HomeGatewayInfo()
                        {
                            homeId = "1396717478877241345",
                            gatewayId = "1396997079658602498",
                            mac = "123457890123456",
                        };
                        //初始化住宅功能数据
                        SpatialInfo.CurrentSpatial.InitRoomListFunctions();
                        return instance;
                    }
                    try
                    {
                        var residenceDataBytes = ReadResidenceInfo();
HDL_ON/Entity/Function/AC.cs
@@ -225,6 +225,48 @@
        }
        /// <summary>
        /// 当前模式的icon路径
        /// </summary>
        /// <param name="lightingIcon">获取的图标类型,默认是点亮</param>
        /// <returns></returns>
        public string GetSwingIconPath(string swingValue,bool lightingIcon = true)
        {
            var imagePath = "FunctionIcon/AC/SweepIconNullOn.png";
            if (lightingIcon)
            {
                switch (swingValue)
                {
                    case "up_down":
                        imagePath = "FunctionIcon/AC/SweepIconUDOn.png";
                        break;
                    case "left_right":
                        imagePath = "FunctionIcon/AC/SweepIconLROn.png";
                        break;
                    case "stop":
                        imagePath = "FunctionIcon/AC/SweepIconNullOn.png";
                        break;
                }
            }
            else
            {
                imagePath = "FunctionIcon/AC/SweepIconNull.png";
                switch (swingValue)
                {
                    case "up_down":
                        imagePath = "FunctionIcon/AC/SweepIconUD.png";
                        break;
                    case "left_right":
                        imagePath = "FunctionIcon/AC/SweepIconLR.png";
                        break;
                    case "stop":
                        imagePath = "FunctionIcon/AC/SweepIconNull.png";
                        break;
                }
            }
            return imagePath;
        }
        /// <summary>
        /// 当前风速的icon路径
        /// </summary>
        /// <param name="lightingIcon">获取的图标类型,默认是点亮</param>
@@ -304,6 +346,31 @@
        }
        /// <summary>
        /// 获取扫风模式属性文本
        /// </summary>
        /// <returns></returns>
        public string GetSwingAttrText(string value)
        {
            string text = "";
            switch (value)
            {
                #region 模式
                case "up_down":
                    text = Language.StringByID(StringId.Swing_Up_Down);
                    break;
                case "left_right":
                    text = Language.StringByID(StringId.Swing_Left_Right);
                    break;
                case "stop":
                    text = Language.StringByID(StringId.tingzhi);
                    break;
                    #endregion
            }
            return text;
        }
        /// <summary>
        /// 获取风速属性文本
        /// </summary>
        /// <returns></returns>
HDL_ON/Entity/Function/Function.cs
@@ -717,6 +717,10 @@
        /// </summary>
        public const string Mode = "mode";
        /// <summary>
        /// 扫风
        /// </summary>
        public const string Swing = "swing";
        /// <summary>
        /// 工作模式
        /// 地热/地冷/功率地热/功率地冷
        /// </summary>
HDL_ON/Entity/Function/Light.cs
@@ -35,7 +35,7 @@
        /// 获取rgb 控制字符串
        /// </summary>
        /// <returns></returns>
        public string GetRGBcolorString(Function function )
        public string GetRGBcolorString(Function function)
        {
            var color = function.GetAttrState(FunctionAttributeKey.RGB).Split(",");
            return color[0] + "," + color[1] + "," + color[2];
HDL_ON/Entity/Room.cs
@@ -49,6 +49,7 @@
            parentId = DB_ResidenceData.Instance.CurrentRegion.id;
        }
        public string homeId = "";
        public string roomId = "";
        public string roomName = "";
        //public string roomImage = "";
@@ -56,6 +57,7 @@
        public string roomType = "";
        public string parentId = "";
        public string uid = Guid.NewGuid().ToString();
        public string floorRoomName = "";
        public string createTime = "";
        public string modifyTime = "";
        ///// <summary>
@@ -110,6 +112,15 @@
        {
            get
            {
                if (MainPage.NoLoginMode)
                {
                    if (floors == null)
                    {
                        floors = new List<SpatialInfo>();
                    }
                    return floors;
                }
                if (floors == null)
                {
                    try
@@ -121,13 +132,14 @@
                            MainPage.Log(floorsDataString);
                            floors = Newtonsoft.Json.JsonConvert.DeserializeObject<List<SpatialInfo>>(floorsDataString);
                        }
                        if (floors == null)
                        if(floors == null)
                        {
                            floors = new List<SpatialInfo>();
                        }
                    }
                    catch (Exception ex)
                    {
                            floors = new List<SpatialInfo>();
                        MainPage.Log($"楼层数据初始化失败:{ex.Message}");
                    }
                }
@@ -242,6 +254,14 @@
        {
            get
            {
                if(MainPage.NoLoginMode )
                {
                    if (rooms == null)
                    {
                        rooms = new List<Room>();
                    }
                    return rooms;
                }
                if (rooms == null)
                {
                    try
HDL_ON/UI/BindingResidence/BindingResidencePage.cs
@@ -115,7 +115,7 @@
        /// <summary>
        /// 执行绑定住宅
        /// </summary>
        private void DoBindResidence(string scanString)
        public void DoBindResidence(string scanString)
        {
            var pm = new DAL.Server.HttpServerRequest();
            var result = pm.BindingResidence(scanString);
@@ -124,7 +124,7 @@
            if (result.Code == DAL.Server.StateCode.SUCCESS)
            {
                //调用On原来的方法,刷新住宅列表及其缓存
                pm.GetHomePager();
                pm.GetHomePager(HomeTypeEnum.ALL,scanString);
                //跳转页面----
                MainPage.GoUserPage(true, false, () =>
                {
@@ -144,7 +144,7 @@
        /// <summary>
        /// 显示二维码已经过期的弹窗
        /// </summary>
        private void ShowQrCodeTimeOutView()
        public void ShowQrCodeTimeOutView()
        {
            //整个界面的灰色背景
            var frameBack = new Dialog();
HDL_ON/UI/MainPage.cs
@@ -20,7 +20,7 @@
        /// <summary>
        /// 版本号
        /// </summary>
        public static string VersionString = "1.2.0608";
        public static string VersionString = "1.2.0617";
        ///// <summary>
        ///// 客户端类型
        ///// </summary>
@@ -268,7 +268,7 @@
            #endregion
            //体验模式
            if (NoLoginMode)
            {
                //跳转页面----
HDL_ON/UI/UI1-Login/LoginPage.cs
@@ -190,32 +190,8 @@
#if DEBUG
            btnIcon_bg.MouseUpEventHandler += (sender, e) =>
            {
                MainPage.NoLoginMode = true;
                //楼层房间列表
                var floor1 = new SpatialInfo("FLOOR") { roomName = "F1", parentId = DB_ResidenceData.Instance.CurrentRegion.id };
                floor1.SaveRoomFile();
                //处理房间列表
                var room1 = new Room() {
                    roomId = "r1",
                    roomName = "客厅",
                    parentId = "f1"
                };
                room1.SaveRoomFile();
                //功能
                var light1 = new Function()
                {
                    sid = "light1",
                    deviceId = "light1",
                    name = "RGB1",
                    attributes = new List<FunctionAttributes>()
                    {
                        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="0",state = "0"   },
                        new FunctionAttributes() { key = "rgb",value =new List<string>(){ "0","100" }, curValue="0,0,0",state = "0,0,0"   },
                    },
                };
                light1.SaveFunctionFile();
                //场景
                return;
            };
            bool b = false;
@@ -238,13 +214,14 @@
                }
                else
                {
                    etAccount.Text = "464027401@qq.com";//
                    //etAccount.Text = "15217626103";//
                    //etAccount.Text = "13682244600";//波哥
                    //etAccount.Text = "BB01010101@evoyo.com";//可视对讲
                    //etAccount.Text = "13168123446";
                    //etAccount.Text = "13676202754";//巴林服务器
                    //etAccount.Text = "13602944661";//kx
                    etAccount.Text = "551775569@qq.com";//wcf
                    //etAccount.Text = "551775569@qq.com";//wcf
                    //etAccount.Text = "18666455392";//13375012446//13602944661//tzy 18778381374
                    //etAccount.Text = "15971583093";// gs//tzy 274116637@qq.com//Sumant.Bhatia@havells.com 国外服务器测试
                }
@@ -522,7 +499,575 @@
            };
            bodyView.AddChidren(btnLogin);
           LoadEventList();
            Button btnDomeLogin = new Button()
            {
                Y = btnLogin.Bottom + Application.GetRealHeight(10),
                Height = Application.GetRealWidth(44),
                TextSize = CSS_FontSize.SubheadingFontSize,
                IsBold = true,
                TextColor = CSS_Color.MainColor,
                TextAlignment = TextAlignment.Center,
                Text = "体验模式"
            };
            bodyView.AddChidren(btnDomeLogin);
            btnDomeLogin.MouseUpEventHandler = (sender, e) => {
                MainPage.NoLoginMode = true;
                //楼层房间列表
                var floor1 = new SpatialInfo("FLOOR") { roomName = "F1", parentId = DB_ResidenceData.Instance.CurrentRegion.id };
                floor1.SaveRoomFile();
                #region 房间一 -- 客厅
                //处理房间列表
                var room1 = new Room()
                {
                    roomId = "1405771366041378818",
                    roomName = "洗手间",
                    roomImage = "Classification/Room/Roombg.png",
                    uid = "47c98953-6fd4-4379-88b9-4b748963504f",
                    roomType = "ROOM",
                    parentId = "2348be0f-eec2-43c4-b74d-9b6037a5ba55",
                    homeId = "1396717478877241345",
                    createTime = "1623996986290",
                    modifyTime = "1623996986290",
                    floorRoomName = "1F-洗手间"
                };
                room1.SaveRoomFile();
                var room2 = new Room()
                {
                    roomId = "1405771310345216001",
                    roomName = "主卧",
                    roomImage = "Classification/Room/Roombg.png",
                    uid = "168d27a1-9e53-42c0-95c9-f5cbf41ea167",
                    roomType = "ROOM",
                    parentId = "2348be0f-eec2-43c4-b74d-9b6037a5ba55",
                    homeId = "1396717478877241345",
                    createTime = "1623996973011",
                    modifyTime = "1623996973011",
                    floorRoomName = "1F-主卧"
                };
                room2.SaveRoomFile();
                var room3 = new Room()
                {
                    roomId = "1405771193802285057",
                    roomName = "餐厅",
                    roomImage = "Classification/Room/Roombg.png",
                    uid = "ed7fc784-aace-44b8-97a3-bc3e727e598b",
                    roomType = "ROOM",
                    parentId = "2348be0f-eec2-43c4-b74d-9b6037a5ba55",
                    homeId = "1396717478877241345",
                    createTime = "1623996945225",
                    modifyTime = "1623996945225",
                    floorRoomName = "1F-餐厅"
                };
                room3.SaveRoomFile();
                var room4 = new Room()
                {
                    roomId = "1405771024583090178",
                    roomName = "客厅",
                    roomImage = "Classification/Room/Roombg.png",
                    uid = "9191a3a2-026f-4667-a0b1-e3af699e7295",
                    roomType = "ROOM",
                    parentId = "2348be0f-eec2-43c4-b74d-9b6037a5ba55",
                    homeId = "1396717478877241345",
                    createTime = "1623996904880",
                    modifyTime = "1623996904880",
                    floorRoomName = "1F-客厅"
                };
                room4.SaveRoomFile();
                var floor = new SpatialInfo()
                {
                    roomId = "1405770943695937537",
                    roomName = "1F",
                    roomImage = "Classification/Room/Roombg.png",
                    uid = "2348be0f-eec2-43c4-b74d-9b6037a5ba55",
                    roomType = "FLOOR",
                    parentId = "1396717478877241345",
                    homeId = "1396717478877241345",
                    createTime = "1623996885595",
                    modifyTime = "1623996885595"
                };
                floor.SaveRoomFile();
                SpatialInfo.CurrentSpatial.FloorList.Add(floor);
                SpatialInfo.CurrentSpatial.RoomList.Add(room1);
                SpatialInfo.CurrentSpatial.RoomList.Add(room2);
                SpatialInfo.CurrentSpatial.RoomList.Add(room3);
                SpatialInfo.CurrentSpatial.RoomList.Add(room4);
                #region 客厅
                #region 功能
                var lightRgb1 = new Function()
                {
                    sid = "light1",
                    deviceId = "light1",
                    name = "RGB1",
                    spk = SPK.LightRGB,
                    roomIds = new List<string>() { "1405771024583090178"},
                    collect = true,
                    attributes = new List<FunctionAttributes>()
                    {
                        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 = "delay",value =new List<string>(){ "0","100" }, curValue="0",state = "0"   },
                    },
                };
                lightRgb1.SaveFunctionFile();
                var lightRgb2 = new Function()
                {
                    sid = "light2",
                    deviceId = "light2",
                    name = "RGB2",
                    spk = SPK.LightRGB,
                    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 = "brightness",value =new List<string>(){ "0","100" }, curValue="0",state = "0"   },
                        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 = "delay",value =new List<string>(){ "0","100" }, curValue="0",state = "0"   },
                    },
                };
                lightRgb2.SaveFunctionFile();
                var lightCct = new Function()
                {
                    sid = "light3",
                    deviceId = "light3",
                    name = "CCT1",
                    spk = SPK.LightCCT,
                    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 = "brightness",value =new List<string>(){ "0","100" }, curValue="0",state = "0"   },
                        new FunctionAttributes() { key = "cct",value =new List<string>(){ "0","65535" }, 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"   },
                    },
                };
                lightCct.SaveFunctionFile();
                var lightSwitch1 = new Function()
                {
                    sid = "light4",
                    deviceId = "light4",
                    name = "开关灯1",
                    spk = SPK.LightSwitch,
                    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 = "brightness",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"   },
                    },
                };
                lightSwitch1.SaveFunctionFile();
                var lightSwitch2 = new Function()
                {
                    sid = "light5",
                    deviceId = "light5",
                    name = "开关灯2",
                    spk = SPK.LightSwitch,
                    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 = "brightness",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"   },
                    },
                };
                lightSwitch2.SaveFunctionFile();
                var curtain1 = new Function()
                {
                    sid = "curtain1",
                    deviceId = "curtain1",
                    name = "开合帘",
                    spk = SPK.CurtainTrietex,
                    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 = "percent",value =new List<string>(){ "0","100" }, curValue="0",state = "0"   },
                    },
                };
                curtain1.SaveFunctionFile();
                var curtain2 = new Function()
                {
                    sid = "curtain2",
                    deviceId = "curtain2",
                    name = "卷帘",
                    spk = SPK.CurtainRoller,
                    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 = "percent",value =new List<string>(){ "0","100" }, curValue="0",state = "0"   },
                    },
                };
                curtain2.SaveFunctionFile();
                var fh = new Function()
                {
                    sid = "floorheat1",
                    deviceId = "floorheat1",
                    name = "地暖",
                    spk = SPK.FloorHeatStandard,
                    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 = "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"   },
                        new FunctionAttributes() { key = "room_temp",value =new List<string>(){ "" }, curValue="26",state = "26"   },
                    },
                };
                fh.SaveFunctionFile();
                #endregion
                #region 场景
                var scene1 = new Scene()
                {
                    sid = "scene1",
                    userSceneId = "scene1",
                    name = "明亮模式",
                    roomIds = new List<string>() { "1405771024583090178" },
                    gatewayId = "1234567890123456",
                    collect = true,
                    functions = new List<SceneFunction>()
                    {
                        new SceneFunction()
                        {
                            sid = lightRgb1.sid,
                            status = new List<SceneFunctionStatus>()
                            {
                                new SceneFunctionStatus()
                                {
                                    key = "on_off",
                                    value = "on",
                                }
                            }
                        },
                        new SceneFunction()
                        {
                            sid = lightRgb2.sid,
                            status = new List<SceneFunctionStatus>()
                            {
                                new SceneFunctionStatus()
                                {
                                    key = "on_off",
                                    value = "on",
                                }
                            }
                        },
                        new SceneFunction()
                        {
                            sid = lightCct.sid,
                            status = new List<SceneFunctionStatus>()
                            {
                                new SceneFunctionStatus()
                                {
                                    key = "on_off",
                                    value = "on",
                                }
                            }
                        },
                        new SceneFunction()
                        {
                            sid = lightSwitch1.sid,
                            status = new List<SceneFunctionStatus>()
                            {
                                new SceneFunctionStatus()
                                {
                                    key = "on_off",
                                    value = "on",
                                }
                            }
                        },
                        new SceneFunction()
                        {
                            sid = lightSwitch2.sid,
                            status = new List<SceneFunctionStatus>()
                            {
                                new SceneFunctionStatus()
                                {
                                    key = "on_off",
                                    value = "on",
                                }
                            }
                        },
                    },
                };
                scene1.SaveSceneFile();
                var scene2 = new Scene()
                {
                    sid = "scene2",
                    userSceneId = "scene2",
                    name = "浪漫模式",
                    roomIds = new List<string>() { "1405771024583090178" },
                    gatewayId = "1234567890123456",
                    collect = false,
                    functions = new List<SceneFunction>()
                    {
                        new SceneFunction()
                        {
                            sid = lightRgb1.sid,
                            status = new List<SceneFunctionStatus>()
                            {
                                new SceneFunctionStatus()
                                {
                                    key = "on_off",
                                    value = "on",
                                }
                            }
                        },
                        new SceneFunction()
                        {
                            sid = lightRgb2.sid,
                            status = new List<SceneFunctionStatus>()
                            {
                                new SceneFunctionStatus()
                                {
                                    key = "on_off",
                                    value = "on",
                                }
                            }
                        },
                        new SceneFunction()
                        {
                            sid = lightCct.sid,
                            status = new List<SceneFunctionStatus>()
                            {
                                new SceneFunctionStatus()
                                {
                                    key = "on_off",
                                    value = "on",
                                }
                            }
                        },
                        new SceneFunction()
                        {
                            sid = lightSwitch1.sid,
                            status = new List<SceneFunctionStatus>()
                            {
                                new SceneFunctionStatus()
                                {
                                    key = "on_off",
                                    value = "off",
                                }
                            }
                        },
                        new SceneFunction()
                        {
                            sid = lightSwitch2.sid,
                            status = new List<SceneFunctionStatus>()
                            {
                                new SceneFunctionStatus()
                                {
                                    key = "on_off",
                                    value = "off",
                                }
                            }
                        },
                    },
                };
                scene2.SaveSceneFile();
                #endregion
                #endregion
                #region 餐厅
                var lightSwitch3 = new Function()
                {
                    sid = "light6",
                    deviceId = "light6",
                    name = "餐厅灯1",
                    spk = SPK.LightSwitch,
                    roomIds = new List<string>() { room3.roomId },
                    attributes = new List<FunctionAttributes>()
                    {
                        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="0",state = "0"   },
                        new FunctionAttributes() { key = "fade_time",value =new List<string>(){ "0","100" }, curValue="0",state = "0"   },
                    },
                };
                lightSwitch3.SaveFunctionFile();
                var lightSwitch4 = new Function()
                {
                    sid = "light7",
                    deviceId = "light7",
                    name = "餐厅灯2",
                    spk = SPK.LightSwitch,
                    roomIds = new List<string>() { room3.roomId },
                    attributes = new List<FunctionAttributes>()
                    {
                        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="0",state = "0"   },
                        new FunctionAttributes() { key = "fade_time",value =new List<string>(){ "0","100" }, curValue="0",state = "0"   },
                    },
                };
                lightSwitch4.SaveFunctionFile();
                var scene3 = new Scene()
                {
                    sid = "scene3",
                    userSceneId = "scene3",
                    name = "温馨模式",
                    roomIds = new List<string>() { room3.roomId },
                    gatewayId = "1234567890123456",
                    collect = true,
                    functions = new List<SceneFunction>()
                    {
                        new SceneFunction()
                        {
                            sid = lightSwitch4.sid,
                            status = new List<SceneFunctionStatus>()
                            {
                                new SceneFunctionStatus()
                                {
                                    key = "on_off",
                                    value = "off",
                                }
                            }
                        },
                        new SceneFunction()
                        {
                            sid = lightSwitch4.sid,
                            status = new List<SceneFunctionStatus>()
                            {
                                new SceneFunctionStatus()
                                {
                                    key = "on_off",
                                    value = "off",
                                }
                            }
                        },
                    }
                };
                scene3.SaveSceneFile();
                var scene4 = new Scene()
                {
                    sid = "scene4",
                    userSceneId = "scene4",
                    name = "西餐模式",
                    roomIds = new List<string>() { room3.roomId },
                    gatewayId = "1234567890123456",
                    collect = false,
                    functions = new List<SceneFunction>()
                    {
                        new SceneFunction()
                        {
                            sid = lightSwitch4.sid,
                            status = new List<SceneFunctionStatus>()
                            {
                                new SceneFunctionStatus()
                                {
                                    key = "on_off",
                                    value = "on",
                                }
                            }
                        },
                        new SceneFunction()
                        {
                            sid = lightSwitch4.sid,
                            status = new List<SceneFunctionStatus>()
                            {
                                new SceneFunctionStatus()
                                {
                                    key = "on_off",
                                    value = "on",
                                }
                            }
                        },
                    }
                };
                scene4.SaveSceneFile();
                #endregion
                #region 卧室
                var ac = new Function()
                {
                    sid = "ac1",
                    deviceId = "ac1",
                    name = "卧室空调",
                    spk = SPK.AcStandard,
                    roomIds = new List<string>() { room3.roomId },
                    attributes = new List<FunctionAttributes>()
                    {
                        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", 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" },
                    }
                };
                ac.SaveFunctionFile();
                var scene5 = new Scene()
                {
                    sid = "scene5",
                    userSceneId = "scene5",
                    name = "阅读",
                    roomIds = new List<string>() { room2.roomId },
                    gatewayId = "1234567890123456",
                    collect = true,
                };
                scene5.SaveSceneFile();
                var scene6 = new Scene()
                {
                    sid = "scene6",
                    userSceneId = "scene6",
                    name = "起床",
                    roomIds = new List<string>() { room2.roomId },
                    gatewayId = "1234567890123456",
                    collect = false,
                };
                scene6.SaveSceneFile();
                #endregion
                var lightSwitch6 = new Function()
                {
                    sid = "lightSwitch6",
                    deviceId = "lightSwitch6",
                    name = "洗手间灯",
                    spk = SPK.LightSwitch,
                    roomIds = new List<string>() { room1.roomId },
                    attributes = new List<FunctionAttributes>()
                    {
                        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="0",state = "0"   },
                        new FunctionAttributes() { key = "fade_time",value =new List<string>(){ "0","100" }, curValue="0",state = "0"   },
                    },
                };
                lightSwitch6.SaveFunctionFile();
                #endregion
                var fileList = Common.FileUtlis.Files.ReadFiles();
                foreach (var file in fileList)
                {
                    FunctionList.List.IniFunctionList(file,true);
                }
                Room.CurrentSpatial.InitRoomListFunctions();
                MainPage.GoUserPage(false);
            };
            LoadEventList();
            account = etAccount.Text.Trim();
            #if DEBUG1211
HDL_ON/UI/UI2/1-HomePage/HomePage.cs
@@ -161,7 +161,7 @@
                topView.AddChidren(btnLinkStateTip);
                //更新链接状态icon颜色
                CheckLinkStatus();//2020-12-22
                //LoadEvent_CheckLinkStatus();
                btnResidenceName = new Button()
                {
@@ -206,14 +206,13 @@
                if (tempSensorList.Count > 0 || humiSensorList.Count > 0)
                {
                    btnEnvirValuesTitle.TextID = StringId.InOutdoor;
                    btnEnvirValuesTitle.Width = Application.GetRealWidth(8)+ btnEnvirValuesTitle.GetTextWidth();
                }
                btnEnvirValuesTitle.Width = Application.GetRealWidth(8) + btnEnvirValuesTitle.GetTextWidth();
                environmentalView.AddChidren(btnEnvirValuesTitle);
                Button btnTempIcon = new Button()
                {
                    X = btnEnvirValuesTitle.Right,//+ Application.GetRealWidth(4),
                    //X = Application.GetRealWidth(12),
                    X = btnEnvirValuesTitle.Right,
                    Gravity = Gravity.CenterVertical,
                    Width = Application.GetMinRealAverage(16),
                    Height = Application.GetMinRealAverage(16),
@@ -240,10 +239,11 @@
                    TextColor = CSS_Color.MainBackgroundColor,
                    TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
                    TextAlignment = TextAlignment.CenterLeft,
                    Text = "/--°",
                    Text = ""
                };
                if (tempSensorList.Count > 0)
                {
                    btnIndoorTempValues.Text = "/--°";
                    double tempTotalValues = 0;
                    foreach (var temp in tempSensorList)
                    {
@@ -255,8 +255,8 @@
                    {
                        btnIndoorTempValues.Text = "/" + tempTotalValues + "°";
                    }
                    btnIndoorTempValues.Width = btnIndoorTempValues.GetTextWidth();
                }
                btnIndoorTempValues.Width = btnIndoorTempValues.GetTextWidth();
                environmentalView.AddChidren(btnIndoorTempValues);
                Button btnHumidityIcon = new Button()
@@ -288,10 +288,11 @@
                    TextColor = CSS_Color.MainBackgroundColor,
                    TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
                    TextAlignment = TextAlignment.CenterLeft,
                    Text = "/--%",
                    Text = ""
                };
                if (tempSensorList.Count > 0)
                {
                    btnIndoorHumiValues.Text = "/--%";
                    double humiTotalValues = 0;
                    foreach (var humi in humiSensorList)
                    {
@@ -303,8 +304,8 @@
                    {
                        btnIndoorHumiValues.Text = "/" + humiTotalValues + "%";
                    }
                    btnIndoorHumiValues.Width = btnIndoorHumiValues.GetTextWidth();
                }
                btnIndoorHumiValues.Width = btnIndoorHumiValues.GetTextWidth();
                environmentalView.AddChidren(btnIndoorHumiValues);
                Button btnPm25Icon = new Button()
@@ -462,86 +463,86 @@
#if DEBUG
            FunctionList.List.Functions.Add(new Function() { spk = SPK.PjtIr, name = "测试投影仪",
                                        attributes = new List<FunctionAttributes>() {
                                            new FunctionAttributes(){ key = "on_off",curValue= "on",state = "on" },
                                            new FunctionAttributes(){ key = "computer",value = new List<string>(){"电脑" } },
                                            new FunctionAttributes(){ key = "video",value = new List<string>(){"视频" } },
                                            new FunctionAttributes(){ key = "source",value = new List<string>(){"信号源" } },
                                            new FunctionAttributes(){ key = "zoom+",value = new List<string>(){"变焦+" } },
                                            new FunctionAttributes(){ key = "zoom-",value = new List<string>(){"变焦-" } },
                                            new FunctionAttributes(){ key = "page+",value = new List<string>(){"画面+" } },
                                            new FunctionAttributes(){ key = "page-",value = new List<string>(){"画面-" } },
                                            new FunctionAttributes(){ key = "menu",value = new List<string>(){"菜单" } },
                                            new FunctionAttributes(){ key = "ok",value = new List<string>(){"确认" } },
                                            new FunctionAttributes(){ key = "up",value = new List<string>(){"上" } },
                                            new FunctionAttributes(){ key = "left",value = new List<string>(){"左" } },
                                            new FunctionAttributes(){ key = "right",value = new List<string>(){"右" } },
                                            new FunctionAttributes(){ key = "down",value = new List<string>(){"下" } },
                                            new FunctionAttributes(){ key = "exit",value = new List<string>(){"退出" } },
                                            new FunctionAttributes(){ key = "volume+",value = new List<string>(){"音量+" } },
                                            new FunctionAttributes(){ key = "volume-",value = new List<string>(){"音量-" } },
                                            new FunctionAttributes(){ key = "mute",value = new List<string>(){"静音" } },
                                            new FunctionAttributes(){ key = "auto",value = new List<string>(){"自动" } },
                                            new FunctionAttributes(){ key = "pause",value = new List<string>(){"暂停" } },
                                        }
            });
            //FunctionList.List.Functions.Add(new Function() { spk = SPK.PjtIr, name = "测试投影仪",
            //                            attributes = new List<FunctionAttributes>() {
            //                                new FunctionAttributes(){ key = "on_off",curValue= "on",state = "on" },
            //                                new FunctionAttributes(){ key = "computer",value = new List<string>(){"电脑" } },
            //                                new FunctionAttributes(){ key = "video",value = new List<string>(){"视频" } },
            //                                new FunctionAttributes(){ key = "source",value = new List<string>(){"信号源" } },
            //                                new FunctionAttributes(){ key = "zoom+",value = new List<string>(){"变焦+" } },
            //                                new FunctionAttributes(){ key = "zoom-",value = new List<string>(){"变焦-" } },
            //                                new FunctionAttributes(){ key = "page+",value = new List<string>(){"画面+" } },
            //                                new FunctionAttributes(){ key = "page-",value = new List<string>(){"画面-" } },
            //                                new FunctionAttributes(){ key = "menu",value = new List<string>(){"菜单" } },
            //                                new FunctionAttributes(){ key = "ok",value = new List<string>(){"确认" } },
            //                                new FunctionAttributes(){ key = "up",value = new List<string>(){"上" } },
            //                                new FunctionAttributes(){ key = "left",value = new List<string>(){"左" } },
            //                                new FunctionAttributes(){ key = "right",value = new List<string>(){"右" } },
            //                                new FunctionAttributes(){ key = "down",value = new List<string>(){"下" } },
            //                                new FunctionAttributes(){ key = "exit",value = new List<string>(){"退出" } },
            //                                new FunctionAttributes(){ key = "volume+",value = new List<string>(){"音量+" } },
            //                                new FunctionAttributes(){ key = "volume-",value = new List<string>(){"音量-" } },
            //                                new FunctionAttributes(){ key = "mute",value = new List<string>(){"静音" } },
            //                                new FunctionAttributes(){ key = "auto",value = new List<string>(){"自动" } },
            //                                new FunctionAttributes(){ key = "pause",value = new List<string>(){"暂停" } },
            //                            }
            //});
            FunctionList.List.Functions.Add(new Function()
            {
                spk = SPK.StbIr,
                name = "测试机顶盒",
                attributes = new List<FunctionAttributes>() {
                                            new FunctionAttributes(){ key = "on_off",curValue= "on",state = "on" },
                                            new FunctionAttributes(){ key = "computer",value = new List<string>(){"电脑" } },
                                            new FunctionAttributes(){ key = "video",value = new List<string>(){"视频" } },
                                            new FunctionAttributes(){ key = "source",value = new List<string>(){"信号源" } },
                                            new FunctionAttributes(){ key = "zoom+",value = new List<string>(){"变焦+" } },
                                            new FunctionAttributes(){ key = "zoom-",value = new List<string>(){"变焦-" } },
                                            new FunctionAttributes(){ key = "page+",value = new List<string>(){"画面+" } },
                                            new FunctionAttributes(){ key = "page-",value = new List<string>(){"画面-" } },
                                            new FunctionAttributes(){ key = "menu",value = new List<string>(){"菜单" } },
                                            new FunctionAttributes(){ key = "ok",value = new List<string>(){"确认" } },
                                            new FunctionAttributes(){ key = "up",value = new List<string>(){"上" } },
                                            new FunctionAttributes(){ key = "left",value = new List<string>(){"左" } },
                                            new FunctionAttributes(){ key = "right",value = new List<string>(){"右" } },
                                            new FunctionAttributes(){ key = "down",value = new List<string>(){"下" } },
                                            new FunctionAttributes(){ key = "exit",value = new List<string>(){"退出" } },
                                            new FunctionAttributes(){ key = "volume+",value = new List<string>(){"音量+" } },
                                            new FunctionAttributes(){ key = "volume-",value = new List<string>(){"音量-" } },
                                            new FunctionAttributes(){ key = "mute",value = new List<string>(){"静音" } },
                                            new FunctionAttributes(){ key = "auto",value = new List<string>(){"自动" } },
                                            new FunctionAttributes(){ key = "pause",value = new List<string>(){"暂停" } },
                                        }
            });
            //FunctionList.List.Functions.Add(new Function()
            //{
            //    spk = SPK.StbIr,
            //    name = "测试机顶盒",
            //    attributes = new List<FunctionAttributes>() {
            //                                new FunctionAttributes(){ key = "on_off",curValue= "on",state = "on" },
            //                                new FunctionAttributes(){ key = "computer",value = new List<string>(){"电脑" } },
            //                                new FunctionAttributes(){ key = "video",value = new List<string>(){"视频" } },
            //                                new FunctionAttributes(){ key = "source",value = new List<string>(){"信号源" } },
            //                                new FunctionAttributes(){ key = "zoom+",value = new List<string>(){"变焦+" } },
            //                                new FunctionAttributes(){ key = "zoom-",value = new List<string>(){"变焦-" } },
            //                                new FunctionAttributes(){ key = "page+",value = new List<string>(){"画面+" } },
            //                                new FunctionAttributes(){ key = "page-",value = new List<string>(){"画面-" } },
            //                                new FunctionAttributes(){ key = "menu",value = new List<string>(){"菜单" } },
            //                                new FunctionAttributes(){ key = "ok",value = new List<string>(){"确认" } },
            //                                new FunctionAttributes(){ key = "up",value = new List<string>(){"上" } },
            //                                new FunctionAttributes(){ key = "left",value = new List<string>(){"左" } },
            //                                new FunctionAttributes(){ key = "right",value = new List<string>(){"右" } },
            //                                new FunctionAttributes(){ key = "down",value = new List<string>(){"下" } },
            //                                new FunctionAttributes(){ key = "exit",value = new List<string>(){"退出" } },
            //                                new FunctionAttributes(){ key = "volume+",value = new List<string>(){"音量+" } },
            //                                new FunctionAttributes(){ key = "volume-",value = new List<string>(){"音量-" } },
            //                                new FunctionAttributes(){ key = "mute",value = new List<string>(){"静音" } },
            //                                new FunctionAttributes(){ key = "auto",value = new List<string>(){"自动" } },
            //                                new FunctionAttributes(){ key = "pause",value = new List<string>(){"暂停" } },
            //                            }
            //});
            FunctionList.List.Functions.Add(new Function()
            {
                spk = SPK.TvIr,
                name = "测试电视",
                attributes = new List<FunctionAttributes>() {
                                            new FunctionAttributes(){ key = "on_off",curValue= "on",state = "on" },
                                            new FunctionAttributes(){ key = "computer",value = new List<string>(){"电脑" } },
                                            new FunctionAttributes(){ key = "video",value = new List<string>(){"视频" } },
                                            new FunctionAttributes(){ key = "source",value = new List<string>(){"信号源" } },
                                            new FunctionAttributes(){ key = "zoom+",value = new List<string>(){"变焦+" } },
                                            new FunctionAttributes(){ key = "zoom-",value = new List<string>(){"变焦-" } },
                                            new FunctionAttributes(){ key = "page+",value = new List<string>(){"画面+" } },
                                            new FunctionAttributes(){ key = "page-",value = new List<string>(){"画面-" } },
                                            new FunctionAttributes(){ key = "menu",value = new List<string>(){"菜单" } },
                                            new FunctionAttributes(){ key = "ok",value = new List<string>(){"确认" } },
                                            new FunctionAttributes(){ key = "up",value = new List<string>(){"上" } },
                                            new FunctionAttributes(){ key = "left",value = new List<string>(){"左" } },
                                            new FunctionAttributes(){ key = "right",value = new List<string>(){"右" } },
                                            new FunctionAttributes(){ key = "down",value = new List<string>(){"下" } },
                                            new FunctionAttributes(){ key = "exit",value = new List<string>(){"退出" } },
                                            new FunctionAttributes(){ key = "volume+",value = new List<string>(){"音量+" } },
                                            new FunctionAttributes(){ key = "volume-",value = new List<string>(){"音量-" } },
                                            new FunctionAttributes(){ key = "mute",value = new List<string>(){"静音" } },
                                            new FunctionAttributes(){ key = "auto",value = new List<string>(){"自动" } },
                                            new FunctionAttributes(){ key = "pause",value = new List<string>(){"暂停" } },
                                        }
            });
            //FunctionList.List.Functions.Add(new Function()
            //{
            //    spk = SPK.TvIr,
            //    name = "测试电视",
            //    attributes = new List<FunctionAttributes>() {
            //                                new FunctionAttributes(){ key = "on_off",curValue= "on",state = "on" },
            //                                new FunctionAttributes(){ key = "computer",value = new List<string>(){"电脑" } },
            //                                new FunctionAttributes(){ key = "video",value = new List<string>(){"视频" } },
            //                                new FunctionAttributes(){ key = "source",value = new List<string>(){"信号源" } },
            //                                new FunctionAttributes(){ key = "zoom+",value = new List<string>(){"变焦+" } },
            //                                new FunctionAttributes(){ key = "zoom-",value = new List<string>(){"变焦-" } },
            //                                new FunctionAttributes(){ key = "page+",value = new List<string>(){"画面+" } },
            //                                new FunctionAttributes(){ key = "page-",value = new List<string>(){"画面-" } },
            //                                new FunctionAttributes(){ key = "menu",value = new List<string>(){"菜单" } },
            //                                new FunctionAttributes(){ key = "ok",value = new List<string>(){"确认" } },
            //                                new FunctionAttributes(){ key = "up",value = new List<string>(){"上" } },
            //                                new FunctionAttributes(){ key = "left",value = new List<string>(){"左" } },
            //                                new FunctionAttributes(){ key = "right",value = new List<string>(){"右" } },
            //                                new FunctionAttributes(){ key = "down",value = new List<string>(){"下" } },
            //                                new FunctionAttributes(){ key = "exit",value = new List<string>(){"退出" } },
            //                                new FunctionAttributes(){ key = "volume+",value = new List<string>(){"音量+" } },
            //                                new FunctionAttributes(){ key = "volume-",value = new List<string>(){"音量-" } },
            //                                new FunctionAttributes(){ key = "mute",value = new List<string>(){"静音" } },
            //                                new FunctionAttributes(){ key = "auto",value = new List<string>(){"自动" } },
            //                                new FunctionAttributes(){ key = "pause",value = new List<string>(){"暂停" } },
            //                            }
            //});
#endif
        }
HDL_ON/UI/UI2/1-HomePage/HomePageBLL.cs
@@ -90,6 +90,13 @@
        /// </summary>
        void CheckLinkStatus()
        {
            //Dome模式
            if (MainPage.NoLoginMode)
            {
                bodyView.btnLinkStateTip.BackgroundColor = CSS.CSS_Color.MainColor;
                return;
            }
            if (!Control.Ins.GatewayOnline_Local && !Control.Ins.GatewayOnline_Cloud)
            {
                bodyView.btnLinkStateTip.BackgroundColor = CSS.CSS_Color.LinkTipFail;
HDL_ON/UI/UI2/3-Intelligence/Automation/Send.cs
@@ -209,7 +209,9 @@
                    {
                        var conditionJOb = new JObject { };
                        conditionJOb.Add("key", dic["key"]);
                        conditionJOb.Add("comparator", dic["comparator"]);
                        var c1 = "";
                        dic.TryGetValue("comparator", out c1);
                        conditionJOb.TryAdd("comparator", c1);
                        conditionJOb.Add("data_type", dic["data_type"]);
                        conditionJOb.Add("value", dic["value"]);
                        conditionArray.Add(conditionJOb);
HDL_ON/UI/UI2/4-PersonalCenter/MyQRCodePage.cs
@@ -139,7 +139,10 @@
                while (this.Parent != null)
                {
                    System.Threading.Thread.Sleep(4000);
                    if (this.Parent == null)
                    {
                        break;
                    }
                    //访问云端获取列表
                    var resultObj = DAL.Server.HttpUtil.RequestHttpsPost(DAL.Server.NewAPI.API_POST_Gethomepager, requestJson);
                    if (resultObj.Code == DAL.Server.StateCode.SUCCESS)
@@ -155,6 +158,11 @@
                        pm.GetHomePager();
                        Application.RunOnMainThread(() =>
                        {
                            if (this.Parent == null)
                            {
                                return ;
                            }
                            //跳转页面----
                            MainPage.GoUserPage(true, false, () =>
                            {
HDL_ON/UI/UI2/4-PersonalCenter/PersonalCenterPage.cs
@@ -234,6 +234,38 @@
            #endregion
            //体验模式
            if(MainPage.NoLoginMode)
            {
                Button btnExit = new Button()
                {
                    Y = Application.GetRealHeight(58) + personalInfoView.Bottom,
                    Height = Application.GetRealHeight(50),
                    TextAlignment = TextAlignment.Center,
                    SelectedTextColor = CSS_Color.MainColor,
                    TextColor = CSS_Color.BackgroundColor,
                    TextSize = CSS_FontSize.SubheadingFontSize,
                    TextID = StringId.NextStep,
                    BackgroundColor = CSS_Color.MainBackgroundColor,
                    SelectedBackgroundColor = CSS_Color.MainBackgroundColor,
                };
                if(Language.CurrentLanguage =="Chinese")
                {
                    btnExit.Text = "退出体验模式";
                }
                else
                {
                    btnExit.Text = "Exit dome";
                }
                btnExit.MouseUpEventHandler = (sender, e) =>
                {
                    HDLCommon.Current.Logout();
                };
                return;
            }
            contentView = new VerticalScrolViewLayout()
            {
                Y = Application.GetRealHeight(8) + personalInfoView.Bottom,
HDL_ON/UI/UI2/4-PersonalCenter/PersonalDataPage.cs
@@ -147,6 +147,20 @@
        Button btnResetPasswordText;
        Button btnResetPasswordRight;
        #endregion
        #region 个人选项-新增住宅
        /// <summary>
        /// 个人选项-新增住宅区域
        /// </summary>
        FrameLayout addResidenceView;
        /// <summary>
        /// 新增住宅提示文本
        /// </summary>
        Button btnAddResidenceText;
        Button btnAddResidenceScan;
        #endregion
        #endregion
        #endregion
@@ -232,8 +246,7 @@
            /// </summary>
            optionListView = new VerticalScrolViewLayout()
            {
                //Y = headPortraitView.Bottom + Application.GetRealHeight(8),
                Height = Application.GetRealHeight(51 * 5),
                Height = Application.GetRealHeight(51 * 6),
                BackgroundColor = CSS_Color.MainBackgroundColor,
                ScrollEnabled = false,
            };
@@ -465,7 +478,6 @@
                UnSelectedImagePath = "Public/Right.png",
            };
            thirdPartyAuthorizationView.AddChidren(btnThirdPartyAuthorizationRight);
            //optionListView.AddChidren(new Button() { X = Application.GetRealWidth(16), Height = Application.GetRealHeight(1), Width = Application.GetRealWidth(343), BackgroundColor = CSS_Color.DividingLineColor });
            #endregion
            #region 个人选项-修改登录密码区域
            /// <summary>
@@ -498,8 +510,46 @@
                UnSelectedImagePath = "Public/Right.png",
            };
            resetPasswordView.AddChidren(btnResetPasswordRight);
            //optionListView.AddChidren(new Button() { X = Application.GetRealWidth(16), Height = Application.GetRealHeight(1), Width = Application.GetRealWidth(343), BackgroundColor = CSS_Color.DividingLineColor });
            optionListView.AddChidren(new Button() { X = Application.GetRealWidth(16), Height = Application.GetRealHeight(1), Width = Application.GetRealWidth(343), BackgroundColor = CSS_Color.DividingLineColor });
            #endregion
            #region 个人选项-添加住宅
            addResidenceView = new FrameLayout()
            {
                Height = Application.GetRealHeight(50),
            };
            optionListView.AddChidren(addResidenceView);
            btnAddResidenceScan = new Button()
            {
                X = Application.GetRealWidth(319),
                Gravity = Gravity.CenterVertical,
                Width = Application.GetMinRealAverage(30),
                Height = Application.GetMinRealAverage(30),
                UnSelectedImagePath = "Public/ScanGrey.png",
            };
            addResidenceView.AddChidren(btnAddResidenceScan);
            btnAddResidenceText = new Button()
            {
                X = Application.GetRealWidth(16),
                TextAlignment = TextAlignment.CenterLeft,
                TextColor = CSS_Color.FirstLevelTitleColor,
                TextSize = CSS_FontSize.SubheadingFontSize,
                TextID = StringId.AddResidence,
            };
            addResidenceView.AddChidren(btnAddResidenceText);
            btnAddResidenceText.MouseUpEventHandler = (sender, e) =>
            {
                Scan.OpenScan((scanString) =>
                {
                    //执行绑定住宅
                    new BindingResidencePage().DoBindResidence(scanString);
                });
            };
            #endregion
            #endregion
            #region 解锁设置区域
@@ -514,7 +564,7 @@
            interpretationSettingsView = new FrameLayout()
            {
                BackgroundColor = CSS_Color.MainBackgroundColor,
                Height = Application.GetRealHeight(66),
                Height = Application.GetRealHeight(70),
            };
            bodyScrolView.AddChidren(interpretationSettingsView);
            if(Language.CurrentLanguage != "Chinese")
@@ -538,7 +588,7 @@
                X = Application.GetRealWidth(16),
                Y = btnInterpretationSettingsTitle.Bottom,
                Height = Application.GetRealHeight(32),
                Width = Application.GetRealWidth(290),
                Width = Application.GetRealWidth(310),
                TextAlignment = TextAlignment.TopLeft,
                TextColor = CSS_Color.PromptingColor1,
                TextSize = CSS_FontSize.TextFontSize,
HDL_ON/UI/UI2/4-PersonalCenter/PersonalDataPageBLL.cs
@@ -658,4 +658,6 @@
            { IsBackground = true }.Start();
        }
    }
}
HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/AcControlPage.cs
@@ -37,6 +37,10 @@
        /// </summary>
        Button btnMode;
        /// <summary>
        /// 扫风按钮
        /// </summary>
        Button btnSwing;
        /// <summary>
        /// 风速按钮
        /// </summary>
        Button btnWindSpeed;
@@ -182,6 +186,19 @@
                UnSelectedImagePath = acFunction.GetModeIconPath(device.GetAttrState(FunctionAttributeKey.Mode)),
            };
            FrameWhiteCentet1.AddChidren(btnMode);
            btnSwing = new Button()
            {
                Gravity = Gravity.CenterHorizontal,
                Y = Application.GetRealHeight(330),
                Width = Application.GetRealWidth(40),
                Height = Application.GetRealWidth(40),
                UnSelectedImagePath = "FunctionIcon/AC/SweepIconNullOn.png",
            };
            FrameWhiteCentet1.AddChidren(btnSwing);
            btnWindSpeed = new Button()
            {
@@ -337,6 +354,122 @@
            };
            dialog.Show();
        }
        /// <summary>
        /// 加载修改扫风模式区域
        /// </summary>
        void LoadDiv_ChangeSwingView()
        {
            Dialog dialog = new Dialog();
            FrameLayout dialogView = new FrameLayout()
            {
                BackgroundColor = CSS_Color.DialogTransparentColor1,
            };
            dialog.AddChidren(dialogView);
            FrameLayout modeChangeView;
            modeChangeView = new FrameLayout()
            {
                Gravity = Gravity.CenterHorizontal,
                Y = Application.GetRealHeight(128),
                Width = Application.GetRealWidth(160),
                Height = Application.GetRealHeight(287),
                BackgroundImagePath = "FunctionIcon/AC/DivBg2.png",
            };
            dialogView.AddChidren(modeChangeView);
            Button btnTitle;
            btnTitle = new Button()
            {
                X = Application.GetRealWidth(8 + 16),
                Y = Application.GetRealHeight(8),
                Width = Application.GetRealWidth(112),
                Height = Application.GetRealHeight(44),
                TextID = StringId.Swing,
                TextAlignment = TextAlignment.CenterLeft,
                TextColor = CSS_Color.FirstLevelTitleColor,
                TextSize = CSS_FontSize.EmphasisFontSize_Secondary,
            };
            modeChangeView.AddChidren(btnTitle);
            Button btnLine = new Button()
            {
                X = btnTitle.X,
                Y = btnTitle.Bottom,
                Width = Application.GetRealWidth(112),
                Height = Application.GetRealHeight(1),
                BackgroundColor = CSS_Color.BackgroundColor,
            };
            modeChangeView.AddChidren(btnLine);
            var modeList = device.GetAttribute(FunctionAttributeKey.Swing).value;
            foreach (var m in modeList)
            {
                Button btnModeIcon = new Button()
                {
                    X = btnTitle.X,
                    Y = Application.GetRealHeight(41 * (modeList.IndexOf(m) + 1) + 10 + 8),
                    Width = Application.GetRealWidth(30),
                    Height = Application.GetRealWidth(30),
                    IsSelected = device.GetAttrState(FunctionAttributeKey.Swing) == m,
                };
                modeChangeView.AddChidren(btnModeIcon);
                Button btnModeText = new Button()
                {
                    X = Application.GetRealWidth(12) + btnModeIcon.Right,
                    Y = Application.GetRealHeight(44 * (modeList.IndexOf(m) + 1) + 8),
                    Height = Application.GetRealHeight(44),
                    Width = Application.GetRealWidth(90),
                    TextAlignment = TextAlignment.CenterLeft,
                    TextColor = CSS_Color.FirstLevelTitleColor,
                    SelectedTextColor = CSS_Color.MainColor,
                    IsSelected = device.GetAttrState(FunctionAttributeKey.Swing) == m,
                    TextSize = CSS_FontSize.TextFontSize,
                };
                modeChangeView.AddChidren(btnModeText);
                btnModeIcon.UnSelectedImagePath = acFunction.GetSwingIconPath(m, false);
                btnModeIcon.SelectedImagePath = acFunction.GetSwingIconPath(m);
                btnModeText.Text = acFunction.GetSwingAttrText(m);
                if (modeList.IndexOf(m) < modeList.Count - 1)
                {
                    modeChangeView.AddChidren(new Button()
                    {
                        X = btnTitle.X,
                        Y = btnModeText.Bottom,
                        Width = Application.GetRealWidth(112),
                        Height = Application.GetRealHeight(1),
                        BackgroundColor = CSS_Color.BackgroundColor,
                    });
                }
                EventHandler<MouseEventArgs> eventHandler = (sender, e) =>
                {
                    dialog.Close();
                };
                EventHandler<MouseEventArgs> eventHandler1 = (sender, e) =>
                {
                    btnModeIcon.IsSelected = btnModeText.IsSelected = true;
                    device.SetAttrState(FunctionAttributeKey.Swing, m);
                    btnSwing.UnSelectedImagePath = acFunction.GetSwingIconPath(m);
                    Dictionary<string, string> d = new Dictionary<string, string>();
                    d.Add(FunctionAttributeKey.Swing, m);
                    Control.Ins.SendWriteCommand(device, d);
                    dialog.Close();
                };
                btnModeIcon.MouseUpEventHandler = eventHandler1;
                btnModeText.MouseUpEventHandler = eventHandler1;
                dialogView.MouseUpEventHandler = eventHandler;
            }
            dialogView.MouseUpEventHandler = (sender, e) => {
                dialog.Close();
            };
            dialog.Show();
        }
        /// <summary>
        /// 加载修改模式区域
        /// </summary>
@@ -460,7 +593,7 @@
                var btnMore = new Button()
                {
                    Gravity = Gravity.CenterHorizontal,
                    Y = Application.GetRealHeight(334),
                    Y = Application.GetRealHeight(334 + 80),
                    Width = Application.GetRealWidth(30),
                    Height = Application.GetRealWidth(30),
                    UnSelectedImagePath = "FunctionIcon/AC/More.png",
@@ -732,6 +865,8 @@
            //    MainPage.BasePageView.ScrollEnabled = true;
            //};
        }
        /// <summary>
        /// 控制模式事件
        /// </summary>
@@ -744,6 +879,15 @@
                    return;
                }
                LoadDiv_ChangeModeView();
            };
            //扫风改变模式
            btnSwing.MouseUpEventHandler = (sender, e) =>
            {
                if (device.trait_on_off.curValue.ToString() == "off")
                {
                    return;
                }
                LoadDiv_ChangeSwingView();
            };
            btnWindSpeed.MouseUpEventHandler = (sender, e) =>
            {
@@ -790,6 +934,7 @@
                btnTemp.Text = Convert.ToDouble( device.GetAttrState(FunctionAttributeKey.SetTemp)).ToString();
                btnIndoorTemp.Text = Language.StringByID(StringId.IndoorTemp) + Convert.ToInt32(Convert.ToDouble(device.GetAttrState(FunctionAttributeKey.RoomTemp))) + "°C";
                btnMode.UnSelectedImagePath = acFunction.GetModeIconPath(device.GetAttrState(FunctionAttributeKey.Mode));
                btnSwing.UnSelectedImagePath = acFunction.GetSwingIconPath(device.GetAttrState(FunctionAttributeKey.Swing));
                btnWindSpeed.UnSelectedImagePath = acFunction.GetFanIconPath(device.GetAttrState(FunctionAttributeKey.FanSpeed));
                arcBar.Progress = Convert.ToInt32(Convert.ToDouble(device.GetAttrState(FunctionAttributeKey.SetTemp)));
                if (device.trait_on_off.curValue.ToString() == "on")
HDL_ON/UI/UI2/FuntionControlView/Light/RGBPage.cs
@@ -163,12 +163,12 @@
            {
                colorPicker.ColorImagePath = "FunctionIcon/Light/ColorWheelGray.png";
            }
            colorPicker.MouseDownEventHandler = (sender, e) => {
                MainPage.BasePageView.ScrollEnabled = false;
            };
            colorPicker.MouseUpEventHandler = (sender, e) => {
                MainPage.BasePageView.ScrollEnabled = true;
            };
            //colorPicker.MouseDownEventHandler = (sender, e) => {
            //    MainPage.BasePageView.ScrollEnabled = false;
            //};
            //colorPicker.MouseUpEventHandler = (sender, e) => {
            //    MainPage.BasePageView.ScrollEnabled = true;
            //};
            //白点控件
            this.btnWhiteRound = new Button();
HDL_ON/UI/UI2/UserPage.cs
@@ -121,8 +121,11 @@
                ContextView.AddChidren(homePage);
                homePage.LoadPage();
                //注册推送ID
                RegisteredPush();
                if (!MainPage.NoLoginMode)
                {
                    //注册推送ID
                    RegisteredPush();
                }
                //2020-12-07 增加版本检测更新方法
                HDLCommon.Current.CheckIfNeedForceUpdate();
@@ -565,12 +568,6 @@
        /// </summary>
        public void ChoosePersonalCenter()
        {
#if DEBUG
            if(MainPage.NoLoginMode)
            {
                return;
            }
#endif
            if (MainPage.CurPageIndex == 3)
            {
                return;
ThirdPartyIntegration/HdlBluWi/Blufi.xcodeproj/project.xcworkspace/xcuserdata/kaede.xcuserdatad/UserInterfaceState.xcuserstate
Binary files differ