From adf7df175e590b7d9e0f33c0c2ea1d2897da6301 Mon Sep 17 00:00:00 2001
From: wjc <1243177876@qq.com>
Date: 星期三, 29 三月 2023 14:33:12 +0800
Subject: [PATCH] Merge branch 'dev-cqy(1.5.9)' into wjc

---
 SiriIntents/SiriIntents.csproj                                                                   |    1 
 HDL-ON_Android/Properties/AndroidManifest.xml                                                    |    2 
 HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/SenesorMegahealth/AddSenesorMegahealthDirection1Page.cs |    2 
 HDL-ON_Android/Assets/Language.ini                                                               |    4 
 HDL-ON_iOS/HDL-ON_iOS.csproj                                                                     |   66 +-
 HDL_ON/UI/UI2/3-Intelligence/Automation/ConditionDeviceFunList.cs                                |   11 
 HDL_ON/Common/ApiUtlis.cs                                                                        |   13 
 HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/DeviceListPage.cs                                     |  158 +-----
 HDL_ON/HDL_ON.projitems                                                                          |    9 
 HDL-ON_Android/HDL-ON_Android.csproj                                                             |    2 
 HDL-ON_iOS/Info.plist                                                                            |   10 
 HDL_ON/Common/HDLCommon.cs                                                                       |    2 
 HDL_ON/UI/UI2/3-Intelligence/Automation/LogicMethod.cs                                           |   10 
 HDL_ON/Entity/Room.cs                                                                            |    3 
 HDL_ON/UI/UI2/4-PersonalCenter/PersonalDataPage.cs                                               |    3 
 HDL_ON/UI/UI1-Login/LoginPage.cs                                                                 |    5 
 HDL_ON/UI/UI2/FuntionControlView/VideoDoorLock/CommonMethod.cs                                   |   81 ++-
 HDL_ON/UI/UI2/4-PersonalCenter/PersonalDataPageBLL.cs                                            |   17 
 HDL_ON/UI/UI2/3-Intelligence/IntelligencePage.cs                                                 |   62 +-
 DLL/IOS/Shared.IOS.HDLFVSDK.dll                                                                  |    0 
 DLL/LC/IOS/Shared.IOS.LCVideoOnSDK.dll                                                           |    0 
 HDL-ON_iOS/Resources/EZ/Base.lproj/AddDevice.storyboard                                          |    9 
 HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/SenesorEnvironment/AddSensorEnvironmentPage.cs          |    4 
 HDL_ON/Entity/Function/Function.cs                                                               |   17 
 HDL_ON/DAL/ThirdPartySdk/ESOnVideo.cs                                                            |   25 
 HDL-ON_iOS/BlueWifi.cs                                                                           |    3 
 HDL_ON/DAL/ThirdPartySdk/HDLLinphone.cs                                                          |  189 ++++----
 HDL_ON/UI/UI0-Public/PublicAssmeblyBLL.cs                                                        |   18 
 HDL_ON/UI/UI2/3-Intelligence/Automation/InpOrOutLogicMethod.cs                                   |    4 
 HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/AddDevciePage.cs                                      |  258 +++++++++++
 HDL_ON/UI/UI2/FuntionControlView/Light/LightScene/AddLightScene.cs                               |    2 
 HDL-ON_iOS/Resources/Language.ini                                                                |    2 
 HDL-ON_iOS/Resources/en.lproj/Localizable.strings                                                |   43 ++
 HDL-ON_iOS/Resources/com.hri.hpc.mobile.ios.player.metallib                                      |    0 
 DLL/IOS/Shared.IOS.HDLCNVRSDK.dll                                                                |    0 
 DLL/LC/Android/LCDeviceAddModule.dll                                                             |    0 
 HDL_ON/DAL/DriverLayer/Control.cs                                                                |    2 
 SiriIntentsUI/SiriIntentsUI.csproj                                                               |    1 
 HDL_ON/Entity/ResponseEntity/ResidenceMemberInfo.cs                                              |   22 +
 HDL-ON_iOS/Resources/EZ/Base.lproj/EZVideoTalkViewcontroller.xib                                 |   20 
 HDL_ON/Entity/FunctionList.cs                                                                    |   11 
 /dev/null                                                                                        |    0 
 HDL-ON_iOS/Resources/zh-Hans.lproj/Localizable.strings                                           |   44 ++
 HDL_ON/DAL/Server/NewAPI.cs                                                                      |    5 
 HDL-ON_iOS/Resources/EZ/Base.lproj/EZMain.storyboard                                             |   22 
 HDL_ON/Common/R.cs                                                                               |    6 
 HDL_ON/DAL/Server/HttpServerRequest.cs                                                           |   23 
 HDL_ON/UI/UI2/3-Intelligence/Automation/TimeTpye.cs                                              |   11 
 HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/PirSend.cs                                              |    4 
 49 files changed, 801 insertions(+), 405 deletions(-)

diff --git a/DLL/IOS/Shared.IOS.HDLCNVRSDK.dll b/DLL/IOS/Shared.IOS.HDLCNVRSDK.dll
new file mode 100644
index 0000000..f34d504
--- /dev/null
+++ b/DLL/IOS/Shared.IOS.HDLCNVRSDK.dll
Binary files differ
diff --git a/DLL/IOS/Shared.IOS.HDLFVSDK.dll b/DLL/IOS/Shared.IOS.HDLFVSDK.dll
index 885c7d7..1f38208 100644
--- a/DLL/IOS/Shared.IOS.HDLFVSDK.dll
+++ b/DLL/IOS/Shared.IOS.HDLFVSDK.dll
Binary files differ
diff --git a/DLL/LC/Android/LCDeviceAddModule.dll b/DLL/LC/Android/LCDeviceAddModule.dll
index ca613e3..741b727 100644
--- a/DLL/LC/Android/LCDeviceAddModule.dll
+++ b/DLL/LC/Android/LCDeviceAddModule.dll
Binary files differ
diff --git a/DLL/LC/IOS/Shared.IOS.LCVideoOnSDK.dll b/DLL/LC/IOS/Shared.IOS.LCVideoOnSDK.dll
index 8faec09..db8e6ba 100644
--- a/DLL/LC/IOS/Shared.IOS.LCVideoOnSDK.dll
+++ b/DLL/LC/IOS/Shared.IOS.LCVideoOnSDK.dll
Binary files differ
diff --git a/HDL-ON_Android/Assets/Language.ini b/HDL-ON_Android/Assets/Language.ini
index aa05b47..710afb0 100644
--- a/HDL-ON_Android/Assets/Language.ini
+++ b/HDL-ON_Android/Assets/Language.ini
@@ -1132,6 +1132,9 @@
 8508=History
 8509=Fluorite video door lock
 8510=Call from the doorbell
+8511=User Education 
+  
+
 
 
 
@@ -2370,6 +2373,7 @@
 8508=鍘嗗彶璁板綍
 8509=钀ょ煶瑙嗛闂ㄩ攣
 8510=鏉ヨ嚜鈥滈棬閾冣�濆懠鍙�
+8511=鐢ㄦ埛浜哄憳
 
 
 
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/DoorLock/History.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/DoorLock/History.png
deleted file mode 100644
index 7609540..0000000
--- a/HDL-ON_Android/Assets/Phone/FunctionIcon/DoorLock/History.png
+++ /dev/null
Binary files differ
diff --git a/HDL-ON_Android/HDL-ON_Android.csproj b/HDL-ON_Android/HDL-ON_Android.csproj
index 8db0e94..3c1c875 100644
--- a/HDL-ON_Android/HDL-ON_Android.csproj
+++ b/HDL-ON_Android/HDL-ON_Android.csproj
@@ -65,7 +65,7 @@
     <AndroidSigningStorePass>85521566</AndroidSigningStorePass>
     <AndroidSigningKeyPass>85521566</AndroidSigningKeyPass>
     <AndroidSigningKeyAlias>on_plus</AndroidSigningKeyAlias>
-    <AndroidSupportedAbis>armeabi-v7a;arm64-v8a</AndroidSupportedAbis>
+    <AndroidSupportedAbis>arm64-v8a</AndroidSupportedAbis>
   </PropertyGroup>
   <ItemGroup>
     <Reference Include="Shared.Droid.JPush">
diff --git a/HDL-ON_Android/Properties/AndroidManifest.xml b/HDL-ON_Android/Properties/AndroidManifest.xml
index c9741a4..362f1aa 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:versionName="1.6.4" package="com.hdl.onpro" xmlns:tools="http://schemas.android.com/tools" android:versionCode="202302102">
+<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionName="1.6.4" package="com.hdl.onpro" xmlns:tools="http://schemas.android.com/tools" android:versionCode="202302201">
 	<uses-sdk android:minSdkVersion="26" android:targetSdkVersion="29" />
 	<!--鍙嬬洘-->
 	<!--<uses-sdk android:minSdkVersion="8"></uses-sdk>-->
diff --git a/HDL-ON_iOS/BlueWifi.cs b/HDL-ON_iOS/BlueWifi.cs
index aad7a0c..e0217f9 100644
--- a/HDL-ON_iOS/BlueWifi.cs
+++ b/HDL-ON_iOS/BlueWifi.cs
@@ -30,13 +30,14 @@
         //public string GetPer()
         //{
         //share.
-        //}
+        //}1
 
 
         /// <summary>
         /// 鎼滅储鍒拌摑鐗欒澶囦箣鍚庡埌浠g悊浜嬩欢
         /// </summary>
         FBYBleDeviceBackBlock getBlufiDeviceDelegate;
+
         /// <summary>
         /// 璁惧鎼滅储鍒拌摑鐗欒澶囦箣鍚庡埌浠g悊浜嬩欢
         /// </summary>
diff --git a/HDL-ON_iOS/HDL-ON_iOS.csproj b/HDL-ON_iOS/HDL-ON_iOS.csproj
index 5390c52..ef8ad4d 100644
--- a/HDL-ON_iOS/HDL-ON_iOS.csproj
+++ b/HDL-ON_iOS/HDL-ON_iOS.csproj
@@ -26,7 +26,7 @@
         <MtouchLink>Full</MtouchLink>
         <MtouchDebug>true</MtouchDebug>
         <CodesignKey>iPhone Developer</CodesignKey>
-        <MtouchExtraArgs>-gcc_flags="-dead_strip -ObjC";-w</MtouchExtraArgs>
+        <MtouchExtraArgs>-gcc_flags="-dead_strip -ObjC"</MtouchExtraArgs>
         <CodesignProvision>On+Dev-20210616-1</CodesignProvision>
         <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
     </PropertyGroup>
@@ -59,6 +59,7 @@
         <MtouchEnableSGenConc>false</MtouchEnableSGenConc>
 <CodesignEntitlements>Entitlements.plist</CodesignEntitlements>
 <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
+<CodesignProvision>OnPro230308-3-Dev</CodesignProvision>
     </PropertyGroup>
     <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|iPhone' ">
         <DebugType>none</DebugType>
@@ -86,26 +87,11 @@
           <HintPath>..\DLL\Shared.IOS.TBL.dll</HintPath>
           <Private>False</Private>
         </Reference>
-        <Reference Include="MJRefresh_Xamarin">
-          <HintPath>..\DLL\IOS\MJRefresh_Xamarin.dll</HintPath>
-        </Reference>
         <Reference Include="Shared.IOS.JLCountryCode">
           <HintPath>..\DLL\IOS\Shared.IOS.JLCountryCode.dll</HintPath>
         </Reference>
-        <Reference Include="EZSDK.IOS">
-          <HintPath>..\DLL\IOS\EZSDK.IOS.dll</HintPath>
-        </Reference>
-        <Reference Include="Shared.IOS.ESVideoOnSDK">
-          <HintPath>..\DLL\FL\iOS\Shared.IOS.ESVideoOnSDK.dll</HintPath>
-        </Reference>
-        <Reference Include="Shared.IOS.LCVideoOnSDK">
-          <HintPath>..\DLL\LC\IOS\Shared.IOS.LCVideoOnSDK.dll</HintPath>
-        </Reference>
-        <Reference Include="Shared.IOS.HDLLinphoneSDK">
-          <HintPath>..\DLL\Linphone\iOS\Shared.IOS.HDLLinphoneSDK.dll</HintPath>
-        </Reference>
-        <Reference Include="Shared.IOS.HDLFVSDK">
-          <HintPath>..\DLL\IOS\Shared.IOS.HDLFVSDK.dll</HintPath>
+        <Reference Include="Shared.IOS.HDLSceneSiri">
+          <HintPath>..\DLL\IOS\Shared.IOS.HDLSceneSiri.dll</HintPath>
         </Reference>
         <Reference Include="HDL.Shared.IOS.ScanQRCode">
           <HintPath>..\DLL\IOS\HDL.Shared.IOS.ScanQRCode.dll</HintPath>
@@ -113,8 +99,23 @@
         <Reference Include="Shared.IOS">
           <HintPath>..\DLL\Shared.IOS.dll</HintPath>
         </Reference>
-        <Reference Include="Shared.IOS.HDLSceneSiri">
-          <HintPath>..\DLL\IOS\Shared.IOS.HDLSceneSiri.dll</HintPath>
+        <Reference Include="Shared.IOS.HDLLinphoneSDK">
+          <HintPath>..\DLL\Linphone\iOS\Shared.IOS.HDLLinphoneSDK.dll</HintPath>
+        </Reference>
+        <Reference Include="Shared.IOS.LCVideoOnSDK">
+          <HintPath>..\DLL\LC\IOS\Shared.IOS.LCVideoOnSDK.dll</HintPath>
+        </Reference>
+        <Reference Include="Shared.IOS.HDLCNVRSDK">
+          <HintPath>..\DLL\IOS\Shared.IOS.HDLCNVRSDK.dll</HintPath>
+        </Reference>
+        <Reference Include="Shared.IOS.ESVideoOnSDK">
+          <HintPath>..\DLL\FL\iOS\Shared.IOS.ESVideoOnSDK.dll</HintPath>
+        </Reference>
+        <Reference Include="Shared.IOS.HDLFVSDK">
+          <HintPath>..\DLL\IOS\Shared.IOS.HDLFVSDK.dll</HintPath>
+        </Reference>
+        <Reference Include="EZSDK.IOS">
+          <HintPath>..\DLL\IOS\EZSDK.IOS.dll</HintPath>
         </Reference>
     </ItemGroup>
     <ItemGroup>
@@ -141,6 +142,12 @@
       </PackageReference>
       <PackageReference Include="Xamarin.Essentials">
         <Version>1.7.0</Version>
+      </PackageReference>
+      <PackageReference Include="Xamarin.iOS.SwiftRuntimeSupport">
+        <Version>0.2.1</Version>
+      </PackageReference>
+      <PackageReference Include="Xamarin.iOS.MJRefresh">
+        <Version>3.2.2</Version>
       </PackageReference>
     </ItemGroup>
     <ItemGroup>
@@ -1562,17 +1569,6 @@
       <BundleResource Include="Resources\h5\static\img\equal-plant-ic.7ef6befa.png" />
       <BundleResource Include="Resources\h5\static\img\coal-save-ic.6c5fd125.png" />
       <BundleResource Include="Resources\h5\static\font\SourceHanSansCN-Normal.otf" />
