From 531f1380ec8478e109118cf96bc2c9f31e9278d1 Mon Sep 17 00:00:00 2001
From: wei <kaede@kaededeMacBook-Air.local>
Date: 星期三, 23 六月 2021 09:27:23 +0800
Subject: [PATCH] 代码同步

---
 HDL-ON_Android/Properties/AndroidManifest.xml                                                                                  |    2 
 HDL_ON/UI/UI2/1-HomePage/HomePage.cs                                                                                           |  173 +++---
 HDL_ON/Entity/Function/Light.cs                                                                                                |    2 
 HDL-ON_Android/Assets/Language.ini                                                                                             |   10 
 HDL-ON_iOS/HDL-ON_iOS.csproj                                                                                                   |    9 
 HDL_ON/UI/UI2/UserPage.cs                                                                                                      |   13 
 HDL_ON/UI/UI2/FuntionControlView/Light/RGBPage.cs                                                                              |   12 
 HDL-ON_Android/Assets/Phone/FunctionIcon/AC/SweepIconNullOn.png                                                                |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/AC/SweepIconNull.png                                                                  |    0 
 HDL-ON_Android/HDL-ON_Android.csproj                                                                                           |    7 
 HDL_ON/UI/UI2/1-HomePage/HomePageBLL.cs                                                                                        |    7 
 HDL-ON_iOS/Resources/Language.ini                                                                                              |   10 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/AC/SweepIconNullOn.png                                                                 |    0 
 HDL_ON/Entity/Room.cs                                                                                                          |   22 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/AC/SweepIconNull.png                                                                   |    0 
 HDL_ON/Entity/Function/AC.cs                                                                                                   |   67 ++
 HDL_ON/UI/UI2/4-PersonalCenter/PersonalDataPage.cs                                                                             |   62 ++
 HDL-ON_iOS/Resources/Phone/FunctionIcon/AC/SweepIconUD.png                                                                     |    0 
 .vs/HDL_APP_Project/xs/UserPrefs.xml                                                                                           |   74 +-
 HDL_ON/DAL/DriverLayer/Control.cs                                                                                              |   65 ++
 HDL_ON/UI/MainPage.cs                                                                                                          |    4 
 HDL-ON_Android/Assets/Phone/FunctionIcon/AC/SweepIconUD.png                                                                    |    0 
 HDL_ON/UI/UI1-Login/LoginPage.cs                                                                                               |  601 +++++++++++++++++++++++-
 HDL-ON_Android/Assets/Phone/Public/ScanGrey.png                                                                                |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/AC/SweepIconUDOn.png                                                                  |    0 
 HDL_ON/UI/UI2/4-PersonalCenter/PersonalDataPageBLL.cs                                                                          |    2 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/AC/SweepIconLROn.png                                                                   |    0 
 HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/AcControlPage.cs                                                                 |  147 ++++++
 HDL_ON/Entity/DB_ResidenceData.cs                                                                                              |   26 +
 HDL-ON_Android/Assets/Phone/FunctionIcon/AC/SweepIconLROn.png                                                                  |    0 
 HDL_ON/UI/BindingResidence/BindingResidencePage.cs                                                                             |    6 
 HDL_ON/Entity/Function/Function.cs                                                                                             |    4 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/AC/SweepIconLR.png                                                                     |    0 
 ThirdPartyIntegration/HdlBluWi/Blufi.xcodeproj/project.xcworkspace/xcuserdata/kaede.xcuserdatad/UserInterfaceState.xcuserstate |    0 
 HDL_ON/DAL/Server/HttpUtil.cs                                                                                                  |    8 
 HDL-ON_iOS/Resources/Phone/Public/ScanGrey.png                                                                                 |    0 
 HDL_ON/UI/UI2/4-PersonalCenter/MyQRCodePage.cs                                                                                 |   10 
 HDL_ON/Common/UserInfo.cs                                                                                                      |   11 
 HDL_ON/UI/UI2/3-Intelligence/Automation/Send.cs                                                                                |    4 
 HDL_ON/UI/UI2/4-PersonalCenter/PersonalCenterPage.cs                                                                           |   32 +
 HDL-ON_Android/Assets/Phone/FunctionIcon/AC/SweepIconLR.png                                                                    |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/AC/SweepIconUDOn.png                                                                   |    0 
 HDL_ON/Common/R.cs                                                                                                             |   16 
 HDL_ON/DAL/Server/HttpServerRequest.cs                                                                                         |   34 
 44 files changed, 1,219 insertions(+), 221 deletions(-)