-      <BundleResource Include="Resources\Phone\MusicIcon\currentPlayList.png" />
-      <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\HistoryList.png" />
-      <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\OneOpenLock.png" />
-      <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\RTV.png" />
-      <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\UnLocked.png" />
-      <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\UnLocking.png" />
-      <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\VideoDoorLockClose.png" />
-      <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\VideoDoorLockOpen.png" />
-      <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\Cell.png" />
-      <BundleResource Include="Resources\Phone\FunctionIcon\FunctionBg\VideoDoorLockFunctionBg.png" />
-      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\securitydoorezviz.png" />
     </ItemGroup>
     <ItemGroup>
       <ITunesArtwork Include="iTunesArtwork" />
@@ -1599,10 +1595,6 @@
       <ImageAsset Include="Assets.xcassets\AppIcon.appiconset\1024.png" />
     </ItemGroup>
     <ItemGroup>
-      <ProjectReference Include="..\HdlBluWi\Blufi.csproj">
-        <Project>{2DDF4C3C-6998-432E-9F43-6786D82F0630}</Project>
-        <Name>Blufi</Name>
-      </ProjectReference>
       <ProjectReference Include="..\SiriIntents\SiriIntents.csproj">
         <IsAppExtension>true</IsAppExtension>
         <Project>{760980F5-1CD3-4F4F-9134-34D87BECD790}</Project>
@@ -1617,6 +1609,10 @@
         <Project>{8B1652FA-5158-4D57-B90D-07BB91766625}</Project>
         <Name>SiriKit</Name>
       </ProjectReference>
+      <ProjectReference Include="..\HdlBluWi\Blufi.csproj">
+        <Project>{2DDF4C3C-6998-432E-9F43-6786D82F0630}</Project>
+        <Name>Blufi</Name>
+      </ProjectReference>
     </ItemGroup>
     <ItemGroup>
       <Content Include="Base.lproj\Intents.intentdefinition" />
diff --git a/HDL-ON_iOS/Info.plist b/HDL-ON_iOS/Info.plist
index cf97fe8..b8b4489 100644
--- a/HDL-ON_iOS/Info.plist
+++ b/HDL-ON_iOS/Info.plist
@@ -42,7 +42,7 @@
 	<key>LSRequiresIPhoneOS</key>
 	<true/>
 	<key>MinimumOSVersion</key>
-	<string>12.0</string>
+	<string>12.2</string>
 	<key>UIDeviceFamily</key>
 	<array>
 		<integer>1</integer>
@@ -66,6 +66,8 @@
 	<key>UISupportedInterfaceOrientations</key>
 	<array>
 		<string>UIInterfaceOrientationPortrait</string>
+		<string>UIInterfaceOrientationLandscapeRight</string>
+		<string>UIInterfaceOrientationLandscapeLeft</string>
 	</array>
 	<key>UIAppFonts</key>
 	<array>
@@ -98,9 +100,9 @@
 	<key>UIStatusBarStyle</key>
 	<string>UIStatusBarStyleLightContent</string>
 	<key>CFBundleShortVersionString</key>
-	<string>1.6.302302021</string>
+	<string>1.6.402302222</string>
 	<key>CFBundleVersion</key>
-	<string>1.6.302021</string>
+	<string>1.6.402171</string>
 	<key>NSLocationWhenInUseUsageDescription</key>
 	<string>Use geographic location to provide services such as weather</string>
 	<key>NSAppleMusicUsageDescription</key>
@@ -138,5 +140,7 @@
 	<array>
 		<string>HDLRunSceneIntent</string>
 	</array>
+	<key>Custom Property</key>
+	<string></string>
 </dict>
 </plist>
diff --git a/HDL-ON_iOS/Resources/EZ/Base.lproj/AddDevice.storyboard b/HDL-ON_iOS/Resources/EZ/Base.lproj/AddDevice.storyboard
index f5af9fc..d802080 100644
--- a/HDL-ON_iOS/Resources/EZ/Base.lproj/AddDevice.storyboard
+++ b/HDL-ON_iOS/Resources/EZ/Base.lproj/AddDevice.storyboard
@@ -1,8 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="19162" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" colorMatched="YES" initialViewController="1Qq-y9-5Vr">
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="20037" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" colorMatched="YES" initialViewController="1Qq-y9-5Vr">
     <device id="retina4_7" orientation="portrait" appearance="light"/>
     <dependencies>
-        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="19144"/>
+        <deployment identifier="iOS"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="20020"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
     <scenes>
@@ -984,8 +985,8 @@
     </scenes>
     <inferredMetricsTieBreakers>
         <segue reference="9TP-S2-hhI"/>
-        <segue reference="9Lc-Kx-oZS"/>
-        <segue reference="ikM-Zn-H8f"/>
+        <segue reference="Lmt-j9-vhw"/>
+        <segue reference="VYk-37-nb6"/>
     </inferredMetricsTieBreakers>
     <resources>
         <image name="addDevice_success" width="320" height="185"/>
diff --git a/HDL-ON_iOS/Resources/EZ/Base.lproj/EZMain.storyboard b/HDL-ON_iOS/Resources/EZ/Base.lproj/EZMain.storyboard
index 0db5c3a..63dec62 100644
--- a/HDL-ON_iOS/Resources/EZ/Base.lproj/EZMain.storyboard
+++ b/HDL-ON_iOS/Resources/EZ/Base.lproj/EZMain.storyboard
@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="17506" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" colorMatched="YES" initialViewController="tPl-Go-Tmu">
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="20037" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" colorMatched="YES" initialViewController="tPl-Go-Tmu">
     <device id="retina4_7" orientation="portrait" appearance="light"/>
     <dependencies>
         <deployment version="4352" identifier="iOS"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="17505"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="20020"/>
         <capability name="System colors in document resources" minToolsVersion="11.0"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
@@ -35,7 +35,7 @@
                         <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
                         <prototypes>
                             <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" id="R2t-zM-WMl">
-                                <rect key="frame" x="0.0" y="28" width="375" height="44"/>
+                                <rect key="frame" x="0.0" y="44.5" width="375" height="44"/>
                                 <autoresizingMask key="autoresizingMask"/>
                                 <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="R2t-zM-WMl" id="a02-NK-SeS">
                                     <rect key="frame" x="0.0" y="0.0" width="375" height="44"/>
@@ -222,7 +222,7 @@
                         <color key="backgroundColor" red="0.94117647059999998" green="0.94117647059999998" blue="0.94509803920000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                         <prototypes>
                             <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" reuseIdentifier="EZDeviceCell" rowHeight="73" id="Xkg-Dw-w2X" customClass="DeviceListCell">
-                                <rect key="frame" x="0.0" y="28" width="375" height="73"/>
+                                <rect key="frame" x="0.0" y="44.5" width="375" height="73"/>
                                 <autoresizingMask key="autoresizingMask"/>
                                 <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="Xkg-Dw-w2X" id="Iet-JC-0rQ">
                                     <rect key="frame" x="0.0" y="0.0" width="375" height="73"/>
@@ -356,7 +356,7 @@
                     </tableView>
                     <navigationItem key="navigationItem" id="QiI-QE-qqY">
                         <rightBarButtonItems>
-                            <barButtonItem systemItem="add" id="yGh-cj-oPZ">
+                            <barButtonItem id="yGh-cj-oPZ">
                                 <connections>
                                     <action selector="go2AddDevice:" destination="PUV-T9-WXJ" id="D58-zZ-Ox4"/>
                                 </connections>
@@ -392,7 +392,7 @@
                         <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                         <prototypes>
                             <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" reuseIdentifier="EZCameraCell" id="7Im-ni-l3z">
-                                <rect key="frame" x="0.0" y="28" width="375" height="44"/>
+                                <rect key="frame" x="0.0" y="44.5" width="375" height="44"/>
                                 <autoresizingMask key="autoresizingMask"/>
                                 <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="7Im-ni-l3z" id="DdN-J1-0fa">
                                     <rect key="frame" x="0.0" y="0.0" width="375" height="44"/>
@@ -512,7 +512,7 @@
                         <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                         <prototypes>
                             <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" reuseIdentifier="DemoAPICell" id="wpS-t4-02o">
-                                <rect key="frame" x="0.0" y="28" width="375" height="44"/>
+                                <rect key="frame" x="0.0" y="44.5" width="375" height="44"/>
                                 <autoresizingMask key="autoresizingMask"/>
                                 <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="wpS-t4-02o" id="8mM-ux-z21">
                                     <rect key="frame" x="0.0" y="0.0" width="375" height="44"/>
@@ -551,7 +551,7 @@
                         <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
                         <prototypes>
                             <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" id="UVM-wN-ME4">
-                                <rect key="frame" x="0.0" y="28" width="375" height="44"/>
+                                <rect key="frame" x="0.0" y="44.5" width="375" height="44"/>
                                 <autoresizingMask key="autoresizingMask"/>
                                 <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="UVM-wN-ME4" id="PFk-ak-8nJ">
                                     <rect key="frame" x="0.0" y="0.0" width="375" height="44"/>
@@ -648,7 +648,7 @@
                         <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
                         <prototypes>
                             <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" id="VhH-MZ-U0P">
-                                <rect key="frame" x="0.0" y="28" width="375" height="44"/>
+                                <rect key="frame" x="0.0" y="44.5" width="375" height="44"/>
                                 <autoresizingMask key="autoresizingMask"/>
                                 <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="VhH-MZ-U0P" id="Kep-2I-4hb">
                                     <rect key="frame" x="0.0" y="0.0" width="375" height="44"/>
@@ -1809,7 +1809,7 @@
                         <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                         <prototypes>
                             <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" reuseIdentifier="MessageCell" rowHeight="75" id="St6-kz-bZE" customClass="MessageListCell">
-                                <rect key="frame" x="0.0" y="28" width="375" height="75"/>
+                                <rect key="frame" x="0.0" y="44.5" width="375" height="75"/>
                                 <autoresizingMask key="autoresizingMask"/>
                                 <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="St6-kz-bZE" id="gqt-AI-8vk">
                                     <rect key="frame" x="0.0" y="0.0" width="375" height="75"/>
@@ -1927,7 +1927,7 @@
                         <color key="backgroundColor" red="0.93725490199999995" green="0.93725490199999995" blue="0.95686274510000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                         <prototypes>
                             <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" reuseIdentifier="EZSettingCell" id="Mk7-Ag-WW0">
-                                <rect key="frame" x="0.0" y="55.5" width="375" height="44"/>
+                                <rect key="frame" x="0.0" y="49.5" width="375" height="44"/>
                                 <autoresizingMask key="autoresizingMask"/>
                                 <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="Mk7-Ag-WW0" id="Pt3-DC-cCE">
                                     <rect key="frame" x="0.0" y="0.0" width="375" height="44"/>
diff --git a/HDL-ON_iOS/Resources/EZ/Base.lproj/EZVideoTalkViewcontroller.xib b/HDL-ON_iOS/Resources/EZ/Base.lproj/EZVideoTalkViewcontroller.xib
index 3d57751..904768e 100644
--- a/HDL-ON_iOS/Resources/EZ/Base.lproj/EZVideoTalkViewcontroller.xib
+++ b/HDL-ON_iOS/Resources/EZ/Base.lproj/EZVideoTalkViewcontroller.xib
@@ -1,10 +1,11 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="15705" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="20037" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
     <device id="retina5_9" orientation="portrait" appearance="light"/>
     <dependencies>
         <deployment version="2304" identifier="iOS"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="15706"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="20020"/>
         <capability name="Safe area layout guides" minToolsVersion="9.0"/>
+        <capability name="System colors in document resources" minToolsVersion="11.0"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
     <objects>
@@ -26,7 +27,7 @@
                         <rect key="frame" x="195" y="64" width="160" height="160"/>
                         <color key="backgroundColor" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
                     </view>
-                    <button opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="249" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="9ko-k4-F0N">
+                    <button opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="249" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="9ko-k4-F0N">
                         <rect key="frame" x="20" y="302" width="85" height="30"/>
                         <color key="backgroundColor" red="0.80782043147208116" green="0.80782043147208116" blue="0.80782043147208116" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                         <state key="normal" title="鍒涘缓鎴块棿">
@@ -42,7 +43,7 @@
                             <action selector="createRoomAction:" destination="333-bP-4tK" eventType="touchUpInside" id="rAq-LO-B2O"/>
                         </connections>
                     </button>
-                    <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="qiF-2z-Rwj">
+                    <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="qiF-2z-Rwj">
                         <rect key="frame" x="145" y="302" width="85" height="30"/>
                         <color key="backgroundColor" red="0.80782043150000005" green="0.80782043150000005" blue="0.80782043150000005" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                         <state key="normal" title="鍔犲叆鎴块棿">
@@ -73,7 +74,7 @@
                         <fontDescription key="fontDescription" type="system" pointSize="14"/>
                         <textInputTraits key="textInputTraits"/>
                     </textField>
-                    <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="YO9-MU-r4L">
+                    <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="YO9-MU-r4L">
                         <rect key="frame" x="270" y="302" width="85" height="30"/>
                         <color key="backgroundColor" red="0.80782043150000005" green="0.80782043150000005" blue="0.80782043150000005" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                         <state key="normal" title="绂诲紑鎴块棿">
@@ -90,7 +91,8 @@
                         </connections>
                     </button>
                 </subviews>
-                <color key="backgroundColor" systemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/>
+                <viewLayoutGuide key="safeArea" id="gRk-Lv-awz"/>
+                <color key="backgroundColor" systemColor="systemBackgroundColor"/>
                 <constraints>
                     <constraint firstItem="YO9-MU-r4L" firstAttribute="height" secondItem="9ko-k4-F0N" secondAttribute="height" id="3hn-CA-7hn"/>
                     <constraint firstItem="3UU-E8-PbA" firstAttribute="leading" secondItem="gRk-Lv-awz" secondAttribute="leading" constant="20" id="4Rd-ZV-SEq"/>
@@ -116,7 +118,6 @@
                     <constraint firstItem="6Wf-7i-TE6" firstAttribute="centerY" secondItem="jc8-E1-NYw" secondAttribute="centerY" id="r2S-JH-0Bo"/>
                     <constraint firstItem="qiF-2z-Rwj" firstAttribute="leading" secondItem="9ko-k4-F0N" secondAttribute="trailing" constant="40" id="rkn-HZ-QQp"/>
                 </constraints>
-                <viewLayoutGuide key="safeArea" id="gRk-Lv-awz"/>
             </view>
             <connections>
                 <outlet property="localView" destination="3UU-E8-PbA" id="JEa-Cq-Kuk"/>
@@ -126,4 +127,9 @@
             <point key="canvasLocation" x="-143.19999999999999" y="131.52709359605913"/>
         </viewController>
     </objects>
+    <resources>
+        <systemColor name="systemBackgroundColor">
+            <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+        </systemColor>
+    </resources>
 </document>
diff --git a/HDL-ON_iOS/Resources/Language.ini b/HDL-ON_iOS/Resources/Language.ini
index af93f1d..49881a2 100644
--- a/HDL-ON_iOS/Resources/Language.ini
+++ b/HDL-ON_iOS/Resources/Language.ini
@@ -1132,6 +1132,7 @@
 8508=History
 8509=Fluorite video door lock
 8510=Call from the doorbell
+8511=User Education 
 
 
 
@@ -2370,6 +2371,7 @@
 8508=鍘嗗彶璁板綍
 8509=钀ょ煶瑙嗛闂ㄩ攣
 8510=鏉ヨ嚜鈥滈棬閾冣�濆懠鍙�
+8511=鐢ㄦ埛浜哄憳
 
 
 
diff --git a/HDL-ON_iOS/Resources/com.hri.hpc.mobile.ios.player.metallib b/HDL-ON_iOS/Resources/com.hri.hpc.mobile.ios.player.metallib
index 53bacd9..927d741 100644
--- a/HDL-ON_iOS/Resources/com.hri.hpc.mobile.ios.player.metallib
+++ b/HDL-ON_iOS/Resources/com.hri.hpc.mobile.ios.player.metallib
Binary files differ
diff --git a/HDL-ON_iOS/Resources/en.lproj/Localizable.strings b/HDL-ON_iOS/Resources/en.lproj/Localizable.strings
index 0e4e516..13d6889 100644
--- a/HDL-ON_iOS/Resources/en.lproj/Localizable.strings
+++ b/HDL-ON_iOS/Resources/en.lproj/Localizable.strings
@@ -28,6 +28,9 @@
 "get_info_fail"="Searching for failed. Poor network.";
 "ad_input_manual"="Manual Input";
 
+"ad_result_verify_local_lock"="Please verify the added primary user fingerprint, key or sensor card within 2 minutes. Click the Verified button after verification";
+"ad_verified"="Verified";
+
 "device_camera_list_title"="Device Channel List";
 "device_input_vierify_code"="Input the device verification code.";
 "device_verify_code_wrong"="Incorrect verification code.";
@@ -64,6 +67,46 @@
 "device_account_pw_empty"="The user name or password is required.";
 "device_lan_preview_title"="Live View via LAN";
 
+"device_open"="Open";
+"device_open_success"="Success to open the door!";
+"device_please_input_door_password"="Input the unlock password";
+"device_history"="History";
+"device_his_no_more_data"="No more data";
+"device_temp_pass"="Temporary password";
+"device_temp_year"=".";
+"device_temp_month"=".";
+"device_temp_date"=".";
+"device_temp_left"="Left";
+"device_temp_times"="times";
+"device_temp_save"="Save";
+"device_temp_valid_date"="Term of validity";
+"device_temp_valid_begin"="Begin";
+"device_temp_valid_end"="End";
+"device_temp_use_times"="Use times";
+"device_temp_user"="User";
+"device_temp_please_select"="Please select";
+"device_temp_unlimited_times"="Unlimited";
+"device_temp_sure"="Sure";
+"device_temp_cancle"="Cancle";
+"device_temp_please_input"="Please input";
+"device_temp_input_use_count_describe"="Enter an integer from 1 to 100. Null means unlimited times";
+"device_temp_input_pure_number"="Please enter a pure number";
+"device_temp_input_valid_number"="Please enter a number between 1-100";
+"device_temp_unit_year"="Y";
+"device_temp_unit_month"="M";
+"device_temp_unit_date"="D";
+"device_temp_unit_hour"="h";
+"device_temp_unit_minute"="m";
+"device_temp_please_input_user_name"="Please input a user name";
+"device_temp_please_select_begin_time"="Please select the start time";
+"device_temp_please_select_end_time"="Please select the end time";
+"device_temp_please_end_time_should_later"="The end time cannot be earlier than the start time";
+"device_temp_unlimited_use_times"="Unlimited times";
+"device_temp_total"="Total ";
+"device_temp_copied"="Copied";
+"device_temp_long_tap_copy"="Long press to copy";
+"device_temp_sure_to_delete"="Are you sure to delete the temporary password?";
+
 "dmessage_title"="Message";
 "message_read"="Mark as Read";
 "message_deleting"="Deleting. Please wait...";
diff --git a/HDL-ON_iOS/Resources/zh-Hans.lproj/Localizable.strings b/HDL-ON_iOS/Resources/zh-Hans.lproj/Localizable.strings
index 941dd22..bd2e958 100644
--- a/HDL-ON_iOS/Resources/zh-Hans.lproj/Localizable.strings
+++ b/HDL-ON_iOS/Resources/zh-Hans.lproj/Localizable.strings
@@ -28,6 +28,9 @@
 "get_info_fail"="鏌ヨ澶辫触锛岀綉缁滀笉缁欏姏";
 "ad_input_manual"="鎵嬪姩杈撳叆";
 
+"ad_result_verify_local_lock"="璇峰湪2鍒嗛挓涔嬪唴鏍¢獙宸叉坊鍔犵殑涓荤敤鎴锋寚绾广�佸瘑閽ユ垨鎰熷簲鍗★紝鏍¢獙瀹屾垚璇风偣鍑诲凡鏍¢獙鎸夐挳";
+"ad_verified"="宸叉牎楠�";
+
 "device_camera_list_title"="璁惧閫氶亾鍒楄〃";
 "device_input_vierify_code"="璇疯緭鍏ヨ澶囬獙璇佺爜";
 "device_verify_code_wrong"="楠岃瘉鐮侀敊璇�";
@@ -64,6 +67,47 @@
 "device_account_pw_empty"="甯愬彿鎴栧瘑鐮佷笉鑳戒负绌�";
 "device_lan_preview_title"="灞�鍩熺綉棰勮";
 
+"device_open"="寮�闂�";
+"device_open_success"="寮�闂ㄦ垚鍔燂紒";
+"device_please_input_door_password"="璇疯緭鍏ュ紑閿佸瘑鐮�";
+"device_history"="鍘嗗彶璁板綍";
+"device_his_no_more_data"="娌℃湁鏇村鏁版嵁";
+"device_temp_pass"="涓存椂瀵嗙爜";
+"device_temp_year"="骞�";
+"device_temp_month"="鏈�";
+"device_temp_date"="鏃�";
+"device_temp_left"="鍓╀綑";
+"device_temp_times"="娆�";
+"device_temp_save"="淇濆瓨";
+"device_temp_user"="浣跨敤浜�";
+"device_temp_valid_date"="鏈夋晥鏈�";
+"device_temp_valid_begin"="寮�濮�";
+"device_temp_valid_end"="缁撴潫";
+"device_temp_use_times"="浣跨敤娆℃暟";
+"device_temp_please_select"="璇烽�夋嫨";
+"device_temp_unlimited_times"="涓嶉檺";
+"device_temp_sure"="纭";
+"device_temp_cancle"="鍙栨秷";
+"device_temp_please_input"="璇疯緭鍏�";
+"device_temp_input_use_count_describe"="杈撳叆1鍒�100鐨勬暣鏁帮紝 涓虹┖琛ㄧず涓嶉檺娆℃暟";
+"device_temp_input_pure_number"="璇疯緭鍏ョ函鏁板瓧";
+"device_temp_input_valid_number"="璇疯緭鍏�1-100涔嬮棿鐨勬暟瀛�";
+"device_temp_unit_year"="骞�";
+"device_temp_unit_month"="鏈�";
+"device_temp_unit_date"="鏃�";
+"device_temp_unit_hour"="鏃�";
+"device_temp_unit_minute"="鍒�";
+"device_temp_please_input_user_name"="璇疯緭鍏ヤ娇鐢ㄤ汉";
+"device_temp_please_select_begin_time"="璇烽�夋嫨寮�濮嬫椂闂�";
+"device_temp_please_select_end_time"="璇烽�夋嫨缁撴潫鏃堕棿";
+"device_temp_please_end_time_should_later"="缁撴潫鏃堕棿涓嶅緱鏃╀簬寮�濮嬫椂闂�";
+"device_temp_unlimited_use_times"="涓嶉檺娆℃暟";
+"device_temp_total"="鎬绘暟";
+"device_temp_copied"="宸插鍒�";
+"device_temp_long_tap_copy"="闀挎寜澶嶅埗涓存椂瀵嗙爜";
+"device_temp_sure_to_delete"="纭鍒犻櫎涓存椂瀵嗙爜鍚楋紵";
+
+
 "dmessage_title"="娑堟伅";
 "message_read"="鏍囪宸茶";
 "message_deleting"="姝e湪鍒犻櫎锛岃绋嶅��...";
diff --git a/HDL_ON/Common/ApiUtlis.cs b/HDL_ON/Common/ApiUtlis.cs
index d2d8544..21dc2b4 100644
--- a/HDL_ON/Common/ApiUtlis.cs
+++ b/HDL_ON/Common/ApiUtlis.cs
@@ -314,9 +314,18 @@
                                 //======================鐧诲綍鍏ㄨ閫�====================
                                 if (isInterphoneType_FREEVIEW)
                                 {
+
 #if __IOS__
-                        //鐧诲綍鍏ㄨ閫�
-                        Shared.IOS.HDLFVSDK.Video.Init("", DB_ResidenceData.Instance.CurrentRegion.id);
+                                    var extUserResult = Ins.HttpRequest.GetExtUserId(DB_ResidenceData.Instance.CurrentRegion.id);
+                                    if (extUserResult.Code == StateCode.SUCCESS)
+                                    {
+                                        var data = JsonConvert.DeserializeObject<extUserInfo>(deviceResult.Data.ToString());
+
+                                        //鐧诲綍鍏ㄨ閫�
+                                        //Shared.IOS.HDLFVSDK.Video.Init("", data.extUserId, DB_ResidenceData.Instance.CurrentRegion.id, "78FF1E4D-FC0A-4E71-9B79-0448E4460BD7", "T0001", "120.77.53.170:9700", "120.77.53.170:21664");
+                                    }
+
+
 #endif
                                 }
 
diff --git a/HDL_ON/Common/HDLCommon.cs b/HDL_ON/Common/HDLCommon.cs
index d9fe79d..5b8bd28 100644
--- a/HDL_ON/Common/HDLCommon.cs
+++ b/HDL_ON/Common/HDLCommon.cs
@@ -7,7 +7,7 @@
 using HDL_ON.Entity;
 using System.Threading;
 using HDL_ON.DriverLayer;
-
+using Foundation;
 namespace HDL_ON
 {
     /// <summary>
diff --git a/HDL_ON/Common/R.cs b/HDL_ON/Common/R.cs
index ccb92d4..68e1690 100644
--- a/HDL_ON/Common/R.cs
+++ b/HDL_ON/Common/R.cs
@@ -3104,7 +3104,11 @@
         /// 鏉ヨ嚜鈥滈棬閾冣�濆懠鍙�
         /// </summary>
         public const int laizimenlinghujiao = 8510;
-      
+        /// <summary>
+        /// 鐢ㄦ埛浜哄憳
+        /// </summary>
+        public const int yonghurenyuan = 8511;
+
 
 
 
diff --git a/HDL_ON/DAL/DriverLayer/Control.cs b/HDL_ON/DAL/DriverLayer/Control.cs
index 5f1b11b..bd951d5 100644
--- a/HDL_ON/DAL/DriverLayer/Control.cs
+++ b/HDL_ON/DAL/DriverLayer/Control.cs
@@ -1404,7 +1404,7 @@
                                 EnvironmentalPage.LoadEvent_UpdataStatus(localFunction);
                                 //A_EnvironmentalDataCenter.LoadEvent_UpdataStatus(localFunction);
                                 break;
-                            case SPK.SensorEnvironment:
+                            case SPK.SensorEnvironment:case SPK.SensorEnvironmentHailin:
                             case SPK.SensorEnvironment2:
                             case SPK.SensorEnvironment3:
                                 if (localFunction.GetAttributes().Contains(FunctionAttributeKey.Temperature))
diff --git a/HDL_ON/DAL/Server/HttpServerRequest.cs b/HDL_ON/DAL/Server/HttpServerRequest.cs
index 4ba45b6..621846c 100644
--- a/HDL_ON/DAL/Server/HttpServerRequest.cs
+++ b/HDL_ON/DAL/Server/HttpServerRequest.cs
@@ -2078,7 +2078,7 @@
         /// <param name="productPlatform"></param>
         /// <param name="productBrand"></param>
         /// <returns></returns>
-        public ResponsePackNew IndependentRegister3TyDevcie(string spk, string extDevId, string deviceName, string pairCode = "")
+        public ResponsePackNew IndependentRegister3TyDevcie(string spk, string extDevId, string deviceName,string productBrandIdentity, string pairCode = "")
         {
             Dictionary<string, object> d = new Dictionary<string, object>();
             d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.id);
@@ -2086,6 +2086,7 @@
             d.Add("extDevId", extDevId);
             d.Add("name", deviceName);
             d.Add("code", pairCode);
+            d.Add("productBrandIdentity", productBrandIdentity);
 
 
             var requestJson = HttpUtil.GetSignRequestJson(d);
@@ -2867,9 +2868,25 @@
 
         }
 
-#endregion
+        /// <summary>
+        /// 鑾峰彇绗笁鏂规敞鍐岀殑id
+        /// </summary>
+        /// <param homeId="homeId">浣忓畢id</param>
+        /// <returns></returns>
+        public ResponsePackNew GetExtUserId(string homeId)
+        {
+            Dictionary<string, object> d = new Dictionary<string, object>();
+            d.Add("homeId", homeId);
 
-#region 鈻� 闂ㄩ攣鐩稿叧____________________________
+            var requestJson = HttpUtil.GetSignRequestJson(d);
+            var pack = HttpUtil.RequestHttpsPostFroHome(NewAPI.Api_Post_GetExtUserId, requestJson);
+
+            return pack;
+        }
+
+        #endregion
+
+        #region 鈻� 闂ㄩ攣鐩稿叧____________________________
 
         /// <summary>
         /// 鑾峰彇闂ㄩ攣鍘嗗彶璁板綍(鎸夋棩鏈熼檷搴�)
diff --git a/HDL_ON/DAL/Server/NewAPI.cs b/HDL_ON/DAL/Server/NewAPI.cs
index a3d1566..dbdee41 100644
--- a/HDL_ON/DAL/Server/NewAPI.cs
+++ b/HDL_ON/DAL/Server/NewAPI.cs
@@ -831,7 +831,10 @@
         /// </summary>
         public const string Api_Post_GetListHomeFace = "/home-wisdom/app/logic/listHomeFace";
 
-       
+        /// <summary>
+        /// 鑾风涓夋柟娉ㄥ唽userId
+        /// </summary>
+        public const string Api_Post_GetExtUserId = "/community-wisdom/app/visitor/freeview/getExtMemberInfo";
         #endregion
 
 