diff --git a/.vs/HDL_APP_Project/xs/UserPrefs.xml b/.vs/HDL_APP_Project/xs/UserPrefs.xml
index b9b526f..317a65d 100644
--- a/.vs/HDL_APP_Project/xs/UserPrefs.xml
+++ b/.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 />
diff --git a/HDL-ON_Android/Assets/Language.ini b/HDL-ON_Android/Assets/Language.ini
index 2f45ea8..7bb51b6 100644
--- a/HDL-ON_Android/Assets/Language.ini
+++ b/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=瀹ゅ唴婀垮害
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/AC/SweepIconLR.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/AC/SweepIconLR.png
new file mode 100644
index 0000000..2bb2be1
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/AC/SweepIconLR.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/AC/SweepIconLROn.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/AC/SweepIconLROn.png
new file mode 100644
index 0000000..339609c
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/AC/SweepIconLROn.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/AC/SweepIconNull.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/AC/SweepIconNull.png
new file mode 100644
index 0000000..fc6d0fc
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/AC/SweepIconNull.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/AC/SweepIconNullOn.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/AC/SweepIconNullOn.png
new file mode 100644
index 0000000..b7e1081
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/AC/SweepIconNullOn.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/AC/SweepIconUD.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/AC/SweepIconUD.png
new file mode 100644
index 0000000..9767c92
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/AC/SweepIconUD.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/AC/SweepIconUDOn.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/AC/SweepIconUDOn.png
new file mode 100644
index 0000000..e7cabda
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/AC/SweepIconUDOn.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/Public/ScanGrey.png b/HDL-ON_Android/Assets/Phone/Public/ScanGrey.png
new file mode 100644
index 0000000..3bb7bdf
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/Public/ScanGrey.png
Binary files differ
diff --git a/HDL-ON_Android/HDL-ON_Android.csproj b/HDL-ON_Android/HDL-ON_Android.csproj
index 783fb5d..6f480ba 100644
--- a/HDL-ON_Android/HDL-ON_Android.csproj
+++ b/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" />
diff --git a/HDL-ON_Android/Properties/AndroidManifest.xml b/HDL-ON_Android/Properties/AndroidManifest.xml
index b764810..9e7480a 100644
--- a/HDL-ON_Android/Properties/AndroidManifest.xml
+++ b/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" />
diff --git a/HDL-ON_iOS/HDL-ON_iOS.csproj b/HDL-ON_iOS/HDL-ON_iOS.csproj
index a639039..5bd1b66 100644
--- a/HDL-ON_iOS/HDL-ON_iOS.csproj
+++ b/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" />
diff --git a/HDL-ON_iOS/Resources/Language.ini b/HDL-ON_iOS/Resources/Language.ini
index 2f45ea8..7bb51b6 100644
--- a/HDL-ON_iOS/Resources/Language.ini
+++ b/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=瀹ゅ唴婀垮害
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/AC/SweepIconLR.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/AC/SweepIconLR.png
new file mode 100644
index 0000000..2bb2be1
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/AC/SweepIconLR.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/AC/SweepIconLROn.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/AC/SweepIconLROn.png
new file mode 100644
index 0000000..339609c
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/AC/SweepIconLROn.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/AC/SweepIconNull.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/AC/SweepIconNull.png
new file mode 100644
index 0000000..fc6d0fc
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/AC/SweepIconNull.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/AC/SweepIconNullOn.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/AC/SweepIconNullOn.png
new file mode 100644
index 0000000..b7e1081
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/AC/SweepIconNullOn.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/AC/SweepIconUD.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/AC/SweepIconUD.png
new file mode 100644
index 0000000..9767c92
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/AC/SweepIconUD.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/AC/SweepIconUDOn.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/AC/SweepIconUDOn.png
new file mode 100644
index 0000000..e7cabda
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/AC/SweepIconUDOn.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/Public/ScanGrey.png b/HDL-ON_iOS/Resources/Phone/Public/ScanGrey.png
new file mode 100644
index 0000000..3bb7bdf
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/Public/ScanGrey.png
Binary files differ
diff --git a/HDL_ON/Common/R.cs b/HDL_ON/Common/R.cs
index f54e945..0a0eb53 100644
--- a/HDL_ON/Common/R.cs
+++ b/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;
diff --git a/HDL_ON/Common/UserInfo.cs b/HDL_ON/Common/UserInfo.cs
index 289baf8..a242194 100644
--- a/HDL_ON/Common/UserInfo.cs
+++ b/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
diff --git a/HDL_ON/DAL/DriverLayer/Control.cs b/HDL_ON/DAL/DriverLayer/Control.cs
index e4f1c1a..8f82384 100644
--- a/HDL_ON/DAL/DriverLayer/Control.cs
+++ b/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;
+            }
+
             //杩滅▼鎴栬�呮帶鍒秎ink缃戝叧鍦烘櫙
             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)
         {
diff --git a/HDL_ON/DAL/Server/HttpServerRequest.cs b/HDL_ON/DAL/Server/HttpServerRequest.cs
index b059398..c1a0d9e 100644
--- a/HDL_ON/DAL/Server/HttpServerRequest.cs
+++ b/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;
         }
 
 
diff --git a/HDL_ON/DAL/Server/HttpUtil.cs b/HDL_ON/DAL/Server/HttpUtil.cs
index 4347c31..32c87e1 100644
--- a/HDL_ON/DAL/Server/HttpUtil.cs
+++ b/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. 灏唌odel瀹炰綋杞负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)
                 {
diff --git a/HDL_ON/Entity/DB_ResidenceData.cs b/HDL_ON/Entity/DB_ResidenceData.cs
index af8b657..896cb34 100644
--- a/HDL_ON/Entity/DB_ResidenceData.cs
+++ b/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();
diff --git a/HDL_ON/Entity/Function/AC.cs b/HDL_ON/Entity/Function/AC.cs
index e05d976..3f9a905 100644
--- a/HDL_ON/Entity/Function/AC.cs
+++ b/HDL_ON/Entity/Function/AC.cs
@@ -225,6 +225,48 @@
         }
 
         /// <summary>
+        /// 褰撳墠妯″紡鐨刬con璺緞
+        /// </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>
diff --git a/HDL_ON/Entity/Function/Function.cs b/HDL_ON/Entity/Function/Function.cs
index dee04dc..9ae66ef 100644
--- a/HDL_ON/Entity/Function/Function.cs
+++ b/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>
diff --git a/HDL_ON/Entity/Function/Light.cs b/HDL_ON/Entity/Function/Light.cs
index 65d6f5a..c7546c7 100644
--- a/HDL_ON/Entity/Function/Light.cs
+++ b/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];
diff --git a/HDL_ON/Entity/Room.cs b/HDL_ON/Entity/Room.cs
index 75db6e5..609e788 100644
--- a/HDL_ON/Entity/Room.cs
+++ b/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
diff --git a/HDL_ON/UI/BindingResidence/BindingResidencePage.cs b/HDL_ON/UI/BindingResidence/BindingResidencePage.cs
index 601d6d5..bf2f329 100644
--- a/HDL_ON/UI/BindingResidence/BindingResidencePage.cs
+++ b/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();
diff --git a/HDL_ON/UI/MainPage.cs b/HDL_ON/UI/MainPage.cs
index 47d262e..1a295d4 100644
--- a/HDL_ON/UI/MainPage.cs
+++ b/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)
             {
                 //璺宠浆椤甸潰----
diff --git a/HDL_ON/UI/UI1-Login/LoginPage.cs b/HDL_ON/UI/UI1-Login/LoginPage.cs
index e02c0d0..14c1026 100644
--- a/HDL_ON/UI/UI1-Login/LoginPage.cs
+++ b/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
diff --git a/HDL_ON/UI/UI2/1-HomePage/HomePage.cs b/HDL_ON/UI/UI2/1-HomePage/HomePage.cs
index 7e4c84f..d58d0ec 100644
--- a/HDL_ON/UI/UI2/1-HomePage/HomePage.cs
+++ b/HDL_ON/UI/UI2/1-HomePage/HomePage.cs
@@ -161,7 +161,7 @@
                 topView.AddChidren(btnLinkStateTip);
                 //鏇存柊閾炬帴鐘舵�乮con棰滆壊
                 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
 
         }