diff --git a/HDL_ON/DAL/ThirdPartySdk/ESOnVideo.cs b/HDL_ON/DAL/ThirdPartySdk/ESOnVideo.cs
index 700f956..ca12ddc 100644
--- a/HDL_ON/DAL/ThirdPartySdk/ESOnVideo.cs
+++ b/HDL_ON/DAL/ThirdPartySdk/ESOnVideo.cs
@@ -82,7 +82,7 @@
             if (interphoneType == InterphoneType.IMOUVISIAL.ToString())
             {
                 //涔愭鍙瀵硅
-                //1.鍒濆鍖朙COpenSDK_Api
+                //1.鍒濆鍖朙COpenSDK_Api(Shared.IOS.LCVideoOnSDK)
                 LCApiKit.SharedInstance().IsChinaMainland = GetIsChinaMainland();
                 LCApiKit.SharedInstance().InitSDKOpenApi(mESVideoInfo.Lc_AccessToken);
                 LCApiKit.SharedInstance().CurrentDevicePlayToken = mESVideoInfo.Lc_PlayToken;
@@ -98,21 +98,17 @@
             }
             else if(interphoneType == InterphoneType.FLVI.ToString())
             {
-
+                //Shared.IOS.ESVideoOnSDK
                 ESOnMonitorViewController vc = new ESOnMonitorViewController();
                 vc.MESVideoID = mESVideoInfo.ESVideoUUID;
                 vc.MESRoomID = roomID;
                 vc.DeviceName = mESVideoInfo.DeviceName;
-                //vc.RoomName = mESVideoInfo.RoomName;
-                //vc.MESCallDelegate = new OnESCallDelegate(this);
                 Shared.Application.currentVC.NavigationController.PushViewController(vc, true);
-            }else if (interphoneType == InterphoneType.HDL.ToString())
+            }
+            else if (interphoneType == InterphoneType.HDL.ToString())
             {
                 //HDLLinphone 鐙勮�愬厠
                 HDLLinphone.Current.ShowESVideoMonitor(mESVideoInfo, interphoneType);
-                ////鍏ㄨ閫�
-                //NSDictionary deviceInfo = new NSDictionary("deviceCode","3-1-11-2", "deviceName", mESVideoInfo.DeviceName);
-                //Shared.IOS.HDLFVSDK.Video.Monitor(deviceInfo);
             } else if (interphoneType == InterphoneType.FREEVIEW.ToString())
             {
                 //鍏ㄨ閫氱洃瑙�
@@ -191,7 +187,7 @@
             if (interphoneType == InterphoneType.IMOUVISIAL.ToString())
             {
                 //涔愭鍙瀵硅
-                //1.鍒濆鍖朙COpenSDK_Api
+                //1.鍒濆鍖朙COpenSDK_Api(Shared.IOS.LCVideoOnSDK)
                 LCApiKit.SharedInstance().IsChinaMainland = GetIsChinaMainland();
                 LCApiKit.SharedInstance().InitSDKOpenApi(mESVideoInfo.Lc_AccessToken);
                 //2021-05-18 鐩墠鎺ㄩ�佺殑PlayToken;鏈夐棶棰樹細瀵艰嚧SDK宕╂簝锛屾殏鏃朵笉浼�
@@ -229,7 +225,7 @@
             }
             else if (interphoneType == InterphoneType.FLVI.ToString())
             {
-
+                //Shared.IOS.ESVideoOnSDK
                 ESOnIntercomViewController vc = new ESOnIntercomViewController();
                 vc.MESVideoID = mESVideoInfo.ESVideoUUID;
                 vc.MESRoomID = roomID;
@@ -239,7 +235,8 @@
                 mOnESCallDelegate = new OnESCallDelegate(this);
                 vc.MESCallDelegate = mOnESCallDelegate;
                 Shared.Application.currentVC.NavigationController.PushViewController(vc, true);
-            }else{
+            }
+            else{
                 HDLUtils.WriteLine("鏈敮鎸佺殑鍙瀵硅绫诲瀷");
 
             }
@@ -571,7 +568,7 @@
 #if __IOS__
         #region OnESCallDelegate
         /////// <summary>
-        /////// OnESCallDelegate 缁ф壙鍝嶅簲浜嬩欢
+        /////// OnESCallDelegate 缁ф壙鍝嶅簲浜嬩欢(Shared.IOS.ESVideoOnSDK)
         /////// </summary>
         OnESCallDelegate mOnESCallDelegate;
 
@@ -647,7 +644,7 @@
 
         #region OnLCCallDelegate
         /////// <summary>
-        /////// OnLCCallDelegate 缁ф壙鍝嶅簲浜嬩欢
+        /////// OnLCCallDelegate 缁ф壙鍝嶅簲浜嬩欢(Shared.IOS.LCVideoOnSDK)
         /////// </summary>
         OnLCCallDelegate mOnLCCallDelegate;
 
@@ -715,7 +712,7 @@
 
         #endregion
 
-       
+
 #endif
 
         ///// <summary>
diff --git a/HDL_ON/DAL/ThirdPartySdk/HDLLinphone.cs b/HDL_ON/DAL/ThirdPartySdk/HDLLinphone.cs
index 8466190..f759daa 100644
--- a/HDL_ON/DAL/ThirdPartySdk/HDLLinphone.cs
+++ b/HDL_ON/DAL/ThirdPartySdk/HDLLinphone.cs
@@ -15,7 +15,7 @@
 #else
 using Foundation;
 using UIKit;
-//using Shared.IOS.HDLLinphoneSDK;
+using Shared.IOS.HDLLinphoneSDK;
 #endif
 
 namespace Shared
@@ -92,13 +92,13 @@
 
 #if __IOS__
 
-            //Shared.IOS.HDLLinphoneSDK.HDLLinPhoneSDK.Instance().InitalLinPhone();
-            ////璁剧疆鏀跺埌鏉ョ數鍚庛�佹槸鍚﹂渶鑷姩璺宠浆鍛煎彨椤甸潰鏂规
-            //Shared.IOS.HDLLinphoneSDK.HDLLinPhoneSDK.Instance().IsAutoJumpCallView = IsAutoJumpCallView;
-            ////璁剧疆Listener鐩戝惉
-            //mOnHDLLinphoneCallDelegate = new OnHDLLinphoneCallDelegate(this);
-            //Console.WriteLine(UserInfo.Current.ID);
-            //Shared.IOS.HDLLinphoneSDK.HDLLinPhoneSDK.Instance().HdlLinphoneCallDelegate = mOnHDLLinphoneCallDelegate;
+            Shared.IOS.HDLLinphoneSDK.HDLLinPhoneSDK.Instance().InitalLinPhone();
+            //璁剧疆鏀跺埌鏉ョ數鍚庛�佹槸鍚﹂渶鑷姩璺宠浆鍛煎彨椤甸潰鏂规
+            Shared.IOS.HDLLinphoneSDK.HDLLinPhoneSDK.Instance().IsAutoJumpCallView = IsAutoJumpCallView;
+            //璁剧疆Listener鐩戝惉(Shared.IOS.HDLLinphoneSDK)
+            mOnHDLLinphoneCallDelegate = new OnHDLLinphoneCallDelegate(this);
+            Console.WriteLine(UserInfo.Current.ID);
+            Shared.IOS.HDLLinphoneSDK.HDLLinPhoneSDK.Instance().HdlLinphoneCallDelegate = mOnHDLLinphoneCallDelegate;
 #else
             HDLLinphoneKit.Instance.InitLinphone(Application.Activity);
             //璁剧疆鏀跺埌鏉ョ數鍚庛�佹槸鍚﹂渶鑷姩璺宠浆鍛煎彨椤甸潰鏂规
@@ -125,9 +125,8 @@
 
 
 #if __IOS__
-            //Shared.IOS.HDLLinphoneSDK.HDLLinPhoneSDK.Instance().Login("1003", "123456", "192.168.31.194:5060");
-            //Shared.IOS.HDLLinphoneSDK.HDLLinPhoneSDK.Instance().Login("6666", "85521566", "116.62.26.215:5060");
-            //Shared.IOS.HDLLinphoneSDK.HDLLinPhoneSDK.Instance().Login(mHDLSipInfo.sipAccount, mHDLSipInfo.sipPasswd, mHDLSipInfo.realm);
+
+            Shared.IOS.HDLLinphoneSDK.HDLLinPhoneSDK.Instance().Login(mHDLSipInfo.sipAccount, mHDLSipInfo.sipPasswd, mHDLSipInfo.realm);
 #else
             if (mInterphoneType == InterphoneType.FREEVIEW.ToString())
             {
@@ -163,7 +162,7 @@
             this.mHDLCallVideoInfo = null;
 #if __IOS__
 
-            //HDLLinPhoneSDK.Instance().LogoutAllLinphoneUser();
+            Shared.IOS.HDLLinphoneSDK.HDLLinPhoneSDK.Instance().LogoutAllLinphoneUser();
 #else
             HDLLinphoneKit.Instance.Logout();
 #endif
@@ -176,7 +175,7 @@
         {
 #if __IOS__
 
-            //HDLLinPhoneSDK.Instance().ClearAllConfigs();
+            Shared.IOS.HDLLinphoneSDK.HDLLinPhoneSDK.Instance().ClearAllConfigs();
 #else
             HDLLinphoneKit.Instance.ClearProxyConfig();
 #endif
@@ -427,7 +426,7 @@
 
 #if __IOS__
 
-            //HDLLinPhoneSDK.Instance().CallWithUserName(mHDLCallVideoInfo.DeviceSipAccount, mHDLCallVideoInfo.DeviceName);
+            Shared.IOS.HDLLinphoneSDK.HDLLinPhoneSDK.Instance().CallWithUserName(mHDLCallVideoInfo.DeviceSipAccount, mHDLCallVideoInfo.DeviceName);
 
 #else
             //1.鍏堝懠鍙澶�
@@ -495,7 +494,7 @@
             {
 #if __IOS__
                 //鑷爺鍙瀵硅
-                //HDLLinPhoneSDK.Instance().GotoHDLSRLinphoneIntercomVC(mHDLCallVideoInfo.DeviceName,mHDLCallVideoInfo.DeviceSipAccount);
+                Shared.IOS.HDLLinphoneSDK.HDLLinPhoneSDK.Instance().GotoHDLSRLinphoneIntercomVC(mHDLCallVideoInfo.DeviceName, mHDLCallVideoInfo.DeviceSipAccount);
 #else
                 var intent = new Intent(Shared.Application.Activity, typeof(Com.Hdl.Hdllinphonesdk.Activity.HDLLinphoneReverseCallActivity));  
                 if (mHDLCallVideoInfo != null)
@@ -513,7 +512,7 @@
                 if (IsAutoJumpCallView) return;
                 //鍏堢粨鏉熸帀涔嬪墠鐨勭嚎绋�
                 EndCheckIncomingCallThread();
-                //妫�娴嬫槸鍚︽潵鐢典簡濡傛灉鏄洿鎺ヨ皟鏁村懠鍙〉闈㈠鏋滀笉鏄垯寮�鍚嚎绋嬬瓑寰呭垽鏂�
+                //妫�娴嬫槸鍚︽潵鐢典簡濡傛灉鏄洿鎺ヨ皟鏁村懠鍙〉闈㈠鏋滀笉鏄垯寮�鍚嚎绋嬬瓑寰呭垽鏂�(Shared.IOS.HDLLinphoneSDK)
                 if (IsIncomingReceivedCallState())
                 {
                     Utlis.WriteLine("CALL 宸茬粡鏉ョ數浜嗐�傘�傘�傛墦寮�鍛煎彨椤甸潰");
@@ -530,13 +529,13 @@
         }
 
         /// <summary>
-        /// 鏄惁鏉ョ數鐘舵��
+        /// 鏄惁鏉ョ數鐘舵��(Shared.IOS.HDLLinphoneSDK)
         /// </summary>
         /// <returns></returns>
-        bool IsIncomingReceivedCallState() {
+        bool IsIncomingReceivedCallState()
+        {
 #if __IOS__
-            //return HDLLinPhoneSDK.Instance().IsIncomingReceivedCallState;
-            return true;
+            return Shared.IOS.HDLLinphoneSDK.HDLLinPhoneSDK.Instance().IsIncomingReceivedCallState;
 #else
             return HDLLinphoneKit.Instance.IsIncomingReceivedCallState;
 #endif
@@ -549,7 +548,7 @@
 
 #if __IOS__
 
-            //HDLLinPhoneSDK.Instance().GotoHDLLinphoneIntercomVC(mHDLCallVideoInfo.DeviceName);
+            Shared.IOS.HDLLinphoneSDK.HDLLinPhoneSDK.Instance().GotoHDLLinphoneIntercomVC(mHDLCallVideoInfo.DeviceName);
 
 #else
             var intent = new Intent(Shared.Application.Activity, typeof(Com.Hdl.Hdllinphonesdk.Activity.HDLLinphoneIntercomActivity));
@@ -598,7 +597,7 @@
                                 threadTime--;
                                 Utlis.WriteLine("CALL 妫�娴嬩腑...." + threadTime);
                                 Thread.Sleep(1000);
-                                //鏉ョ數浜嗭紝璺宠浆鍛煎彨椤甸潰
+                                //鏉ョ數浜嗭紝璺宠浆鍛煎彨椤甸潰(Shared.IOS.HDLLinphoneSDK)
                                 if (IsIncomingReceivedCallState())
                                 {
                                     Utlis.WriteLine("CALL 鏉ョ數浜嗐�傘�傘�傛墦寮�鍛煎彨椤甸潰");
@@ -650,10 +649,10 @@
             return checkIncomingCallThread == null || checkIncomingCallThread.ThreadState != ThreadState.Running;
         }
 
-#endregion
+        #endregion
 
 
-#region 鈻�  --  Android鐩稿叧鎿嶄綔_______________________________
+        #region 鈻�  --  Android鐩稿叧鎿嶄綔_______________________________
 
 #if __Android__
 
@@ -748,93 +747,93 @@
         }
 
 #endif
-#endregion
+        #endregion
 
-#region 鈻�  --  iOS鐩稿叧鎿嶄綔_______________________________
+        #region 鈻�  --  iOS鐩稿叧鎿嶄綔_______________________________
 
 #if __IOS__
 
-#region OnHDLLinphoneCallDelegate
-        ///// <summary>
-        ///// 
-        ///// </summary>
-        //OnHDLLinphoneCallDelegate mOnHDLLinphoneCallDelegate;
-     
-        ///// <summary>
-        ///// 
-        ///// </summary>
-        //public class OnHDLLinphoneCallDelegate : HDLLinphoneCallDelegate
-        //{ 
-        //    [Weak] HDLLinphone hdlLinphone;
+        #region OnHDLLinphoneCallDelegate
+        /// <summary>
+        /// 
+        /// </summary>
+        OnHDLLinphoneCallDelegate mOnHDLLinphoneCallDelegate;
 
-        //    public OnHDLLinphoneCallDelegate(HDLLinphone mHDLLinphone)
-        //    {
-        //        this.hdlLinphone = mHDLLinphone;
-        //    }
+        /// <summary>
+        /// 
+        /// </summary>
+        public class OnHDLLinphoneCallDelegate : HDLLinphoneCallDelegate
+        {
+            [Weak] HDLLinphone hdlLinphone;
 
-        //    /// <summary>
-        //    /// 鎺ュ惉
-        //    /// </summary>
-        //    public override void OnAnswerAction()
-        //    {
-        //        hdlLinphone.HDLUpdateCallStatus(CallStatusType.RECEIVED, InterphoneType.HDL);
-        //    }
+            public OnHDLLinphoneCallDelegate(HDLLinphone mHDLLinphone)
+            {
+                this.hdlLinphone = mHDLLinphone;
+            }
 
-        //    /// <summary>
-        //    /// 鎸傛柇
-        //    /// </summary>
-        //    /// <param name="callDuration"></param>
-        //    public override void OnHangUpAction(int callDuration)
-        //    {
-        //        hdlLinphone.HDLUpdateCallStatus(CallStatusType.RECEIVED, InterphoneType.HDL, callDuration);
-        //    }
+            /// <summary>
+            /// 鎺ュ惉
+            /// </summary>
+            public override void OnAnswerAction()
+            {
+                hdlLinphone.HDLUpdateCallStatus(CallStatusType.RECEIVED, InterphoneType.HDL);
+            }
 
-        //    /// <summary>
-        //    /// 鎷掓帴
-        //    /// </summary>
-        //    public override void OnRejectCallAction()
-        //    {
-        //        hdlLinphone.HDLUpdateCallStatus(CallStatusType.REJECT, InterphoneType.HDL);
-        //    }
+            /// <summary>
+            /// 鎸傛柇
+            /// </summary>
+            /// <param name="callDuration"></param>
+            public override void OnHangUpAction(int callDuration)
+            {
+                hdlLinphone.HDLUpdateCallStatus(CallStatusType.RECEIVED, InterphoneType.HDL, callDuration);
+            }
 
-        //    /// <summary>
-        //    /// 鎴浘鎴愬姛
-        //    /// </summary>
-        //    /// <param name="image"></param>
-        //    //public override void OnScreenshotSuccessfulAction(UIImage image)
-        //    //{
-        //        ////NSData imageData = UIImagePNGRepresentation(image); UIImage
-        //        //NSData imageData = image.AsPNG();
-        //        //byte[] dataBytes = new byte[imageData.Length];
-        //        //System.Runtime.InteropServices.Marshal.Copy(imageData.Bytes, dataBytes, 0, Convert.ToInt32(imageData.Length));
-        //        ////image.g
-        //        ////hdlLinphone.ScreenshotSuccessfulAction(dataBytes);
-        //    //}
+            /// <summary>
+            /// 鎷掓帴
+            /// </summary>
+            public override void OnRejectCallAction()
+            {
+                hdlLinphone.HDLUpdateCallStatus(CallStatusType.REJECT, InterphoneType.HDL);
+            }
 
-        //    /// <summary>
-        //    /// 寮�閿佹垚鍔�
-        //    /// </summary>
-        //    public override void OnUnlockAction()
-        //    {
-        //        hdlLinphone.HDLUnlockAction();
-        //    }
+            /// <summary>
+            /// 鎴浘鎴愬姛
+            /// </summary>
+            /// <param name = "image" ></ param >
+            public  void OnScreenshotSuccessfulAction(UIImage image)
+            {
+                //NSData imageData = UIImagePNGRepresentation(image); UIImage
+                NSData imageData = image.AsPNG();
+                byte[] dataBytes = new byte[imageData.Length];
+                System.Runtime.InteropServices.Marshal.Copy(imageData.Bytes, dataBytes, 0, Convert.ToInt32(imageData.Length));
+                //image.g
+                //hdlLinphone.ScreenshotSuccessfulAction(dataBytes);
+            }
 
-        //    /// <summary>
-        //    /// 鏉ョ數涓�...
-        //    /// </summary>
-        //    public override void OnIncomingCall(string userName)
-        //    {
-        //        Utlis.WriteLine("OnIncomingCall :" + userName);
-        //    }
-            
+            /// <summary>
+            /// 寮�閿佹垚鍔�
+            /// </summary>
+            public override void OnUnlockAction()
+            {
+                hdlLinphone.HDLUnlockAction();
+            }
+
+            /// <summary>
+            /// 鏉ョ數涓�...
+            /// </summary>
+            public override void OnIncomingCall(string userName)
+            {
+                Utlis.WriteLine("OnIncomingCall :" + userName);
+            }
 
 
-        //}
 
-#endregion
+        }
+
+        #endregion
 #endif
 
-#endregion
+        #endregion
 
     }
 
diff --git a/HDL_ON/Entity/Function/Function.cs b/HDL_ON/Entity/Function/Function.cs
index cefcba4..4793b16 100644
--- a/HDL_ON/Entity/Function/Function.cs
+++ b/HDL_ON/Entity/Function/Function.cs
@@ -742,6 +742,18 @@
             var sFunc = new SceneFunction();
             foreach (var attr in attributes)
             {
+                //绐楀笜鍚屾椂鍙戦�佸紑鍏宠窡鐧惧垎姣斾細鏈夐棶棰橈紝
+                if(spk == SPK.CurtainRoller || spk == SPK.CurtainTrietex)
+                {
+                    if (attr.key == FunctionAttributeKey.OnOff)
+                    {
+                        if (attributes.Find((obj) => obj.key == FunctionAttributeKey.Percent) != null)
+                        {
+                            continue;
+                        }
+                    }
+                }
+
                 switch (attr.key)
                 {
                     case FunctionAttributeKey.OnOff:
@@ -1362,6 +1374,7 @@
         /// 闂ㄩ攣
         /// </summary>
         public const string DoorLock = "security.door";
+        
         /// <summary>
         /// 闂ㄩ攣spk鍒楄〃
         /// </summary>
@@ -1760,7 +1773,7 @@
             spkList.Add(SensorCO2);
             spkList.Add(SensorTVOC);
             spkList.Add(SensorHumidity);
-            spkList.Add(SensorEnvironment);
+            spkList.Add(SensorEnvironment); spkList.Add(SensorEnvironmentHailin);
             spkList.Add(SensorEnvironment2);
             spkList.Add(SensorEnvironment3);
             spkList.Add(SensorHcho);
@@ -1790,7 +1803,7 @@
         public static List<string> EvironmentSensorList()
         {
             var spkList = new List<string>();
-            spkList.Add(SensorEnvironment);
+            spkList.Add(SensorEnvironment); spkList.Add(SensorEnvironmentHailin);
             spkList.Add(SensorEnvironment2);
             spkList.Add(SensorEnvironment3);
             return spkList;
diff --git a/HDL_ON/Entity/FunctionList.cs b/HDL_ON/Entity/FunctionList.cs
index 12c46f4..a50ecf8 100644
--- a/HDL_ON/Entity/FunctionList.cs
+++ b/HDL_ON/Entity/FunctionList.cs
@@ -77,6 +77,17 @@
                 if (_IpCamImou.Count > 0)
                 {
 #if __IOS__
+                    //鍒濆鍖栧ぇ鍗庢憚鍍忓ごsdk
+                    Shared.IOS.HDLCNVRSDK.HDLLCNVRSDK.SharedInstance().InitSDKWithAppKey("HDL-HOME-APP-TEST", "WeJ8TY88vbakCcnvH8G1tDUqzLWY8yss", OnAppConfig.Instance.RequestHttpsHost);
+                    Shared.IOS.HDLCNVRSDK.HDLLCNVRSDK.SharedInstance().AccessToken = UserInfo.Current.LoginTokenString;
+                    Shared.IOS.HDLCNVRSDK.HDLLCNVRSDK.SharedInstance().RefreshToken = UserInfo.Current.RefreshToken;
+                    Shared.IOS.HDLCNVRSDK.HDLLCNVRSDK.SharedInstance().HomeId = DB_ResidenceData.Instance.CurrentRegion.id;
+                    Console.WriteLine("token锛�" + UserInfo.Current.LoginTokenString);
+                    Console.WriteLine("token锛�" + UserInfo.Current.RefreshToken);
+                    Shared.IOS.HDLCNVRSDK.HDLLCNVRSDK.SharedInstance().RefreshDeviceList();
+
+
+
 #else
                     Com.Utils.HdlToLcUtils.Instance.InitData(Shared.Application.Activity, "HDL-HOME-APP-TEST", "WeJ8TY88vbakCcnvH8G1tDUqzLWY8yss", OnAppConfig.Instance.RequestHttpsHost);
                     Com.Utils.HdlToLcUtils.Instance.HomeId = DB_ResidenceData.Instance.CurrentRegion.id;
diff --git a/HDL_ON/Entity/ResponseEntity/ResidenceMemberInfo.cs b/HDL_ON/Entity/ResponseEntity/ResidenceMemberInfo.cs
index 2c1680d..36ad814 100644
--- a/HDL_ON/Entity/ResponseEntity/ResidenceMemberInfo.cs
+++ b/HDL_ON/Entity/ResponseEntity/ResidenceMemberInfo.cs
@@ -174,4 +174,26 @@
 
 
     //}
+
+    /// <summary>
+    /// 绗笁鏂规敞鍐屼俊鎭�
+    /// </summary>
+    public class extUserInfo
+    {
+
+        public string extUserId = "";
+
+        public string extPlatform = "";
+
+        public string homeId = "";
+
+        public string extServerIp = "";
+
+        public string extTenantCode = "";
+
+        public string extUUID = "";
+
+        public string extra = "";
+
+    }
 }
diff --git a/HDL_ON/Entity/Room.cs b/HDL_ON/Entity/Room.cs
index 609e788..1fdebfd 100644
--- a/HDL_ON/Entity/Room.cs
+++ b/HDL_ON/Entity/Room.cs
@@ -568,5 +568,6 @@
             scenes.Remove(scenes.Find((obj) => obj.sid == scene.sid));
         }
     }
-  
+
+
 }
\ No newline at end of file
diff --git a/HDL_ON/HDL_ON.projitems b/HDL_ON/HDL_ON.projitems
index c1e834e..250013a 100644
--- a/HDL_ON/HDL_ON.projitems
+++ b/HDL_ON/HDL_ON.projitems
@@ -528,12 +528,12 @@
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Music\A31UsbMusicList.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Music\CommonMethod.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Music\A31FlieList.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\VideoDoorLock\VideoDoorLockListPage.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\VideoDoorLock\VideoDoorLockPage.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\VideoDoorLock\CommonMethod.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\VideoDoorLock\ObjectClass.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\VideoDoorLock\VideDoorLockSend.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\VideoDoorLock\StackTraceLog.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\VideoDoorLock\ObjectClass.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\VideoDoorLock\CommonMethod.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\VideoDoorLock\VideoDoorLockPage.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\VideoDoorLock\VideoDoorLockListPage.cs" />
   </ItemGroup>
   <ItemGroup>
     <Folder Include="$(MSBuildThisFileDirectory)Entity\Device\" />
@@ -561,6 +561,5 @@
     <Folder Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Light\LightScene\" />
     <Folder Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\FaceManagement\" />
     <Folder Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Acst\" />
-    <Folder Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\VideoDoorLock\" />
   </ItemGroup>
 </Project>
\ No newline at end of file
diff --git a/HDL_ON/UI/UI0-Public/PublicAssmeblyBLL.cs b/HDL_ON/UI/UI0-Public/PublicAssmeblyBLL.cs
index afd0763..0fe6cc6 100644
--- a/HDL_ON/UI/UI0-Public/PublicAssmeblyBLL.cs
+++ b/HDL_ON/UI/UI0-Public/PublicAssmeblyBLL.cs
@@ -65,13 +65,13 @@
                         MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
                         break;
                     case SPK.CurtainRoller:
-                        var rollingShutterView = new VenetianBlindsPage(function);
+                        var rollingShutterView = new RollingShutterPage(function);
                         MainPage.BasePageView.AddChidren(rollingShutterView);
                         rollingShutterView.LoadPage(btnCollectionIcon, btnName, btnFromFloor);
                         MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
                         break;
                     case SPK.CurtainShades:
-                        var curtainShadesView = new RollingShutterPage(function);
+                        var curtainShadesView = new VenetianBlindsPage(function);
                         MainPage.BasePageView.AddChidren(curtainShadesView);
                         curtainShadesView.LoadPage(btnCollectionIcon, btnName, btnFromFloor);
                         MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
@@ -234,7 +234,19 @@
                         doorLockPage.AddForm(function, btnCollectionIcon, btnName, btnFromFloor);
                         break;
                     case SPK.IpCam_Imou:
+
 #if __IOS__
+                        if (Shared.IOS.HDLCNVRSDK.HDLLCNVRSDK.SharedInstance().AccessToken == null)
+                        {//鏈垵濮嬪寲鎽勫儚澶�
+                            Shared.IOS.HDLCNVRSDK.HDLLCNVRSDK.SharedInstance().InitSDKWithAppKey("HDL-HOME-APP-TEST", "WeJ8TY88vbakCcnvH8G1tDUqzLWY8yss", OnAppConfig.Instance.RequestHttpsHost);
+                            Shared.IOS.HDLCNVRSDK.HDLLCNVRSDK.SharedInstance().AccessToken = UserInfo.Current.LoginTokenString;
+                            Shared.IOS.HDLCNVRSDK.HDLLCNVRSDK.SharedInstance().RefreshToken = UserInfo.Current.RefreshToken;
+                            Shared.IOS.HDLCNVRSDK.HDLLCNVRSDK.SharedInstance().HomeId = DB_ResidenceData.Instance.CurrentRegion.id;
+                            Shared.IOS.HDLCNVRSDK.HDLLCNVRSDK.SharedInstance().RefreshDeviceList();
+                        }
+                        //璺宠浆澶у崕鎽勫儚澶�
+                        Shared.IOS.HDLCNVRSDK.HDLLCNVRSDK.SharedInstance().RefreshDeviceList();
+                        Shared.IOS.HDLCNVRSDK.HDLLCNVRSDK.SharedInstance().ToMonitorViewWithDeviceId(function.extDevId, function.name, Shared.Application.currentVC);
 #else
                         FunctionList.List.GetIpCamImouList();
                         if (string.IsNullOrEmpty(Com.Utils.HdlToLcUtils.Instance.SubAccessToken))
@@ -260,6 +272,7 @@
                                         Application.RunOnMainThread(() =>{
                                             try
                                             {
+
                                                 Com.Utils.HdlToLcUtils.Instance.SubAccessToken = pack.Data.ToString();
                                                 Com.Utils.HdlToLcUtils.Instance.Play(function.extDevId, function.name);
                                             }
@@ -299,6 +312,7 @@
                         {
                             try
                             {
+
                                 Com.Utils.HdlToLcUtils.Instance.Play(function.extDevId, function.name);
                             }
                             catch (Exception ex)
diff --git a/HDL_ON/UI/UI1-Login/LoginPage.cs b/HDL_ON/UI/UI1-Login/LoginPage.cs
index 5d79dec..6bf3817 100644
--- a/HDL_ON/UI/UI1-Login/LoginPage.cs
+++ b/HDL_ON/UI/UI1-Login/LoginPage.cs
@@ -232,6 +232,7 @@
                     //etAccount.Text = "13418062953";
                     etAccount.Text = "13138683659";
                     //etAccount.Text = "15217626103";
+                    etAccount.Text = "13377799637";
                 }
                 else
                 {
@@ -282,6 +283,10 @@
                 {
                     etPassword.Text = "wsad123321";
                 }
+                else if (etAccount.Text == "13377799637")
+                {
+                    etPassword.Text = "lc392962649";
+                }
                 //etPassword.Text = "Hdl85521566";
                 btnLogin.IsSelected = true;
             };
diff --git a/HDL_ON/UI/UI2/3-Intelligence/Automation/ConditionDeviceFunList.cs b/HDL_ON/UI/UI2/3-Intelligence/Automation/ConditionDeviceFunList.cs
index 4a885bc..335597a 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/Automation/ConditionDeviceFunList.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/Automation/ConditionDeviceFunList.cs
@@ -342,7 +342,7 @@
                     }
                     break;
                 //鐜妫�娴嬩紶鎰熷櫒
-                case SPK.SensorEnvironment:
+                case SPK.SensorEnvironment:case SPK.SensorEnvironmentHailin:
                 case SPK.SensorEnvironment2:
                 case SPK.SensorEnvironment3:
                     {
@@ -622,11 +622,12 @@
                 case SPK.VideoDoorLock:
                     {
                         LogicView.FunTypeView view1 = new LogicView.FunTypeView();
-                        view1.btnText.Text = "鐢ㄦ埛浜哄憳";// StringId.shipintonghuahujiao;
+                        view1.btnText.TextID=StringId.yonghurenyuan;
                         view1.btnText.Name = Language.StringByID(StringId.shipinmensuo);
                         fLayout.AddChidren(view1.FLayoutView());
                         view1.btnClick.MouseUpEventHandler += (sender, e) =>
                         {
+                            this.identifier = "open_door";//寮�閿佷簨浠�
                             this.VideoDoorLockAction(this, device, view1.btnState);
                         };
                         if (edit)
@@ -686,6 +687,12 @@
                         inputDevice.condition = new List<Dictionary<string, string>>();
                     }
                 }
+                else if (device.spk == SPK.VideoDoorLock)
+                {
+                    ////钀ょ煶瑙嗛闂ㄩ攣
+                    inputDevice.condition_type = "9";
+                    inputDevice.identifier = this.identifier;
+                }
 
 
                 if (edit)
diff --git a/HDL_ON/UI/UI2/3-Intelligence/Automation/InpOrOutLogicMethod.cs b/HDL_ON/UI/UI2/3-Intelligence/Automation/InpOrOutLogicMethod.cs
index d493be3..c389912 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/Automation/InpOrOutLogicMethod.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/Automation/InpOrOutLogicMethod.cs
@@ -311,7 +311,7 @@
                                         }
                                     }
                                     break;
-                                case SPK.SensorEnvironment:
+                                case SPK.SensorEnvironment:case SPK.SensorEnvironmentHailin:
                                 case SPK.SensorEnvironment2:
                                 case SPK.SensorEnvironment3:
                                     {
@@ -678,7 +678,7 @@
                             {
                                 //鐢╯id鎵惧埌璁惧锛�
                                 var device = LogicMethod.Current.GetDevice(inputCondition.sid);
-                                if (device.spk == SPK.SensorEnvironment
+                                if (device.spk == SPK.SensorEnvironment || device.spk == SPK.SensorEnvironmentHailin
                                 || device.spk == SPK.SensorEnvironment2
                                 || device.spk == SPK.SensorEnvironment3
                                 )
diff --git a/HDL_ON/UI/UI2/3-Intelligence/Automation/LogicMethod.cs b/HDL_ON/UI/UI2/3-Intelligence/Automation/LogicMethod.cs
index 6e55a2f..d8690c5 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/Automation/LogicMethod.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/Automation/LogicMethod.cs
@@ -456,7 +456,7 @@
                 case SPK.SensorMmvPose:
                 case SPK.SenesorMegahealth:
                 case SPK.SenesorMegahealth2:
-                case SPK.SensorEnvironment:
+                case SPK.SensorEnvironment:case SPK.SensorEnvironmentHailin:
                 case SPK.SensorEnvironment2:
                 case SPK.SensorEnvironment3:
                 case SPK.SensorTemperature:
@@ -550,7 +550,7 @@
             || device.spk == SPK.SensorMmvPose
             || device.spk == SPK.SenesorMegahealth
             || device.spk == SPK.SenesorMegahealth2
-            || device.spk == SPK.SensorEnvironment
+            || device.spk == SPK.SensorEnvironment || device.spk == SPK.SensorEnvironmentHailin
              || device.spk == SPK.SensorEnvironment2
               || device.spk == SPK.SensorEnvironment3
                 || device.spk == SPK.SensorTemperature
@@ -673,7 +673,7 @@
                 functionTypeList.Add(SPK.SensorMmvPose);
                 functionTypeList.Add(SPK.SenesorMegahealth);
                 functionTypeList.Add(SPK.SenesorMegahealth2);
-                functionTypeList.Add(SPK.SensorEnvironment);
+                functionTypeList.Add(SPK.SensorEnvironment); functionTypeList.Add(SPK.SensorEnvironmentHailin);
                 functionTypeList.Add(SPK.SensorEnvironment2);
                 functionTypeList.Add(SPK.SensorEnvironment3);
                 functionTypeList.Add(SPK.SensorTemperature);
@@ -754,7 +754,7 @@
                 functionTypeList.Add(SPK.SensorMmvPose);
                 functionTypeList.Add(SPK.SenesorMegahealth);
                 functionTypeList.Add(SPK.SenesorMegahealth2);
-                functionTypeList.Add(SPK.SensorEnvironment);
+                functionTypeList.Add(SPK.SensorEnvironment); functionTypeList.Add(SPK.SensorEnvironmentHailin);
                 functionTypeList.Add(SPK.SensorEnvironment2);
                 functionTypeList.Add(SPK.SensorEnvironment3);
                 functionTypeList.Add(SPK.SensorTemperature);
@@ -818,7 +818,7 @@
                         deviceTypeList.Add(SPK.SensorMmvPose);
                         deviceTypeList.Add(SPK.SenesorMegahealth);
                         deviceTypeList.Add(SPK.SenesorMegahealth2);
-                        deviceTypeList.Add(SPK.SensorEnvironment);
+                        deviceTypeList.Add(SPK.SensorEnvironment); deviceTypeList.Add(SPK.SensorEnvironmentHailin);
                         deviceTypeList.Add(SPK.SensorEnvironment2);
                         deviceTypeList.Add(SPK.SensorEnvironment3);
                         deviceTypeList.Add(SPK.SensorTemperature);
diff --git a/HDL_ON/UI/UI2/3-Intelligence/Automation/TimeTpye.cs b/HDL_ON/UI/UI2/3-Intelligence/Automation/TimeTpye.cs
index 84822aa..a7845f1 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/Automation/TimeTpye.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/Automation/TimeTpye.cs
@@ -92,11 +92,12 @@
             //鏃ュ嚭/鏃ヨ惤/姝e崍鐐瑰嚮浜嬩欢
             timeSpecialView.btnClick.MouseUpEventHandler += (sen, e) =>
             {
-                if (string.IsNullOrEmpty( Entity.DB_ResidenceData.Instance.CurrentRegion.homeAddress))//.longitude == 0 && Entity.DB_ResidenceData.Instance.CurrentRegion.latitude == 0)
-                {
-                    new PublicAssmebly().TipMsg(StringId.tip, StringId.GatewayLocationInformationIsNotConfigured);
-                    return;
-                }
+                
+                //if (string.IsNullOrEmpty( Entity.DB_ResidenceData.Instance.CurrentRegion.homeAddress))//.longitude == 0 && Entity.DB_ResidenceData.Instance.CurrentRegion.latitude == 0)
+                //{
+                //    new PublicAssmebly().TipMsg(StringId.tip, StringId.GatewayLocationInformationIsNotConfigured);
+                //    return;
+                //}
                 SpeciaTime speciaTime = new SpeciaTime();
                 MainPage.BasePageView.AddChidren(speciaTime);
                 speciaTime.Show();
diff --git a/HDL_ON/UI/UI2/3-Intelligence/IntelligencePage.cs b/HDL_ON/UI/UI2/3-Intelligence/IntelligencePage.cs
index 25a9a06..13115eb 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/IntelligencePage.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/IntelligencePage.cs
@@ -86,38 +86,38 @@
             //鍒ゆ柇鏄惁闇�瑕侀殣钘忚嚜鍔ㄥ寲
             if (HideAutoPage)
             {
-                if (DB_ResidenceData.Instance.GatewayType == 1)//缃戝叧闇�瑕佸姞杞藉畨闃�--2021-11-28 19:56:53  鍒樻檽杈夊皢瀹夐槻鏀惧叆璇ョ晫闈�
-                {
-                    btnSceneTilte  = new Button()
-                    {
-                        Y = Application.GetRealHeight(30),
-                        Width = Application.GetRealWidth(170),
-                        Height = Application.GetRealHeight(25),
-                        TextAlignment = TextAlignment.CenterRight,
-                        TextSize = CSS_FontSize.HeadlineFontSize,
-                        TextColor = CSS_Color.PromptingColor1,
-                        SelectedTextColor = CSS_Color.MainColor,
-                        TextID = StringId.Scenes,
-                        IsSelected = true
-                    };
-                    topView.AddChidren(btnSceneTilte);
+                //if (DB_ResidenceData.Instance.GatewayType == 1)//缃戝叧闇�瑕佸姞杞藉畨闃�--2021-11-28 19:56:53  鍒樻檽杈夊皢瀹夐槻鏀惧叆璇ョ晫闈�
+                //{
+                //    btnSceneTilte  = new Button()
+                //    {
+                //        Y = Application.GetRealHeight(30),
+                //        Width = Application.GetRealWidth(170),
+                //        Height = Application.GetRealHeight(25),
+                //        TextAlignment = TextAlignment.CenterRight,
+                //        TextSize = CSS_FontSize.HeadlineFontSize,
+                //        TextColor = CSS_Color.PromptingColor1,
+                //        SelectedTextColor = CSS_Color.MainColor,
+                //        TextID = StringId.Scenes,
+                //        IsSelected = true
+                //    };
+                //    topView.AddChidren(btnSceneTilte);
 
-                    btnSecurityTitle = new Button()
-                    {
-                        X = Application.GetRealWidth(209),
-                        Y = Application.GetRealHeight(30),
-                        Width = Application.GetRealWidth(170),
-                        Height = Application.GetRealHeight(25),
-                        TextAlignment = TextAlignment.CenterLeft,
-                        TextSize = CSS_FontSize.TextFontSize,
-                        TextColor = CSS_Color.PromptingColor1,
-                        SelectedTextColor = CSS_Color.MainColor,
-                        TextID = StringId.anfang,
-                    };
-                    topView.AddChidren(btnSecurityTitle);
-                    btnAutomationTitle = new Button();
-                }
-                else
+                //    btnSecurityTitle = new Button()
+                //    {
+                //        X = Application.GetRealWidth(209),
+                //        Y = Application.GetRealHeight(30),
+                //        Width = Application.GetRealWidth(170),
+                //        Height = Application.GetRealHeight(25),
+                //        TextAlignment = TextAlignment.CenterLeft,
+                //        TextSize = CSS_FontSize.TextFontSize,
+                //        TextColor = CSS_Color.PromptingColor1,
+                //        SelectedTextColor = CSS_Color.MainColor,
+                //        TextID = StringId.anfang,
+                //    };
+                //    topView.AddChidren(btnSecurityTitle);
+                //    btnAutomationTitle = new Button();
+                //}
+                //else
                 {
 
                     btnSceneTilte = new Button()
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/SenesorEnvironment/AddSensorEnvironmentPage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/SenesorEnvironment/AddSensorEnvironmentPage.cs
index e4130c3..02435eb 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/SenesorEnvironment/AddSensorEnvironmentPage.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/SenesorEnvironment/AddSensorEnvironmentPage.cs
@@ -123,7 +123,7 @@
             {
                 editText.PlaceholderText = Language.StringByID(StringId.PlsEntryMacCode);
             }
-            if (integratedDevice.spk == SPK.SensorEnvironment)
+            if (integratedDevice.spk == SPK.SensorEnvironment || integratedDevice.spk == SPK.SensorEnvironmentHailin)
             {
                 Button btnScan = new Button()
                 {
@@ -160,7 +160,7 @@
                         try
                         {
                             var pm = new HttpServerRequest();
-                            var pack = pm.IndependentRegister3TyDevcie(integratedDevice.spk, snCode,integratedDevice.ProductShowName, pairString);// Language.StringByID(StringId.SensorEnvironment)
+                            var pack = pm.IndependentRegister3TyDevcie(integratedDevice.spk, snCode,integratedDevice.ProductShowName, integratedDevice.productBrand, pairString);// Language.StringByID(StringId.SensorEnvironment)
                             if (pack.Code == StateCode.SUCCESS)
                             {
                                 //var revData = Newtonsoft.Json.JsonConvert.DeserializeObject<List<IntegratedBrandDevice>>(pack.Data.ToString());
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/SenesorMegahealth/AddSenesorMegahealthDirection1Page.cs b/HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/SenesorMegahealth/AddSenesorMegahealthDirection1Page.cs
index d4501dc..0965e3d 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/SenesorMegahealth/AddSenesorMegahealthDirection1Page.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/SenesorMegahealth/AddSenesorMegahealthDirection1Page.cs
@@ -115,7 +115,7 @@
                         try
                         {
                             var pm = new HttpServerRequest();
-                            var pack = pm.IndependentRegister3TyDevcie(device.spk, snCode,Language.StringByID(StringId.SenesorMillimeterWave));
+                            var pack = pm.IndependentRegister3TyDevcie(device.spk, snCode,Language.StringByID(StringId.SenesorMillimeterWave),device.productBrand);
                             if (pack.Code == StateCode.SUCCESS)
                             {
                                 //var revData = Newtonsoft.Json.JsonConvert.DeserializeObject<List<IntegratedBrandDevice>>(pack.Data.ToString());
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/AddDevciePage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/AddDevciePage.cs
index f510cfe..c0a6841 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/AddDevciePage.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/AddDevciePage.cs
@@ -1,13 +1,47 @@
 锘縰sing System;
 using System.Collections.Generic;
+#if __ANDROID__
+using Android.Content;
+#endif
 using HDL_ON.DAL.Server;
 using HDL_ON.Entity;
 using HDL_ON.UI.CSS;
 using Shared;
+#if __IOS__
+using Shared.IOS.HDLCNVRSDK;
+#endif
 namespace HDL_ON.UI
 {
+
+
     public class AddDevciePage : FrameLayout
     {
+#if __ANDROID__
+    public class dddxx { }
+#else
+        //澶у崕鎽勫儚澶磗dk浠g悊锛圫hared.IOS.HDLCNVRSDK)
+        hdlLCNVRSDKDelegate hdlLCNVRDelegate;
+        public class hdlLCNVRSDKDelegate : HDLLCNVRSDKDelegate
+        {
+            Action act;
+            public hdlLCNVRSDKDelegate(Action action)
+            {
+                act = action;
+
+
+            }
+
+            public override void AddDeviceFailWithErrorCode(string errorCode)
+            {
+
+            }
+
+            public override void BackFromAddDeviceView()
+            {
+                act?.Invoke();
+            }
+        }
+#endif
         FrameLayout bodyView;
         IntegratedBrand brand;
         VerticalRefreshLayout contentView;
@@ -20,6 +54,7 @@
 
         public void LoadPage(VerticalRefreshLayout refreshView)
         {
+
             new TopViewDiv(bodyView, Language.StringByID(StringId.AddDevice)).LoadTopView();
             bodyView.BackgroundColor = CSS_Color.BackgroundColor;
 
@@ -46,7 +81,8 @@
         {
             var waitPage = new Loading();
             waitPage.Start();
-            new System.Threading.Thread(() => {
+            new System.Threading.Thread(() =>
+            {
                 try
                 {
                     var pm = new HttpServerRequest();
@@ -119,7 +155,7 @@
                     Width = Application.GetRealWidth(32),
                     Height = Application.GetRealWidth(32),
                     Radius = (uint)Application.GetRealWidth(4),
-                    UnSelectedImagePath =  $"FunctionIcon/Icon/{device.IconName}.png",
+                    UnSelectedImagePath = $"FunctionIcon/Icon/{device.IconName}.png",
                 };
                 row.AddChidren(btnIcon);
                 Button btnRight = new Button()
@@ -143,30 +179,235 @@
                 };
                 row.AddChidren(btnName);
 
-                btnName.MouseUpEventHandler = (sender, e) => {
+
+
+                btnName.MouseUpEventHandler = (sender, e) =>
+                {
                     switch (device.spk)
                     {
+                        case SPK.IpCam_Imou:
+
+#if __IOS__
+
+                            //鍒濆鍖栧ぇ鍗庢憚鍍忓ごsdk
+                            Shared.IOS.HDLCNVRSDK.HDLLCNVRSDK.SharedInstance().InitSDKWithAppKey("HDL-HOME-APP-TEST", "WeJ8TY88vbakCcnvH8G1tDUqzLWY8yss", OnAppConfig.Instance.RequestHttpsHost);
+                            Shared.IOS.HDLCNVRSDK.HDLLCNVRSDK.SharedInstance().AccessToken = UserInfo.Current.LoginTokenString;
+                            Shared.IOS.HDLCNVRSDK.HDLLCNVRSDK.SharedInstance().RefreshToken = UserInfo.Current.RefreshToken;
+                            Shared.IOS.HDLCNVRSDK.HDLLCNVRSDK.SharedInstance().HomeId = DB_ResidenceData.Instance.CurrentRegion.id;
+                            //璺宠浆娣诲姞鎽勫儚澶�(Shared.IOS.HDLCNVRSDK)
+                            hdlLCNVRDelegate = new hdlLCNVRSDKDelegate(() =>
+                            {//娣诲姞鎴愬姛杩斿洖浜嬩欢
+                                refreshView.BeginHeaderRefreshing();
+                                this.RemoveFromParent();
+                            });
+                            Shared.IOS.HDLCNVRSDK.HDLLCNVRSDK.SharedInstance().Delegate = hdlLCNVRDelegate;
+                            Shared.IOS.HDLCNVRSDK.HDLLCNVRSDK.SharedInstance().ToAddDeviceView();
+#else
+                                FunctionList.List.GetIpCamImouList();
+                                if (string.IsNullOrEmpty(Com.Utils.HdlToLcUtils.Instance.SubAccessToken))
+                                {
+
+                                    var waitPage = new Loading();
+                                    MainPage.BaseView.AddChidren(waitPage);
+                                    waitPage.Start("");
+                                    new System.Threading.Thread(() =>
+                                    {
+                                        try
+                                        {
+
+#if DEBUG
+                                            Com.Utils.HdlToLcUtils.Instance.ShowErrorInfo(true);
+#endif
+
+                                            var http = new HttpServerRequest();
+                                            var pack = http.GetLcSubAccountToken();
+                                            if (pack.Code == StateCode.SUCCESS)
+                                            {
+                                                if (pack.Data == null || string.IsNullOrEmpty(pack.Data.ToString()))
+                                                {
+                                                    Application.RunOnMainThread(() =>
+                                                    {
+                                                        new PublicAssmebly().TipMsg(Language.StringByID(StringId.Tip), Language.StringByID(StringId.Get3tyIotInfoFailed));
+                                                        return;
+                                                    });
+                                                }
+                                                Com.Utils.HdlToLcUtils.Instance.InitData(Shared.Application.Activity, "HDL-HOME-APP-TEST", "WeJ8TY88vbakCcnvH8G1tDUqzLWY8yss", OnAppConfig.Instance.RequestHttpsHost);
+                                                Com.Utils.HdlToLcUtils.Instance.HomeId = DB_ResidenceData.Instance.CurrentRegion.id;
+                                                Com.Utils.HdlToLcUtils.Instance.Token = UserInfo.Current.AccessToken;
+                                                Com.Utils.HdlToLcUtils.Instance.SubAccessToken = pack.Data.ToString();
+
+#if __ANDROID__
+                                                Application.RunOnMainThread(() =>
+                                                {
+                                                    try
+                                                    {
+                                                        var result = Com.Utils.HdlToLcUtils.Instance.CheckCameraPermissions();
+                                                        if (result)
+                                                        {
+                                                            var bindDeviceFeedback = new BindDeviceFeedback();
+                                                            bindDeviceFeedback.tipAction = (method, msg) => {
+                                                                HDLUtils.WriteLine(method + "::" + msg);
+                                                                if(method == "bindDevice")
+                                                                {
+                                                                    var bindResult = Newtonsoft.Json.JsonConvert.DeserializeObject<ResponsePackNew>(msg);
+                                                                    if (bindResult != null)
+                                                                    {
+                                                                        if (bindResult.Code == "147021") {
+                                                                            string tipTitle = "鎻愮ず";
+                                                                            string tipMsg = "鏃犳硶缁戝畾璇ヨ澶囷紝璇蜂粠娌充笢娓犻亾璐拱璇ョ被鍨嬩骇鍝�";
+                                                                            if (Language.CurrentLanguage != "Chinese")
+                                                                            {
+                                                                                tipTitle = "Tip";
+                                                                                tipMsg = "Unable to bind this device. Please purchase this type of product from HDL";
+                                                                            }
+                                                                            new PublicAssmebly().TipMsg(tipTitle, tipMsg);
+                                                                        }
+                                                                        else
+                                                                        {
+                                                                            string tipTitle = "鎻愮ず";
+                                                                            string tipMsg = $"{bindResult.message}({bindResult.Code})";
+                                                                            if (Language.CurrentLanguage != "Chinese")
+                                                                            {
+                                                                                tipTitle = "Tip";
+                                                                            }
+                                                                            new PublicAssmebly().TipMsg(tipTitle, tipMsg);
+                                                                        }
+                                                                    }
+
+                                                                }
+                                                            };
+                                                            Hdl.Onpro.HdlData.Instance.InitData(bindDeviceFeedback, device.productBrand);
+
+                                                            var backTemp = new AddLcCam();
+                                                            backTemp.backAction = () =>
+                                                            {
+                                                                refreshView.BeginHeaderRefreshing();
+                                                                this.RemoveFromParent();
+                                                            };
+                                                            Com.Utils.HdlToLcUtils.Instance.AddCamera(backTemp);
+                                                            
+                                                        }
+                                                        else
+                                                        {
+                                                            Com.Utils.HdlToLcUtils.Instance.RequestCameraPermissions();
+                                                        }
+                                                    }
+                                                    catch (Exception ex)
+                                                    {
+
+                                                    }
+                                                    finally
+                                                    {
+                                                    }
+                                                });
+#endif
+                                            }
+                                            else
+                                            {
+                                                Application.RunOnMainThread(() =>
+                                                {
+                                                    new PublicAssmebly().TipMsg(Language.StringByID(StringId.Tip), Language.StringByID(StringId.huoqushujushibao) + $"({pack.Code})");
+                                                });
+                                            }
+                                        }
+                                        catch (Exception ex)
+                                        {
+                                            MainPage.Log("鍔犺浇涔愭鎽勫儚澶村紓甯�");
+                                        }
+                                        finally
+                                        {
+                                            Application.RunOnMainThread(() =>
+                                            {
+                                                if (waitPage != null)
+                                                {
+                                                    waitPage.RemoveFromParent();
+                                                    waitPage = null;
+                                                }
+                                            });
+                                        }
+                                    })
+                                    { IsBackground = true }.Start();
+                                }
+                                else
+                                {
+                                    var result = Com.Utils.HdlToLcUtils.Instance.CheckCameraPermissions();
+                                    if (result)
+                                    {
+                                        var bindDeviceFeedback = new BindDeviceFeedback();
+                                        bindDeviceFeedback.tipAction = (method, msg) => {
+                                            HDLUtils.WriteLine(method + "::" + msg);
+                                            if (method == "bindDevice")
+                                            {
+                                                var bindResult = Newtonsoft.Json.JsonConvert.DeserializeObject<ResponsePackNew>(msg);
+                                                if (bindResult != null)
+                                                {
+                                                    if (bindResult.Code == "147021")
+                                                    {
+                                                        string tipTitle = "鎻愮ず";
+                                                        string tipMsg = "鏃犳硶缁戝畾璇ヨ澶囷紝璇蜂粠娌充笢娓犻亾璐拱璇ョ被鍨嬩骇鍝�";
+                                                        if (Language.CurrentLanguage != "Chinese")
+                                                        {
+                                                            tipTitle = "Tip";
+                                                            tipMsg = "Unable to bind this device. Please purchase this type of product from HDL";
+                                                        }
+                                                        new PublicAssmebly().TipMsg(tipTitle, tipMsg);
+                                                    }
+                                                    else
+                                                    {
+                                                        string tipTitle = "鎻愮ず";
+                                                        string tipMsg = $"{bindResult.message}({bindResult.Code})";
+                                                        if (Language.CurrentLanguage != "Chinese")
+                                                        {
+                                                            tipTitle = "Tip";
+                                                        }
+                                                        new PublicAssmebly().TipMsg(tipTitle, tipMsg);
+                                                    }
+                                                }
+                                            }
+                                        };
+                                        Hdl.Onpro.HdlData.Instance.InitData(bindDeviceFeedback, device.productBrand);
+
+
+                                    var backTemp = new AddLcCam();
+                                        backTemp.backAction = () =>
+                                        {
+                                            refreshView.BeginHeaderRefreshing();
+                                            this.RemoveFromParent();
+                                        };
+                                        Com.Utils.HdlToLcUtils.Instance.AddCamera(backTemp);
+                                    }
+                                    else
+                                    {
+                                        Com.Utils.HdlToLcUtils.Instance.RequestCameraPermissions();
+                                    }
+                                }
+#endif
+                            break;
                         case SPK.IrModule:
                             var form = new AddMiniRemoteControlDirection1Page();
                             form.AddForm();
-                            form.AddDeviceEvent = (functionObj) => {
+                            form.AddDeviceEvent = (functionObj) =>
+                            {
                                 refreshView.BeginHeaderRefreshing();
-                            }; 
+                            };
                             break;
                         case SPK.SenesorMegahealth:
                         case SPK.SenesorMegahealth2:
                         case SPK.SensorMmvPose:
                             var form1 = new AddSenesorMegahealthDirection1Page();
                             form1.AddForm(device);
-                            form1.AddDeviceEvent = (functionObj) => {
+                            form1.AddDeviceEvent = (functionObj) =>
+                            {
                                 refreshView.BeginHeaderRefreshing();
                                 this.RemoveFromParent();
                             };
                             break;
                         case SPK.SensorEnvironment:
+                        case SPK.SensorEnvironmentHailin:
                             var form2 = new AddSensorEnvironmentPage();
                             form2.AddForm(device);
-                            form2.AddDeviceEvent = (functionObj) => {
+                            form2.AddDeviceEvent = (functionObj) =>
+                            {
                                 refreshView.BeginHeaderRefreshing();
                                 this.RemoveFromParent();
                             };
@@ -175,7 +416,8 @@
                         case SPK.SensorEnvironment3:
                             var form3 = new AddQingpingSensorEnvirTipPage();
                             form3.AddForm(device);
-                            form3.AddDeviceEvent = (functionObj) => {
+                            form3.AddDeviceEvent = (functionObj) =>
+                            {
                                 refreshView.BeginHeaderRefreshing();
                                 this.RemoveFromParent();
                             };
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/DeviceListPage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/DeviceListPage.cs
index 2496657..6708c7d 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/DeviceListPage.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/DeviceListPage.cs
@@ -5,6 +5,8 @@
 using HDL_ON.UI.CSS;
 #if __Android__
 using Java.Interop;
+using Android.Content;
+using Hdl.Onpro;
 #endif
 using Shared;
 namespace HDL_ON.UI
@@ -26,124 +28,10 @@
         {
             Action<string, string> action = (s, a) =>
             {
-                if (brand.productBrand == "IMOU")
-                {
-#if __ANDROID__
-
-                    FunctionList.List.GetIpCamImouList();
-
-
-                    if (string.IsNullOrEmpty(Com.Utils.HdlToLcUtils.Instance.SubAccessToken))
-                    {
-
-                        var waitPage = new Loading();
-                        MainPage.BaseView.AddChidren(waitPage);
-                        waitPage.Start("");
-                        new System.Threading.Thread(() =>
-                        {
-                            try
-                            {
-
-#if DEBUG
-                                Com.Utils.HdlToLcUtils.Instance.ShowErrorInfo(true);
-#endif
-
-                                var http = new HttpServerRequest();
-                                var pack = http.GetLcSubAccountToken();
-                                if (pack.Code == StateCode.SUCCESS)
-                                {
-                                    if (pack.Data == null || string.IsNullOrEmpty(pack.Data.ToString()))
-                                    {
-                                        Application.RunOnMainThread(() =>
-                                        {
-                                            new PublicAssmebly().TipMsg(Language.StringByID(StringId.Tip), Language.StringByID(StringId.Get3tyIotInfoFailed));
-                                            return;
-                                        });
-                                    }
-                                    Com.Utils.HdlToLcUtils.Instance.InitData(Shared.Application.Activity, "HDL-HOME-APP-TEST", "WeJ8TY88vbakCcnvH8G1tDUqzLWY8yss", OnAppConfig.Instance.RequestHttpsHost);
-                                    Com.Utils.HdlToLcUtils.Instance.HomeId = DB_ResidenceData.Instance.CurrentRegion.id;
-                                    Com.Utils.HdlToLcUtils.Instance.Token = UserInfo.Current.AccessToken;
-                                    Com.Utils.HdlToLcUtils.Instance.SubAccessToken = pack.Data.ToString();
-#if __ANDROID__
-                                    Application.RunOnMainThread(() =>
-                                    {
-                                        try
-                                        {
-                                            
-                                            var result = Com.Utils.HdlToLcUtils.Instance.CheckCameraPermissions();
-                                            if (result)
-                                            {
-                                                var backTemp = new AddLcCam();
-                                                backTemp.backAction = () =>
-                                                {
-                                                    Load3tyBrandDeviceList();
-                                                };
-                                                Com.Utils.HdlToLcUtils.Instance.AddCamera(backTemp);
-                                            }
-                                            else
-                                            {
-                                                Com.Utils.HdlToLcUtils.Instance.RequestCameraPermissions();
-                                            }
-                                        }
-                                        catch (Exception ex)
-                                        {
-
-                                        }
-                                    });
-#endif
-                                }
-                                else
-                                {
-                                    Application.RunOnMainThread(() =>
-                                    {
-                                        new PublicAssmebly().TipMsg(Language.StringByID(StringId.Tip), Language.StringByID(StringId.huoqushujushibao) + $"({pack.Code})");
-                                    });
-                                }
-                            }
-                            catch (Exception ex)
-                            {
-                                MainPage.Log("鍔犺浇涔愭鎽勫儚澶村紓甯�");
-                            }
-                            finally
-                            {
-                                Application.RunOnMainThread(() =>
-                                {
-                                    if (waitPage != null)
-                                    {
-                                        waitPage.RemoveFromParent();
-                                        waitPage = null;
-                                    }
-                                });
-                            }
-                        })
-                        { IsBackground = true }.Start();
-                    }
-                    else
-                    {
-                        var result = Com.Utils.HdlToLcUtils.Instance.CheckCameraPermissions();
-                        if (result)
-                        {
-                            var backTemp = new AddLcCam();
-                            backTemp.backAction = () =>
-                            {
-                                Load3tyBrandDeviceList();
-                            };
-                            Com.Utils.HdlToLcUtils.Instance.AddCamera(backTemp);
-                        }
-                        else
-                        {
-                            Com.Utils.HdlToLcUtils.Instance.RequestCameraPermissions();
-                        }
-                    }
-#endif
-                }
-                else
-                {
-                    var page = new AddDevciePage(brand);
-                    MainPage.BasePageView.AddChidren(page);
-                    page.LoadPage(contentView);
-                    MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
-                }
+                var page = new AddDevciePage(brand);
+                MainPage.BasePageView.AddChidren(page);
+                page.LoadPage(contentView);
+                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
             };
             new TopViewDiv(bodyView, Language.StringByID(StringId.Devices)).LoadTopView_AddIcon("3ty", action);
             bodyView.BackgroundColor = CSS_Color.BackgroundColor;
@@ -299,7 +187,7 @@
                                 contentView.BeginHeaderRefreshing();
                             };
                             break;
-                        case SPK.SensorEnvironment:
+                        case SPK.SensorEnvironment:case SPK.SensorEnvironmentHailin:
                         case SPK.SensorEnvironment2:
                         case SPK.SensorEnvironment3:
                             var smPage1 = new SensorEnvironmentManagerPage();
@@ -463,6 +351,23 @@
 
 
 #if __Android__
+
+    //[Android.Content.BroadcastReceiver(Enabled = true, Exported = false)]
+    //public class ImouReceiver : Android.Content.BroadcastReceiver
+    //{
+    //    public override void OnReceive(Context context, Intent intent)
+    //    {
+    //        if (intent != null)
+    //        {
+    //            string action = intent.Action;
+    //            if (action == "hdlUserDeviceBind")
+    //            {
+    //                string value = intent.GetStringExtra("data");
+    //            }
+    //        }
+    //    }
+    //}
+
     public class AddLcCam : Java.Lang.Object, Com.CallBack.IAddCamera
     {
 
@@ -523,6 +428,17 @@
         {
         }
     }
+
+    public class BindDeviceFeedback : Java.Lang.Object, Hdl.Onpro.IRegisterDeviceFeedback
+    {
+        public Action<string,string> tipAction;
+
+        public void Feedback(string method, string msg)
+        {
+            tipAction?.Invoke(method, msg);
+        }
+    }
+
 #else
     public class AddLcCam
     {
@@ -534,4 +450,8 @@
         }
     }
 #endif
+
+
+
+
 }
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/PersonalDataPage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/PersonalDataPage.cs
index 9cbb1e1..eb2e32c 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/PersonalDataPage.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/PersonalDataPage.cs
@@ -744,7 +744,7 @@
                     //鍒锋柊鎺ュ彛璇锋眰鎵�闇�瑕佺殑鍙傛暟
                     Foundation.NSDictionary info = new Foundation.NSDictionary("regionUrl", HttpUtil.GlobalRequestHttpsHost, "token", UserInfo.Current.LoginTokenString, "appkey", "HDL-HOME-APP-TEST", "secret", "WeJ8TY88vbakCcnvH8G1tDUqzLWY8yss", "refreshToken", UserInfo.Current.RefreshToken);
                     Shared.IOS.HDLFVSDK.Video.RefreshInfo(info);
-                    //璺宠浆璁垮绠$悊鐣岄潰
+                    ////璺宠浆璁垮绠$悊鐣岄潰
                     Shared.IOS.HDLFVSDK.Video.ShowVisitorManager();
 #else
                     var page = new VisitorQRCodePage();
@@ -828,6 +828,7 @@
                 MainPage.BasePageView.AddChidren(myServerInfoPage);
                 myServerInfoPage.LoadPage();
                 MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+
             };
             myServerInfoCellView.GoAction = selectAction;
             myServerInfoCellView.BtnTilte.Text = Language.StringByID(StringId.ServerInformation);
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/PersonalDataPageBLL.cs b/HDL_ON/UI/UI2/4-PersonalCenter/PersonalDataPageBLL.cs
index ce10df7..26b7215 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/PersonalDataPageBLL.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/PersonalDataPageBLL.cs
@@ -4,6 +4,11 @@
 using HDL_ON.Entity;
 using Shared;
 
+#if __IOS__
+using UIKit;
+using Foundation;
+#endif
+
 namespace HDL_ON.UI
 {
     public partial class PersonalDataPage
@@ -439,7 +444,6 @@
                 MainPage.BasePageView.AddChidren(aep);
                 aep.LoadPage();
                 MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
-
             };
             _QRcodeView.MouseUpEventHandler = eventHandler;
             btnQRcode.MouseUpEventHandler = eventHandler;
@@ -447,7 +451,7 @@
             btnQRcodeRight.MouseUpEventHandler = eventHandler;
         }
 
-        #region 淇敼缁戝畾閭
+#region 淇敼缁戝畾閭
         /// <summary>
         /// 淇敼缁戝畾閭
         /// </summary>
@@ -459,6 +463,7 @@
                 {
 
                     btnUserEmailInfo.Text = GetBindAccountText(email);
+
                 };
 
                 if (CheckIfUnbound(btnUserEmailInfo.Text))
@@ -493,6 +498,7 @@
                 Action<string> action = (phone) =>
                 {
                     btnUserPhoneInfo.Text = GetBindAccountText(phone);
+
                 };
 
                 if (CheckIfUnbound(btnUserPhoneInfo.Text))
@@ -511,15 +517,14 @@
                     MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
                 }
 
-
             };
             btnUserPhoneInfo.MouseUpEventHandler = eventHandler;
             btnUserPhoneRight.MouseUpEventHandler = eventHandler;
             userPhoneInfoView.MouseUpEventHandler = eventHandler;
         }
-        #endregion
+#endregion
 
-        #region 瑙i攣璁剧疆鍖哄煙
+#region 瑙i攣璁剧疆鍖哄煙
         //void LoadEvent_SkipInterpretationSettings()
         //{
         //    EventHandler<MouseEventArgs> eventHandler = (sender, e) =>
@@ -535,7 +540,7 @@
         //    btnInterpretationSettingsTip.MouseUpEventHandler = eventHandler;
         //}
 
-        #endregion
+#endregion
 
         /// <summary>
         /// 璺宠浆淇敼瀵嗙爜鐣岄潰
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/PirSend.cs b/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/PirSend.cs
index 7084db6..a37633b 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/PirSend.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/PirSend.cs
@@ -291,10 +291,10 @@
         /// <returns></returns>
         public static ResponsePackNew RequestServerhomeId(object o, string api_Url, int mTimeout = 20)
         {
-            MainPage.Log("绾㈠瀹濊姹傛暟鎹�:"+api_Url+"\r\n"+o.ToString());
+            MainPage.Log("绾㈠瀹�->鍙戦�佹暟鎹�:"+api_Url+"\r\n"+o.ToString());
             var requestJson = HttpUtil.GetSignRequestJson(o);
             var responsePackNew=  HttpUtil.RequestHttpsPostFroHome(api_Url, requestJson, mTimeout);
-            MainPage.Log("鍥炲绾㈠瀹濊姹傛暟鎹�:" + "\r\n"+ Newtonsoft.Json.JsonConvert.SerializeObject(responsePackNew));
+            MainPage.Log("绾㈠瀹�->鍥炲鏁版嵁:" + "\r\n"+ Newtonsoft.Json.JsonConvert.SerializeObject(responsePackNew));
             return responsePackNew;
 
         }
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Light/LightScene/AddLightScene.cs b/HDL_ON/UI/UI2/FuntionControlView/Light/LightScene/AddLightScene.cs
index c58d221..b108f57 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Light/LightScene/AddLightScene.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Light/LightScene/AddLightScene.cs
@@ -521,7 +521,7 @@
             {
                 if (!commandDic.ContainsKey(FunctionAttributeKey.Brightness))
                 {
-                    commandDic.Add(FunctionAttributeKey.Brightness, lightCCT[0].GetAttrState(FunctionAttributeKey.Brightness));
+                    commandDic.Add(FunctionAttributeKey.Brightness, lightDimming[0].GetAttrState(FunctionAttributeKey.Brightness));
                 }
             }
 
diff --git a/HDL_ON/UI/UI2/FuntionControlView/VideoDoorLock/CommonMethod.cs b/HDL_ON/UI/UI2/FuntionControlView/VideoDoorLock/CommonMethod.cs
index 5847867..fc60e23 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/VideoDoorLock/CommonMethod.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/VideoDoorLock/CommonMethod.cs
@@ -39,7 +39,7 @@
 
         }
 
-        #region  --------- 璺宠浆鍒癆ndroid閭h竟鐨勬柟娉�(钀ょ煶瑙嗛闂ㄩ攣) --------
+        #region  --------- 璺宠浆鍒癆ndroid锛宨os閭h竟鐨勬柟娉�(钀ょ煶瑙嗛闂ㄩ攣) --------
         /// <summary>
         /// android,ios婧愮敓娣诲姞璁惧鍒颁簯绔垚鍔熷悗鍥炶皟鏂规硶
         /// 鍐嶈鍙栦簯绔殑涓婅悿鐭宠澶囧垪琛�
@@ -57,6 +57,21 @@
                         this.ShowTip("鍏堣幏鍙栬悿鐭充簯瀛愯处鍙穞oken澶辫触銆�");
                     }
 #if __IOS__
+                //璺宠浆娣诲姞钀ょ煶璁惧
+                ezsdkDelegate = new IosIHdlInterface();
+                ezsdkDelegate.mAction += (serials) => {
+                    var list = VideDoorLockSend.Current.GetVideoDoorLockDeviceList(SPK.VideoDoorLock);
+                    if (list.Count > 0)
+                    {
+                        var function = list.Find((o) => o.sid == serials);
+                        if (function != null)
+                        {
+                            this.SaveFunctionFile(function);
+                        }
+                    }
+                };
+                EZSDK.IOS.EZSDK.SharedInstance().Delegate= ezsdkDelegate;
+                EZSDK.IOS.EZSDK.SharedInstance().AddEzvizMonitorWithDeviceType(spk);
 
 #else
                 HDLEzvizSdk.Instance.JumpToEZScanActivity(Application.Activity,spk);
@@ -118,7 +133,8 @@
                     {
                         dialog.Close();
 #if __IOS__
-
+                        //鎵撳紑钀ょ煶瑙嗛鐣岄潰
+                        EZSDK.IOS.EZSDK.SharedInstance().PlayWithDeviceSerial(deviceSerial, deviceId, spk);
 #else
                     HDLEzvizSdk.Instance.JumpToEZRealPlayActivity(Application.Activity,deviceId,deviceSerial,spk);
 #endif
@@ -130,6 +146,9 @@
                 else
                 {
 #if __IOS__
+                    //鎵撳紑钀ょ煶瑙嗛鐣岄潰
+                    EZSDK.IOS.EZSDK.SharedInstance().PlayWithDeviceSerial(deviceSerial, deviceId, spk);
+
 #else
                     HDLEzvizSdk.Instance.JumpToEZRealPlayActivity(Application.Activity,deviceId,deviceSerial,spk);
 #endif
@@ -150,14 +169,14 @@
             {
 
 #if __IOS__
+                //鎵撳紑钀ょ煶鍘嗗彶璁板綍鐣岄潰
+                EZSDK.IOS.EZSDK.SharedInstance().ToDeviceMsgListView(deviceId);
 #else
                 HDLEzvizSdk.Instance.JumpLockHistoryActivity(Application.Activity, deviceId);
 #endif
 
             });
-            //鏈疄鐜�
-            //this.InitializationAndroidData();
-            //
+            
         }
         /// <summary>
         /// 涓存椂瀵嗙爜寮�闂�
@@ -165,7 +184,6 @@
         /// </summary>
         public void SkipPSWActivity(string deviceId)
         {
-
             this.InitializationAndroidData((isBools) =>
             {
                 if (!isBools)
@@ -177,6 +195,8 @@
                     });
                 }
 #if __IOS__
+                //鎵撳紑钀ょ煶涓存椂瀵嗙爜鐣岄潰
+                EZSDK.IOS.EZSDK.SharedInstance().ToTemPassView(deviceId);
 #else
                 HDLEzvizSdk.Instance.JumpTempPasswordActivity(Application.Activity, deviceId); 
 #endif
@@ -250,7 +270,12 @@
         /// <param name="home">瀵硅薄</param>
         public void ChangeCurrHome(RegionInfoRes home)
         {
+            
             if (DB_ResidenceData.Instance.CurrentRegion.id == home.id || string.IsNullOrEmpty(home.id)) return;
+#if __IOS__
+#else
+                HDLEzvizSdk.Instance.SetHomeId(home.id);
+#endif
 
         }
         #endregion
@@ -458,29 +483,27 @@
         }
 
 #if __IOS__
-        ///// <summary>
-        ///// 涓撻棬瀹氫箟缁橧os鍥炶皟鐢ㄧ潃,娌℃湁鐗规畩鍚箟
-        ///// </summary>
-        //public class IosIHdlInterface : Shared.IOS.HDLLinphoneSDK.HDLLinphoneCallDelegate
-        //{
-
-        //    Action<bool, string> mAction;
-        //    public IosIHdlInterface(Action<bool, string> action)
-        //    {
-        //        mAction = action;
-        //    }
-        //    /// <summary>
-        //    /// 
-        //    /// </summary>
-        //    /// <param name="p0">true鏄叆缃戞垚鍔�(婧愮敓鍥炶皟杩斿洖)</param>
-        //    /// <param name="p1">璁惧鐨勫簭鍒楀寲(婧愮敓鍥炶皟杩斿洖)</param>
-        //    public void AddCallback(bool p0, string p1)
-        //    {
-        //        mAction?.Invoke(p0, p1);
-        //    }
-
-           
-        //}
+        IosIHdlInterface ezsdkDelegate;
+        /// <summary>
+        /// 涓撻棬瀹氫箟缁橧os鍥炶皟鐢ㄧ潃,娌℃湁鐗规畩鍚箟
+        /// </summary>
+        public class IosIHdlInterface : EZSDK.IOS.EZSDKDelegate
+        {
+          public  Action<string> mAction;
+            public IosIHdlInterface()
+            {
+             
+            }
+            /// <summary>
+            /// 
+            /// </summary>
+            /// <param name="p0">true鏄叆缃戞垚鍔�(婧愮敓鍥炶皟杩斿洖)</param>
+            /// <param name="p1">璁惧鐨勫簭鍒楀寲(婧愮敓鍥炶皟杩斿洖)</param>
+            public override void AddDeviceSuccessed(string deviceSerial)
+            {
+                mAction?.Invoke(deviceSerial);
+            }
+        }
 #else
         /// <summary>
         /// 涓撻棬瀹氫箟缁欏畨鍗撳洖璋冪敤鐫�,娌℃湁鐗规畩鍚箟
diff --git a/SiriIntents/SiriIntents.csproj b/SiriIntents/SiriIntents.csproj
index a36210c..c2bf1ca 100644
--- a/SiriIntents/SiriIntents.csproj
+++ b/SiriIntents/SiriIntents.csproj
@@ -79,6 +79,7 @@
     <MtouchArch>ARM64</MtouchArch>
     <MtouchHttpClientHandler>NSUrlSessionHandler</MtouchHttpClientHandler>
     <MtouchVerbosity></MtouchVerbosity>
+    <CodesignProvision>OnProSiri230308-2-Dev</CodesignProvision>
   </PropertyGroup>
   <ItemGroup>
     <Reference Include="System" />
diff --git a/SiriIntentsUI/SiriIntentsUI.csproj b/SiriIntentsUI/SiriIntentsUI.csproj
index da2da8b..a65fe33 100644
--- a/SiriIntentsUI/SiriIntentsUI.csproj
+++ b/SiriIntentsUI/SiriIntentsUI.csproj
@@ -83,6 +83,7 @@
     <MtouchHttpClientHandler>NSUrlSessionHandler</MtouchHttpClientHandler>
     <MtouchVerbosity></MtouchVerbosity>
     <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
+    <CodesignProvision>OnProSiriUI230308-2-Dev</CodesignProvision>
   </PropertyGroup>
   <ItemGroup>
     <Reference Include="System" />

--
Gitblit v1.8.0