diff --git a/HDL_ON/UI/UI2/1-HomePage/HomePageBLL.cs b/HDL_ON/UI/UI2/1-HomePage/HomePageBLL.cs
index 1883317..b84b2a7 100644
--- a/HDL_ON/UI/UI2/1-HomePage/HomePageBLL.cs
+++ b/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;
diff --git a/HDL_ON/UI/UI2/3-Intelligence/Automation/Send.cs b/HDL_ON/UI/UI2/3-Intelligence/Automation/Send.cs
index acc205b..0d9542d 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/Automation/Send.cs
+++ b/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);
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/MyQRCodePage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/MyQRCodePage.cs
index 1b78a1a..862fb16 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/MyQRCodePage.cs
+++ b/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, () =>
                             {
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/PersonalCenterPage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/PersonalCenterPage.cs
index 7390c4d..6af040c 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/PersonalCenterPage.cs
+++ b/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,
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/PersonalDataPage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/PersonalDataPage.cs
index 2b9b5f8..36b8206 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/PersonalDataPage.cs
+++ b/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 瑙i攣璁剧疆鍖哄煙
@@ -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,
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/PersonalDataPageBLL.cs b/HDL_ON/UI/UI2/4-PersonalCenter/PersonalDataPageBLL.cs
index 6e178c4..4d984e0 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/PersonalDataPageBLL.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/PersonalDataPageBLL.cs
@@ -658,4 +658,6 @@
             { IsBackground = true }.Start();
         }
     }
+
+
 }
\ No newline at end of file
diff --git a/HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/AcControlPage.cs b/HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/AcControlPage.cs
index 9aa7f00..d6d93ae 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/AcControlPage.cs
+++ b/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")
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Light/RGBPage.cs b/HDL_ON/UI/UI2/FuntionControlView/Light/RGBPage.cs
index b910d3e..cb6f2da 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Light/RGBPage.cs
+++ b/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();
diff --git a/HDL_ON/UI/UI2/UserPage.cs b/HDL_ON/UI/UI2/UserPage.cs
index 44540a8..8147061 100644
--- a/HDL_ON/UI/UI2/UserPage.cs
+++ b/HDL_ON/UI/UI2/UserPage.cs
@@ -121,8 +121,11 @@
                 ContextView.AddChidren(homePage);
                 homePage.LoadPage();
 
-                //娉ㄥ唽鎺ㄩ�両D
-                RegisteredPush();
+                if (!MainPage.NoLoginMode)
+                {
+                    //娉ㄥ唽鎺ㄩ�両D
+                    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;
diff --git a/ThirdPartyIntegration/HdlBluWi/Blufi.xcodeproj/project.xcworkspace/xcuserdata/kaede.xcuserdatad/UserInterfaceState.xcuserstate b/ThirdPartyIntegration/HdlBluWi/Blufi.xcodeproj/project.xcworkspace/xcuserdata/kaede.xcuserdatad/UserInterfaceState.xcuserstate
index c717400..4ded7e3 100644
--- a/ThirdPartyIntegration/HdlBluWi/Blufi.xcodeproj/project.xcworkspace/xcuserdata/kaede.xcuserdatad/UserInterfaceState.xcuserstate
+++ b/ThirdPartyIntegration/HdlBluWi/Blufi.xcodeproj/project.xcworkspace/xcuserdata/kaede.xcuserdatad/UserInterfaceState.xcuserstate
Binary files differ

--
Gitblit v1.8.0