tzy
2021-06-09 f5b46f80546aac860ade6e4c53821e43df833b39
Revert "Merge remote-tracking branch 'origin/wxr4' into dev-tzy"

This reverts commit 692a20fc80688bfa4b20eaca513470f2c3135ec9, reversing
changes made to 1c63243a7bcc330b7293cc8d5ec81c4c52018196.
3个文件已添加
53个文件已删除
80个文件已修改
6 文件已重命名
7596 ■■■■ 已修改文件
.vs/HDL_APP_Project/xs/UserPrefs.xml 67 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DLL/IOS/Shared.IOS.JLCountryCode.dll 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Language.ini 423 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Phone/FunctionIcon/ArmSensor/SomeoneFellBgIcon.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Phone/FunctionIcon/ArmSensor/SomeoneInBgIcon.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Phone/FunctionIcon/ArmSensor/UnderProtectionBgIcon.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Phone/FunctionIcon/Electrical/TV/TVOkIconDown.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Phone/FunctionIcon/Electrical/TV/TVOkIconLeft.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Phone/FunctionIcon/Electrical/TV/TVOkIconOk.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Phone/FunctionIcon/Electrical/TV/TVOkIconRight.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Phone/FunctionIcon/Electrical/TV/TVOkIconUp.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Phone/FunctionIcon/Electrical/TVIcon.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Phone/FunctionIcon/Energy/EnergyDrodUpIcon.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/irpjt_blue.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/irpjt_white.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/irstb_blue.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/irstb_white.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/irtvxm_blue.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/irtvxm_white.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/irpjt.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/irstb.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/irtvxm.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/sensormegahealth.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Phone/PersonalCenter/AddDevice/SenesorMegahealthBg.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Phone/Public/Scan.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/HDL-ON_Android.csproj 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Properties/AndroidManifest.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Resources/Resource.designer.cs 2004 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Resources/drawable/Loading.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Resources/mipmap-hdpi/Loading.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Resources/mipmap-mdpi/Loading.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Resources/mipmap-xhdpi/Loading.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Resources/mipmap-xxhdpi/Loading.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Resources/mipmap-xxxhdpi/Loading.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/HDL-ON_iOS.csproj 51 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/Info.plist 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/Resources/Language.ini 423 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/Resources/Phone/FunctionIcon/ArmSensor/SomeoneFellBgIcon.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/Resources/Phone/FunctionIcon/ArmSensor/SomeoneInBgIcon.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/Resources/Phone/FunctionIcon/ArmSensor/UnderProtectionBgIcon.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/TV/TVOkIconDown.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/TV/TVOkIconLeft.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/TV/TVOkIconOk.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/TV/TVOkIconRight.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/TV/TVOkIconUp.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/TVIcon.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/Resources/Phone/FunctionIcon/Energy/EnergyDrodUpIcon.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/irpjt_blue.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/irpjt_white.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/irstb_blue.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/irstb_white.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/irtvxm_blue.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/irtvxm_white.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/irpjt.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/irstb.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/irtvxm.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/sensormegahealth.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/Resources/Phone/PersonalCenter/AddDevice/SenesorMegahealthBg.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/Resources/Phone/Public/Scan.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/Common/HDLCommon.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/Common/R.cs 87 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/DAL/DriverLayer/Control.cs 109 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/DAL/DriverLayer/Control_Udp.cs 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/DAL/DriverLayer/UdpSocket.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/DAL/Mqtt/MqttClient.cs 40 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/DAL/Mqtt/MqttInfoConfig.cs 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/DAL/Server/HttpServerRequest.cs 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/DAL/Server/HttpUtil.cs 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/DAL/Server/NewAPI.cs 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/Entity/Function/Function.cs 67 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/Entity/Function/Scene.cs 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/Entity/FunctionList.cs 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/Entity/ResponseEntity/CityInfo.cs 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/HDL_ON.projitems 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/MainPage.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI0-Public/OperationSuccessPromptPage.cs 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI0-Public/PublicAssmebly.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI0-Public/PublicAssmeblyBLL.cs 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI0-Public/TopViewDiv.cs 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI0-Public/Widget/EmptyTipView.cs 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI0-Stan/Controls/BottomControls/BottomTimeSelectControl.cs 159 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI0-Stan/Form/DeviceFunctionCardCommonForm.cs 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI1-Login/ForgetPasswordPage.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI1-Login/LoginPage.cs 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI1-Login/RegisterPage.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/1-HomePage/HomePage.cs 191 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/1-HomePage/HomePageBLL.cs 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/2-Classification/ClassificationPage.cs 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/2-Classification/FunctionControlZoneBLL.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/2-Classification/RoomPage.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/3-Intelligence/Automation/AddInputType.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/3-Intelligence/Automation/AddTarget.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/3-Intelligence/Automation/ConditionDeviceFunList.cs 44 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/3-Intelligence/Automation/InpOrOutLogicMethod.cs 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/3-Intelligence/Automation/LogicMethod.cs 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/3-Intelligence/Automation/LogicView/LogicTypeTitleView.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/3-Intelligence/Automation/LogicView/TimeView.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/3-Intelligence/Automation/MainView.cs 72 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/3-Intelligence/Automation/Send.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/3-Intelligence/Automation/Weather.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/3-Intelligence/IntelligencePage.cs 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/AddMiniRemoteControlDirection1Page.cs 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/AddMiniRemoteControlDirection2Page.cs 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/AddMiniRemoteControlDirection3Page.cs 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/AddMiniRemoteControlDirection4Page.cs 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/AddThirdPartyDeviceMenuListPage.cs 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/SenesorMegahealth/AddSenesorMegahealthDirection1Page.cs 187 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/SenesorMegahealth/SenesorMegahealthManagerPage.cs 134 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/AddDevciePage.cs 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/DeviceListPage.cs 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/AddButton.cs 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/AddControl.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/AddControlComplete.cs 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/BrandList.cs 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/EditControl.cs 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/Matching.cs 264 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/Method.cs 101 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/PirMain.cs 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/PirSend.cs 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/SetPir.cs 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/View/Buttons.cs 23 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/View/PirView.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/AcControlPage.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/ArmSensor/SenesorMegahealthPage.cs 183 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/ArmSensor/SensorDoorWinwsPage.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/ArmSensor/SensorPirPage.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/ArmSensor/SensorSmokePage.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/ArmSensor/SensorWaterImmersionPage.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/Electrical/IrFanPage.cs 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/Electrical/PjtPage.cs 674 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/Electrical/StbPage.cs 637 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/Electrical/TVPageBLL.cs 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/Energy/EchartsOption_Energy.cs 150 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/Energy/EnergyMainPage.cs 516 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EchartsOption_BrokenLine.cs 140 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EnvironmentalPage.cs 62 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EnvironmentalSensorPage.cs 23 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/FoolHeating/FloorHeatingPage.cs 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/FunctionBaseInfoSetPage.cs 144 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/Video/VideoMainView.cs 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/Video/VideoMethod.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/Video/View/ShowDialog.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
.vs/HDL_APP_Project/xs/UserPrefs.xml
@@ -1,24 +1,61 @@
<Properties StartupConfiguration="{D998E133-F0DD-4760-BE3C-461632F54DA4}|Default">
  <MonoDevelop.Ide.ItemProperties.HDL-ON__iOS automaticSigning="False" PreferredExecutionTarget="MonoDevelop.IPhone.IPhoneDeviceTarget.6242be7109c740c6cb8999a8904b6e0ea8d45192" />
  <MonoDevelop.Ide.Workbench>
  <MonoDevelop.Ide.ItemProperties.HDL-ON__iOS PreferredExecutionTarget="MonoDevelop.IPhone.IPhoneDeviceTarget.00008020-000404163432002E" />
  <MonoDevelop.Ide.Workbench ActiveDocument="HDL_ON/Entity/Function/Scene.cs">
    <Files>
      <File FileName="HDL_ON/DAL/Server/HttpUtil.cs" Line="8" Column="17" IsPinned="True" />
      <File FileName="HDL_ON/UI/UI2/FuntionControlView/Energy/EnergyMainPage.cs" Line="153" Column="59" />
      <File FileName="HDL_ON/UI/UI1-Login/LoginPage.cs" />
      <File FileName="HDL_ON/UI/MainPage.cs" />
      <File FileName="HDL_ON/Common/HDLCommon.cs" />
      <File FileName="HDL_ON/DAL/Mqtt/MqttClient.cs" />
      <File FileName="HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EchartsOption_BrokenLine.cs" />
      <File FileName="HDL-ON_iOS/Info.plist" />
      <File FileName="HDL-ON_iOS/Resources/Language.ini" Line="421" Column="19" />
      <File FileName="HDL_ON/Common/R.cs" Line="118" Column="43" />
      <File FileName="HDL-ON_Android/Assets/Language.ini" Line="1928" Column="1" />
      <File FileName="HDL_ON/UI/UI2/FuntionControlView/Electrical/ClothesHangerSetTimePage.cs" Line="40" Column="1" IsPinned="True" />
      <File FileName="HDL_ON/UI/UI2/3-Intelligence/Scene/SceneAddPage.cs" Line="277" Column="68" />
      <File FileName="HDL_ON/UI/UI2/4-PersonalCenter/SmartSpeaker/SmartSpeakerRoomListPage.cs" Line="93" Column="73" />
      <File FileName="HDL_ON/UI/UI2/4-PersonalCenter/PersonalCenterPage.cs" Line="753" Column="70" />
      <File FileName="HDL_ON/DAL/Server/HttpServerRequest.cs" Line="2431" Column="16" />
      <File FileName="HDL_ON/UI/UI2/FuntionControlView/Electrical/ClothesHangerPage.cs" Line="414" Column="1" />
      <File FileName="HDL_ON/UI/UI2/1-HomePage/HomePage.cs" Line="364" Column="36" />
      <File FileName="HDL_ON/UI/UI0-Public/PublicAssmebly.cs" Line="746" Column="16" />
      <File FileName="HDL_ON/UI/UI0-Stan/Controls/BottomControls/BottomTimeSelectControl.cs" Line="111" Column="60" />
      <File FileName="HDL_ON/UI/UI2/3-Intelligence/Scene/SceneEditPage.cs" Line="292" Column="62" />
      <File FileName="HDL_ON/UI/UI2/3-Intelligence/Scene/SetSceneFunctionInfoPage.cs" Line="330" Column="87" />
      <File FileName="HDL_ON/Entity/Function/Scene.cs" Line="349" Column="30" />
    </Files>
    <Pads>
      <Pad Id="ProjectPad">
        <State name="__root__">
          <Node name="HDL_APP_Project" expanded="True">
            <Node name="HDL-ON_Android" selected="True" />
            <Node name="HDL_ON" expanded="True">
              <Node name="Common" expanded="True" />
              <Node name="DAL" expanded="True">
                <Node name="DriverLayer" expanded="True" />
                <Node name="Server" expanded="True" />
              </Node>
              <Node name="Entity" expanded="True">
                <Node name="Function" expanded="True">
                  <Node name="Scene.cs" selected="True" />
                </Node>
              </Node>
              <Node name="UI" expanded="True">
                <Node name="UI0-Public" expanded="True" />
                <Node name="UI0-Stan" expanded="True">
                  <Node name="Controls" expanded="True">
                    <Node name="BottomControls" expanded="True" />
                  </Node>
                  <Node name="Form" expanded="True">
                    <Node name="Base" expanded="True" />
                  </Node>
                </Node>
                <Node name="UI1-Login" expanded="True" />
                <Node name="UI2" expanded="True">
                  <Node name="1-HomePage" expanded="True" />
                  <Node name="3-Intelligence" expanded="True">
                    <Node name="Scene" expanded="True" />
                  </Node>
                  <Node name="FuntionControlView" expanded="True">
                    <Node name="1ContorlPage" expanded="True" />
                    <Node name="Electrical" expanded="True" />
                    <Node name="Energy" expanded="True" />
                  </Node>
                </Node>
              </Node>
            </Node>
            <Node name="HDL-ON_Android" expanded="True" />
            <Node name="HDL-ON_iOS" expanded="True" />
          </Node>
        </State>
      </Pad>
@@ -31,12 +68,10 @@
    <String>Shared.IOS/Shared.IOS.csproj</String>
  </DisabledProjects>
  <MonoDevelop.Ide.Workspace ActiveConfiguration="Debug|iPhone" />
  <MonoDevelop.Ide.ItemProperties.HDL-ON__Android PreferredExecutionTarget="Android.SelectDevice" />
  <MonoDevelop.Ide.DebuggingService.Breakpoints>
    <BreakpointStore>
      <Breakpoint file="/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/Method.cs" relfile="HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/Method.cs" line="34" column="1" />
      <Breakpoint file="/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/AcControlPage.cs" relfile="HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/AcControlPage.cs" line="313" column="1" />
      <Breakpoint file="/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/BindingResidence/BindingResidencePage.cs" relfile="HDL_ON/UI/BindingResidence/BindingResidencePage.cs" line="121" column="1" />
    </BreakpointStore>
  </MonoDevelop.Ide.DebuggingService.Breakpoints>
  <MultiItemStartupConfigurations />
DLL/IOS/Shared.IOS.JLCountryCode.dll
Binary files differ
HDL-ON_Android/Assets/Language.ini
@@ -70,14 +70,14 @@
69=All
70=Curtain
71=Name
72=Address
72=The address of the residence
73=Floor Management
74=Room Management
75=Administrator migration
75=Admin Migration
76=Privilege Migration
77=Debugging privilege
78=The administrator is migrated to other user.
79=All of the data for the residence is migrated to new user.
79=All residence data are migrated to new user.
80=Allow the staff to visit your home remotely
81=Floor
82=Add floor
@@ -188,8 +188,8 @@
187=Fan
188=Socket
189=Level
190=Chl
191=Vol
190=Channel
191=Volume
192=TV
193=The room has existed, fail to change.
194=Environment
@@ -382,7 +382,6 @@
378=Transition time
379=Transition speed
380=This function is not available!
381=Reload
400=Welcome home
401=Invalid barcode, please try again
402=Try again
@@ -412,6 +411,8 @@
426=Air dry time
427=Disinfect time
428=Anion Time
429=Real time power consumption: {0}kw
429=H
430=Min
431=You are currently adding any platform devices to
@@ -422,7 +423,7 @@
436=Added Devices
437=Device List
438=humidity:{0}%    air:{1}    wind:{2}
439=Real time: {0} kw
439=Real time power consumption: {0} kw
440=Next step
441=Please select all areas of capture status
442=Generate Scene
@@ -439,25 +440,7 @@
453=Alarm mute
454=Deployment information
455=The name can not be blank.
456=Canvas
457=Energy consumption
458=Date
459=Real time energy consumption
460=Energy consumption of this month
461=Outdoor/Indoor
462=You haven't added any devices yet
'
463=Please input the SN code of the device
464=Can start using Zhaoguan millimeter wave
465=Delete device
466=STB
467=Projector
468=Someone fell
469=Someone's in
'
470=Under protection
471=Millimeter wave sensor
1000=Room Humidity
1001=V-chip
1002=Anion
@@ -546,31 +529,79 @@
1084=1st Gear
1085=2nd Gear
1086=3rd Gear
4000=Video intercom
4001=Call record
4002=*Cloud photos are only kept for 30 days
4003=Door phone call
4004=Answered
4005=Unlocked
4006=year
4007=From
4008=Call
4009=Unlocked
4010=Missed
4011=Rejected
4012=The configuration parameters are abnormal!
4013=Access Control QR Code
4014=Temporary password
1087=Unlock
1088=Temp. Password
1089=Connected
1090=Disconnected
1091=Generate
1092=Effective time
1093=Expire time
1094=Select time
1095=Select Date
1096=Generate
1097=Temporary password has been copied
1098=Clear Password?
1099=The expire time must be later than the effective time
1100=Unlock Method
1101=It'll synchronize with actual lock, confirm to delete?
1102=Delete
1103=Remark
1104=The remark can not be blank.
1105=Assign to
1106=Target Scene Not Exist
1107=Select Scene
1108=Unlock
1109=Always On
1110=Setting
1111=Automation
1112=Turn on "Always On" Mode
1113=Turn off "Always On" Mode
1114=Edit
1115=Always On will be off at {0}
1116=Condition
1117=Motion
1118=Always On
1119=Lock
1120=User
1121=Unlock Method
1122=Fingerprint
1123=Card
1124=Key
1125=Information
1126=Unlock
1127=Alarm
1128=Offline
1129=For first user, Please bind lock password
1130=Please enter admin password
1131=Bind Successfully
1132=Skip to personal password for unlock
1133=Skip
1134=Please draw your pattern
1135=Lock will be always on after setting, confirm to proceed
1136=Confirm
1137=Expire
1138=Always On will expire after {0} hours
1139=Please enter expire time
1140=Expire time should not be more than 72 hours
1141=Expire time should not be less than 1 hour
1142=Fail to set, please try again
1143=Fail to verify administrator ID, please log in again account
1144=Your residence is being migrated to other HDL
1145=Note:
1146=1. All of your residence data will be migrate to new user.{0}2. After migration, original member will be{0}automatically unbound from this residence.{0}3. The new account is a valid HDL one.{0}4. The account from receiver cannot be the same{0}as that from migration side.
1147=Confirm
1148=Input receiver's account
1149=Profile
1150=Confirm admin migration from {0} to {1}
1151=The account does not exist.
1152=Fail to Transfer Ownership to Yourself
1153=Terminate
1154=Transferring to User, Please Wait…
1155={0} has become a residential administrator
1156=The residence data will be deleted from your account
1157=Fail to transfer
1158=Please try again
5000=Music
5001=Group
5002=Setting
@@ -619,148 +650,8 @@
5045=General volume
5046=Adjust volume
5047="QQ music" has not installed in your cell phone, please proceed in App center.
6000=normal
6001=Device status
6002=pcs
6003=Current IR control device
6004=Remote controller has been added
6005=AC
6006=TV
6007=Fan
6008=Set-top box
6009=DVD
6010=Projector
6011=Custom
6012=IR control
6013=Device Management
6014=Add remote controller
6015=Online
6016=Offline
6017=Version number
6018=Please enter the name of the remote controller
6019=Reminder: After the remote controller is created, it can be found and used in Function-Electrical Category{\r\n}
6020=Recommended button
6021=Please enter the button name
6022=Next
6023=Power
6024=Volume+
6025=Volume-
6026=channel+
6027=Channel-
6028=up
6029=down
6030=Left
6031=right
6032=Mute
6034=Confirm
6035=Play
6037=Exit
6038=Menu
6039=Pause
6040=Back
6041=Stop
6042=Homepage
6043=Fast forward
6044=Rewind
6045=Timing
6046=Copy remote control function
6047=Aim at the center of the remote controller and press the same button
6048=Smart remote controller
6049=Add button
6050=*Long press for custom sorting
6051=Done
6052=Added successfully
6053=Can be classified-function-electrical operation and use
6054=Classification
6055=Remote controller name
6056=Region
6057=Continue to add
6058=Electrical
6059=Failed to add
6060=Retry
6061=Match the remote control
6062=Please click the button below
6063=Confirm whether the device is responding
6064=Control failed
6065=Control success
6066=Power on
6067=Mode cooling
6068=Wind speed stroke
6069=Temperature 26℃
6070=Delete device
6071=Modify name
6072=Confirm deletion
6073=Cancel
6074=The remote controller cannot exceed 10 pcs
6075=The area where the remote control belongs:
6076=Edit information
6077=Version upgrade
6078=System is under maintenance~Please try again later~
6079=Failed to get data
6080=This function is temporarily not supported
6081=Select IR brand
6082=Shaking
6083=Low speed
6084=Medium speed
6085=High speed
6086=Auto
6087=Temperature+
6088=Temperature-
6089=Air purifier
6090=Water heater
6091=Product that does not exist
6092=The device does not exist
6093=The device is not online
6094=The gateway device does not exist
7108=Leak/No Leak
7109=Leak
7110=No leak
7111=Water leaking/no water leaking
7112=Water leaking
7113=No water leaking
7114=Someone/Nobody
7115=Someone
7116=Nobody
7117=Open/Close
7118=On
7119=Close
7120=Anti-dismantling function
7121=Online
7122=Not online
7123=Air quality
7124=Excellent
7125=Good
7126=Poor
7127=Send notification
7128=Notification content
7129=(within 100 characters)
7130=Account selection
7131=App push
7132=Automation
7133=Executed
6000=Rename
6001=Please enter a name
6002=Xiaodu
6003=aispeech
6004="Unbind requires a third-party APP for operation", "transfer to a third-party APP"
6005=Unbind
6006=Smart speaker
6007=Control content
6008=Failed to upload data
6009=Failed to configure data
6010="There is no speaker yet,", "Please go to the third-party APP to bind the smart speaker."
6011=Modification of remarks is unsuccessful!
6012=Do you want to unbind?
6013=Unbinding...
6014=transfer to third-party APP
6015=Add speakers
7000=Create automation
7001=Edit automation
7002=If
@@ -869,7 +760,7 @@
7105=Light pollution: 75 ~ 115ug/m3
7106=Moderate pollution: 115 ~ 150ug/m3
7107=Heavy pollution: > 150ug/m3
9000=Please sign in with new cell phone number.
9001=Please sign in with new email address.
9002=New cell phone number is revised.
@@ -940,7 +831,7 @@
9066=Remarks
9067=Remarks cannot be blank.
9068=Do you want to unbind?
10000=Invalid password, please log in again.
10001=Fail to request server, please try again later.
10002=System maintaining, please try again later.
@@ -975,9 +866,9 @@
10031=The device should not be blank.
10032=The user does not have permission.
10033=The device does not exist.
[Chinese]
1=登录
2=手机号登录
@@ -1369,7 +1260,7 @@
406=会客
407=阅读
408=确认添加
409=功能品牌
410=你当前还未添加任何平台设备
411=其他平台设备均由第三方服务商提供支持
@@ -1417,24 +1308,8 @@
453=报警静音
454=布防信息
455=名称不能为空。
456=画布
457=能耗
458=日期
459=实时能耗
460=本月能耗
461=室外/室内
462=您当前还未添加任何设备
463=请输入设备机上的sn码
464=可以开始使用兆观毫米波了
465=删除设备
466=机顶盒
467=投影仪
468=有人跌倒
469=有人进入
470=防护中
471=毫米波传感器
1000=室内湿度
1001=童锁
1002=负离子
@@ -1522,8 +1397,86 @@
1084=风速1档
1085=风速2档
1086=风速3档
1087=一键开锁
1087=Unlock
1088=临时密码开锁
1088=Temp. Password
1089=已连接
1089=Connected
1090=未连接
1090=Disconnected
1091=生成临时密码
1091=Generate
1092=生效时间
1092=Effective time
1093=失效时间
1093=
1094=选择时间
1095=选择日期
1096=Generate
1097=临时密码已经复制
1098=清除当前临时密码?
1099=生效时间必须大于失效时间
1100=开锁方式管理
1101=删除操作将被同步于实体锁上{0}是否还需要删除?
1102=确认删除
1103=修改备注名称
1104=备注名称不能为空
1105=分配至
1106=检测不到可供选择的场景
1107=选择场景
1108=锁已打开
1109=常开
1110=时效性常开设置
1111=常开自动化
1112=打开常开模式
1113=关闭常开模式
1114=编辑
1115=常开模式将于{0}关闭
1116=条件
1117=动作
1118=常开模式
1119=锁
1120=用户
1121=开锁方式
1122=指纹
1123=卡
1124=钥匙
1125=信息类型
1126=开锁信息
1127=报警类信息
1128=设备不在线
1129=第一次使用,请先绑定门锁密码
1130=请输入门锁管理员密码
1131=门锁绑定成功
1132=为了安全,请跳转至个人中心{0}设置个人密码,并应用于门锁开锁
1133=跳转
1134=请绘制图案
1135=设置常开模式后{0}您的门锁将处于打开状态{0}是否继续开启
1136=确认开启
1137=失效设置
1138=常开模式将于{0}小时后失效
1139=请输入失效时间
1140=失效时间不能大于72小时
1141=失效时间不能小于1小时
1142=常开模式关闭设置失效,请重试
1143=管理员身份验证失败,请重新登录
1144=您的住宅将过户给其他HDL账号
1145=请注意:
1146=1.该住宅您的数据(云端数据)将全部转移给新的户主{0}2.过户后,原有的成员将自动解绑该住宅{0}3.新户主账号为有效的HDL账号{0}4.接收方账号与转移方账号不可为同一个账号
1147=确认过户
1148=请输入接收方账号
1149=个人资料
1150=确认过户{0}的管理员账号给账号{1}
1151=目标账号并不存在
1152=不能自己过户给自己
1153=终止
1154=正在过户给用户,请稍后...
1155=用户{0}已经成为住宅行管理员
1156=该住宅的信息将在您的账号中删除
1157=过户失败
1158=请重新尝试
4000=可视对讲
4001=通话记录
4002=*云端照片只保留30天
@@ -1539,7 +1492,7 @@
4012=配置参数有异常!
4013=门禁二维码
4014=临时密码
5000=音乐
5001=组合
5002=设置
@@ -1588,8 +1541,8 @@
5045=总音量
5046=调节音量
5047=你手机暂未安装"QQ音乐"{\r\n}请前往手机商场安装
6000=正常
6001=设备状态
6002=个
@@ -1599,7 +1552,7 @@
6006=电视
6007=风扇
6008=机顶盒
6009=DVD
6009=DVD/EVD/VCD
6010=投影仪
6011=自定义
6012=红外遥控
@@ -1669,23 +1622,7 @@
6078=系统维护中~请稍后再试~
6079=获取数据失败
6080=暂时不支持该功能
6081=选择红外品牌
6082=摇头
6083=低速
6084=中速
6085=高速
6086=自动
6087=温度+
6088=温度-
6089=空气净化器
6090=热水器
6091=不存在的产品
6092=设备不存在
6093=设备不在线
6094=网关设备不存在
7000=新建自动化
7001=编辑自动化
7002=如果
@@ -1820,7 +1757,7 @@
7131=App推送
7132=自动化
7133=已执行
9000=请使用新的手机账号登录APP
9001=请使用新的邮箱账号登录APP
9002=登录手机修改完成
@@ -1890,7 +1827,7 @@
9066=备注
9067=备注不能为空
9068=是否解除绑定?
10000=无效登录密钥,请重新登录!
10001=请求服务器失败,请稍后再试!
10002=系统维护中,请稍后再试!
@@ -1924,4 +1861,4 @@
10030=没有远程控制权限
10031=设备不能为空
10032=用户没有设备的权限
10033=设备不存在
10033=设备不存在
HDL-ON_Android/Assets/Phone/FunctionIcon/ArmSensor/SomeoneFellBgIcon.png
Binary files differ
HDL-ON_Android/Assets/Phone/FunctionIcon/ArmSensor/SomeoneInBgIcon.png
Binary files differ
HDL-ON_Android/Assets/Phone/FunctionIcon/ArmSensor/UnderProtectionBgIcon.png
Binary files differ
HDL-ON_Android/Assets/Phone/FunctionIcon/Electrical/TV/TVOkIconDown.png
Binary files differ
HDL-ON_Android/Assets/Phone/FunctionIcon/Electrical/TV/TVOkIconLeft.png
Binary files differ
HDL-ON_Android/Assets/Phone/FunctionIcon/Electrical/TV/TVOkIconOk.png
Binary files differ
HDL-ON_Android/Assets/Phone/FunctionIcon/Electrical/TV/TVOkIconRight.png
Binary files differ
HDL-ON_Android/Assets/Phone/FunctionIcon/Electrical/TV/TVOkIconUp.png
Binary files differ
HDL-ON_Android/Assets/Phone/FunctionIcon/Electrical/TVIcon.png
HDL-ON_Android/Assets/Phone/FunctionIcon/Energy/EnergyDrodUpIcon.png
Binary files differ
HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/irpjt_blue.png
Binary files differ
HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/irpjt_white.png
Binary files differ
HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/irstb_blue.png
Binary files differ
HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/irstb_white.png
Binary files differ
HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/irtvxm_blue.png
Binary files differ
HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/irtvxm_white.png
Binary files differ
HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/irpjt.png
Binary files differ
HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/irstb.png
Binary files differ
HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/irtvxm.png
Binary files differ
HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/sensormegahealth.png
Binary files differ
HDL-ON_Android/Assets/Phone/PersonalCenter/AddDevice/SenesorMegahealthBg.png
Binary files differ
HDL-ON_Android/Assets/Phone/Public/Scan.png
Binary files differ
HDL-ON_Android/HDL-ON_Android.csproj
@@ -33,7 +33,7 @@
    <DefineConstants>DEBUG;TRACE;__Android__</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
    <EmbedAssembliesIntoApk>true</EmbedAssembliesIntoApk>
    <EmbedAssembliesIntoApk>False</EmbedAssembliesIntoApk>
    <MandroidI18n>cjk</MandroidI18n>
    <AndroidDexTool>d8</AndroidDexTool>
    <AndroidEnableSGenConcurrent>false</AndroidEnableSGenConcurrent>
@@ -377,26 +377,6 @@
      <SubType></SubType>
      <Generator></Generator>
    </AndroidResource>
    <AndroidResource Include="Resources\mipmap-xhdpi\Loading.png">
      <SubType></SubType>
      <Generator></Generator>
    </AndroidResource>
    <AndroidResource Include="Resources\mipmap-hdpi\Loading.png">
      <SubType></SubType>
      <Generator></Generator>
    </AndroidResource>
    <AndroidResource Include="Resources\mipmap-mdpi\Loading.png">
      <SubType></SubType>
      <Generator></Generator>
    </AndroidResource>
    <AndroidResource Include="Resources\mipmap-xxhdpi\Loading.png">
      <SubType></SubType>
      <Generator></Generator>
    </AndroidResource>
    <AndroidResource Include="Resources\mipmap-xxxhdpi\Loading.png">
      <SubType></SubType>
      <Generator></Generator>
    </AndroidResource>
  </ItemGroup>
  <ItemGroup>
    <AndroidAsset Include="Assets\Phone\Public\MsgIcon\TipSuccessIcon.png" />
@@ -585,6 +565,7 @@
    <AndroidAsset Include="Assets\Phone\FunctionIcon\Music\MusicIcon.png" />
    <AndroidAsset Include="Assets\Phone\FunctionIcon\Music\MusicOnIcon.png" />
    <AndroidAsset Include="Assets\Phone\FunctionIcon\Electrical\FanIconBg.png" />
    <AndroidAsset Include="Assets\Phone\FunctionIcon\Electrical\TVIcon.png" />
    <AndroidAsset Include="Assets\Phone\FunctionIcon\Electrical\FanThinIcon.png" />
    <AndroidAsset Include="Assets\Phone\FunctionIcon\Electrical\FanIcon.png" />
    <AndroidAsset Include="Assets\Phone\FunctionIcon\Electrical\FanIconOnBg.png" />
@@ -1186,27 +1167,6 @@
    <AndroidAsset Include="Assets\Phone\FunctionIcon\Curtain\CurtainUpIcon.png" />
    <AndroidAsset Include="Assets\Phone\FunctionIcon\Curtain\CurtainUpIconOn.png" />
    <AndroidAsset Include="Assets\Phone\PersonalCenter\SmartSpeaker.png" />
    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\irpjt.png" />
    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\irstb.png" />
    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\HomeIcon\irpjt_blue.png" />
    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\HomeIcon\irpjt_white.png" />
    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\HomeIcon\irstb_blue.png" />
    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\HomeIcon\irstb_white.png" />
    <AndroidAsset Include="Assets\Phone\FunctionIcon\Energy\EnergyDrodUpIcon.png" />
    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\sensormegahealth.png" />
    <AndroidAsset Include="Assets\Phone\FunctionIcon\Electrical\TV\TVOkIconDown.png" />
    <AndroidAsset Include="Assets\Phone\FunctionIcon\Electrical\TV\TVOkIconLeft.png" />
    <AndroidAsset Include="Assets\Phone\FunctionIcon\Electrical\TV\TVOkIconRight.png" />
    <AndroidAsset Include="Assets\Phone\FunctionIcon\Electrical\TV\TVOkIconUp.png" />
    <AndroidAsset Include="Assets\Phone\FunctionIcon\Electrical\TV\TVOkIconOk.png" />
    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\irtvxm.png" />
    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\HomeIcon\irtvxm_blue.png" />
    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\HomeIcon\irtvxm_white.png" />
    <AndroidAsset Include="Assets\Phone\PersonalCenter\AddDevice\SenesorMegahealthBg.png" />
    <AndroidAsset Include="Assets\Phone\Public\Scan.png" />
    <AndroidAsset Include="Assets\Phone\FunctionIcon\ArmSensor\SomeoneFellBgIcon.png" />
    <AndroidAsset Include="Assets\Phone\FunctionIcon\ArmSensor\SomeoneInBgIcon.png" />
    <AndroidAsset Include="Assets\Phone\FunctionIcon\ArmSensor\UnderProtectionBgIcon.png" />
  </ItemGroup>
  <ItemGroup>
    <AndroidNativeLibrary Include="libs\armeabi-v7a\libelianjni.so" />
HDL-ON_Android/Properties/AndroidManifest.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="202106081" android:versionName="1.2.202106081" package="com.hdl.onpro">
    <uses-sdk android:minSdkVersion="23" android:targetSdkVersion="29" />
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="202104282" android:versionName="1.2.202104282" package="com.hdl.onpro">
    <uses-sdk android:minSdkVersion="26" android:targetSdkVersion="29" />
    <!--  可视对讲权限-->
    <uses-permission android:name="android.permission.CAMERA" />
    <uses-feature android:name="android.hardware.camera" />
HDL-ON_Android/Resources/Resource.designer.cs
@@ -5120,1615 +5120,1612 @@
            public const int label_bg_sel = 2131231231;
            
            // aapt resource value: 0x7F080200
            public const int launchImage = 2131231232;
            public const int leave_message_play = 2131231232;
            
            // aapt resource value: 0x7F080201
            public const int leave_message_play = 2131231233;
            public const int leave_message_play_sel = 2131231233;
            
            // aapt resource value: 0x7F080202
            public const int leave_message_play_sel = 2131231234;
            public const int leave_message_play_selector = 2131231234;
            
            // aapt resource value: 0x7F080203
            public const int leave_message_play_selector = 2131231235;
            public const int left_horizontal = 2131231235;
            
            // aapt resource value: 0x7F080204
            public const int left_horizontal = 2131231236;
            public const int left_twinkle = 2131231236;
            
            // aapt resource value: 0x7F080205
            public const int left_twinkle = 2131231237;
            public const int link_account1 = 2131231237;
            
            // aapt resource value: 0x7F080206
            public const int link_account1 = 2131231238;
            public const int link_account2 = 2131231238;
            
            // aapt resource value: 0x7F080207
            public const int link_account2 = 2131231239;
            public const int link_account3 = 2131231239;
            
            // aapt resource value: 0x7F080208
            public const int link_account3 = 2131231240;
            // aapt resource value: 0x7F080209
            public const int link_account4 = 2131231241;
            // aapt resource value: 0x7F08020B
            public const int Loading = 2131231243;
            public const int link_account4 = 2131231240;
            
            // aapt resource value: 0x7F08020A
            public const int load_failed_bg = 2131231242;
            public const int Loading = 2131231242;
            // aapt resource value: 0x7F080209
            public const int load_failed_bg = 2131231241;
            // aapt resource value: 0x7F08020B
            public const int lock_bg = 2131231243;
            
            // aapt resource value: 0x7F08020C
            public const int lock_bg = 2131231244;
            public const int login_btn_selector = 2131231244;
            
            // aapt resource value: 0x7F08020D
            public const int login_btn_selector = 2131231245;
            public const int login_logo = 2131231245;
            
            // aapt resource value: 0x7F08020E
            public const int login_logo = 2131231246;
            public const int login_logo_button = 2131231246;
            
            // aapt resource value: 0x7F08020F
            public const int login_logo_button = 2131231247;
            public const int login_logo_button_sel = 2131231247;
            
            // aapt resource value: 0x7F080210
            public const int login_logo_button_sel = 2131231248;
            public const int logo_loading_1 = 2131231248;
            
            // aapt resource value: 0x7F080211
            public const int logo_loading_1 = 2131231249;
            public const int logo_loading_2 = 2131231249;
            
            // aapt resource value: 0x7F080212
            public const int logo_loading_2 = 2131231250;
            public const int logo_loading_3 = 2131231250;
            
            // aapt resource value: 0x7F080213
            public const int logo_loading_3 = 2131231251;
            public const int logo_loading_4 = 2131231251;
            
            // aapt resource value: 0x7F080214
            public const int logo_loading_4 = 2131231252;
            public const int mesage_details_callhelp = 2131231252;
            
            // aapt resource value: 0x7F080215
            public const int mesage_details_callhelp = 2131231253;
            public const int mesage_details_curtain = 2131231253;
            
            // aapt resource value: 0x7F080216
            public const int mesage_details_curtain = 2131231254;
            public const int mesage_details_data = 2131231254;
            
            // aapt resource value: 0x7F080217
            public const int mesage_details_data = 2131231255;
            public const int mesage_details_door = 2131231255;
            
            // aapt resource value: 0x7F080218
            public const int mesage_details_door = 2131231256;
            public const int mesage_details_gas = 2131231256;
            
            // aapt resource value: 0x7F080219
            public const int mesage_details_gas = 2131231257;
            public const int mesage_details_hdd = 2131231257;
            
            // aapt resource value: 0x7F08021A
            public const int mesage_details_hdd = 2131231258;
            public const int mesage_details_infrared = 2131231258;
            
            // aapt resource value: 0x7F08021B
            public const int mesage_details_infrared = 2131231259;
            public const int mesage_details_keyboard = 2131231259;
            
            // aapt resource value: 0x7F08021C
            public const int mesage_details_keyboard = 2131231260;
            public const int mesage_details_loss = 2131231260;
            
            // aapt resource value: 0x7F08021D
            public const int mesage_details_loss = 2131231261;
            public const int mesage_details_low_battery = 2131231261;
            
            // aapt resource value: 0x7F08021E
            public const int mesage_details_low_battery = 2131231262;
            public const int mesage_details_offline = 2131231262;
            
            // aapt resource value: 0x7F08021F
            public const int mesage_details_offline = 2131231263;
            public const int mesage_details_power = 2131231263;
            
            // aapt resource value: 0x7F080220
            public const int mesage_details_power = 2131231264;
            public const int mesage_details_smoke = 2131231264;
            
            // aapt resource value: 0x7F080221
            public const int mesage_details_smoke = 2131231265;
            public const int mesage_details_tampering = 2131231265;
            
            // aapt resource value: 0x7F080222
            public const int mesage_details_tampering = 2131231266;
            public const int mesage_details_video_loss = 2131231266;
            
            // aapt resource value: 0x7F080223
            public const int mesage_details_video_loss = 2131231267;
            public const int mesage_details_water = 2131231267;
            
            // aapt resource value: 0x7F080224
            public const int mesage_details_water = 2131231268;
            public const int message = 2131231268;
            
            // aapt resource value: 0x7F080225
            public const int message = 2131231269;
            public const int message_a1_bg = 2131231269;
            
            // aapt resource value: 0x7F080226
            public const int message_a1_bg = 2131231270;
            public const int message_back = 2131231270;
            
            // aapt resource value: 0x7F080227
            public const int message_back = 2131231271;
            public const int message_back_sel = 2131231271;
            
            // aapt resource value: 0x7F080228
            public const int message_back_sel = 2131231272;
            public const int message_back_selector = 2131231272;
            
            // aapt resource value: 0x7F080229
            public const int message_back_selector = 2131231273;
            public const int message_border_bg = 2131231273;
            
            // aapt resource value: 0x7F08022A
            public const int message_border_bg = 2131231274;
            public const int message_callhelp = 2131231274;
            
            // aapt resource value: 0x7F08022B
            public const int message_callhelp = 2131231275;
            public const int message_curtain = 2131231275;
            
            // aapt resource value: 0x7F08022C
            public const int message_curtain = 2131231276;
            public const int message_data = 2131231276;
            
            // aapt resource value: 0x7F08022D
            public const int message_data = 2131231277;
            public const int message_door = 2131231277;
            
            // aapt resource value: 0x7F08022E
            public const int message_door = 2131231278;
            public const int message_gas = 2131231278;
            
            // aapt resource value: 0x7F08022F
            public const int message_gas = 2131231279;
            public const int message_hdd = 2131231279;
            
            // aapt resource value: 0x7F080230
            public const int message_hdd = 2131231280;
            public const int message_infrared = 2131231280;
            
            // aapt resource value: 0x7F080231
            public const int message_infrared = 2131231281;
            public const int message_item_bg_selector = 2131231281;
            
            // aapt resource value: 0x7F080232
            public const int message_item_bg_selector = 2131231282;
            public const int message_keyboard = 2131231282;
            
            // aapt resource value: 0x7F080233
            public const int message_keyboard = 2131231283;
            public const int message_loss = 2131231283;
            
            // aapt resource value: 0x7F080234
            public const int message_loss = 2131231284;
            public const int message_low_battery = 2131231284;
            
            // aapt resource value: 0x7F080235
            public const int message_low_battery = 2131231285;
            public const int message_move_magnetometer = 2131231285;
            
            // aapt resource value: 0x7F080236
            public const int message_move_magnetometer = 2131231286;
            public const int message_offline = 2131231286;
            
            // aapt resource value: 0x7F080237
            public const int message_offline = 2131231287;
            public const int message_play = 2131231287;
            
            // aapt resource value: 0x7F080238
            public const int message_play = 2131231288;
            public const int message_play_dis = 2131231288;
            
            // aapt resource value: 0x7F080239
            public const int message_play_dis = 2131231289;
            public const int message_play_sel = 2131231289;
            
            // aapt resource value: 0x7F08023A
            public const int message_play_sel = 2131231290;
            public const int message_play_selector = 2131231290;
            
            // aapt resource value: 0x7F08023B
            public const int message_play_selector = 2131231291;
            public const int message_power = 2131231291;
            
            // aapt resource value: 0x7F08023C
            public const int message_power = 2131231292;
            public const int message_sel = 2131231292;
            
            // aapt resource value: 0x7F08023D
            public const int message_sel = 2131231293;
            public const int message_smoke = 2131231293;
            
            // aapt resource value: 0x7F08023E
            public const int message_smoke = 2131231294;
            public const int message_tampering = 2131231294;
            
            // aapt resource value: 0x7F08023F
            public const int message_tampering = 2131231295;
            public const int message_video = 2131231295;
            
            // aapt resource value: 0x7F080240
            public const int message_video = 2131231296;
            public const int message_video_dis = 2131231296;
            
            // aapt resource value: 0x7F080241
            public const int message_video_dis = 2131231297;
            public const int message_video_loss = 2131231297;
            
            // aapt resource value: 0x7F080242
            public const int message_video_loss = 2131231298;
            public const int message_video_sel = 2131231298;
            
            // aapt resource value: 0x7F080243
            public const int message_video_sel = 2131231299;
            public const int message_video_selector = 2131231299;
            
            // aapt resource value: 0x7F080244
            public const int message_video_selector = 2131231300;
            public const int message_water = 2131231300;
            
            // aapt resource value: 0x7F080245
            public const int message_water = 2131231301;
            public const int mic = 2131231301;
            
            // aapt resource value: 0x7F080246
            public const int mic = 2131231302;
            public const int mm_trans = 2131231302;
            
            // aapt resource value: 0x7F080247
            public const int mm_trans = 2131231303;
            public const int more = 2131231303;
            
            // aapt resource value: 0x7F080248
            public const int more = 2131231304;
            public const int my_5k_vr = 2131231304;
            
            // aapt resource value: 0x7F080249
            public const int my_5k_vr = 2131231305;
            public const int my_5k_vr116 = 2131231305;
            
            // aapt resource value: 0x7F08024A
            public const int my_5k_vr116 = 2131231306;
            public const int my_a1 = 2131231306;
            
            // aapt resource value: 0x7F08024B
            public const int my_a1 = 2131231307;
            public const int my_a1c = 2131231307;
            
            // aapt resource value: 0x7F08024C
            public const int my_a1c = 2131231308;
            public const int my_a1s = 2131231308;
            
            // aapt resource value: 0x7F08024D
            public const int my_a1s = 2131231309;
            public const int my_add = 2131231309;
            
            // aapt resource value: 0x7F08024E
            public const int my_add = 2131231310;
            public const int my_c6p = 2131231310;
            
            // aapt resource value: 0x7F08024F
            public const int my_c6p = 2131231311;
            public const int my_c6t = 2131231311;
            
            // aapt resource value: 0x7F080250
            public const int my_c6t = 2131231312;
            public const int my_cover = 2131231312;
            
            // aapt resource value: 0x7F080251
            public const int my_cover = 2131231313;
            public const int my_cover620 = 2131231313;
            
            // aapt resource value: 0x7F080252
            public const int my_cover620 = 2131231314;
            public const int my_db1 = 2131231314;
            
            // aapt resource value: 0x7F080253
            public const int my_db1 = 2131231315;
            public const int my_doorbell = 2131231315;
            
            // aapt resource value: 0x7F080254
            public const int my_doorbell = 2131231316;
            public const int my_doorbell_hik = 2131231316;
            
            // aapt resource value: 0x7F080255
            public const int my_doorbell_hik = 2131231317;
            public const int my_n1 = 2131231317;
            
            // aapt resource value: 0x7F080256
            public const int my_n1 = 2131231318;
            public const int my_no_video = 2131231318;
            
            // aapt resource value: 0x7F080257
            public const int my_no_video = 2131231319;
            public const int my_progress_drawable = 2131231319;
            
            // aapt resource value: 0x7F080258
            public const int my_progress_drawable = 2131231320;
            public const int my_r1 = 2131231320;
            
            // aapt resource value: 0x7F080259
            public const int my_r1 = 2131231321;
            public const int my_r2 = 2131231321;
            
            // aapt resource value: 0x7F08025A
            public const int my_r2 = 2131231322;
            public const int my_shoping = 2131231322;
            
            // aapt resource value: 0x7F08025B
            public const int my_shoping = 2131231323;
            public const int my_switch_off = 2131231323;
            
            // aapt resource value: 0x7F08025C
            public const int my_switch_off = 2131231324;
            public const int my_switch_on = 2131231324;
            
            // aapt resource value: 0x7F08025D
            public const int my_switch_on = 2131231325;
            public const int my_switch_selector = 2131231325;
            
            // aapt resource value: 0x7F08025E
            public const int my_switch_selector = 2131231326;
            public const int my_vr104d = 2131231326;
            
            // aapt resource value: 0x7F08025F
            public const int my_vr104d = 2131231327;
            public const int my_w1 = 2131231327;
            
            // aapt resource value: 0x7F080260
            public const int my_w1 = 2131231328;
            public const int my_w2d = 2131231328;
            
            // aapt resource value: 0x7F080261
            public const int my_w2d = 2131231329;
            public const int my_w2s = 2131231329;
            
            // aapt resource value: 0x7F080262
            public const int my_w2s = 2131231330;
            public const int my_w3 = 2131231330;
            
            // aapt resource value: 0x7F080263
            public const int my_w3 = 2131231331;
            public const int my_wlb = 2131231331;
            
            // aapt resource value: 0x7F080264
            public const int my_wlb = 2131231332;
            public const int my_x1 = 2131231332;
            
            // aapt resource value: 0x7F080265
            public const int my_x1 = 2131231333;
            public const int my_x2 = 2131231333;
            
            // aapt resource value: 0x7F080266
            public const int my_x2 = 2131231334;
            public const int my_x3 = 2131231334;
            
            // aapt resource value: 0x7F080267
            public const int my_x3 = 2131231335;
            public const int my_x3c = 2131231335;
            
            // aapt resource value: 0x7F080268
            public const int my_x3c = 2131231336;
            public const int my_x4 = 2131231336;
            
            // aapt resource value: 0x7F080269
            public const int my_x4 = 2131231337;
            public const int my_x5c = 2131231337;
            
            // aapt resource value: 0x7F08026A
            public const int my_x5c = 2131231338;
            public const int name_del = 2131231338;
            
            // aapt resource value: 0x7F08026B
            public const int name_del = 2131231339;
            public const int name_del_sel = 2131231339;
            
            // aapt resource value: 0x7F08026C
            public const int name_del_sel = 2131231340;
            public const int name_del_selector = 2131231340;
            
            // aapt resource value: 0x7F08026D
            public const int name_del_selector = 2131231341;
            // aapt resource value: 0x7F08026E
            public const int navigation_empty_icon = 2131231342;
            // aapt resource value: 0x7F080271
            public const int nomessage = 2131231345;
            // aapt resource value: 0x7F080272
            public const int notification_action_background = 2131231346;
            // aapt resource value: 0x7F080273
            public const int notification_bg = 2131231347;
            // aapt resource value: 0x7F080274
            public const int notification_bg_low = 2131231348;
            // aapt resource value: 0x7F080275
            public const int notification_bg_low_normal = 2131231349;
            // aapt resource value: 0x7F080276
            public const int notification_bg_low_pressed = 2131231350;
            // aapt resource value: 0x7F080277
            public const int notification_bg_normal = 2131231351;
            // aapt resource value: 0x7F080278
            public const int notification_bg_normal_pressed = 2131231352;
            // aapt resource value: 0x7F080279
            public const int notification_icon_background = 2131231353;
            // aapt resource value: 0x7F08027A
            public const int notification_template_icon_bg = 2131231354;
            // aapt resource value: 0x7F08027B
            public const int notification_template_icon_low_bg = 2131231355;
            // aapt resource value: 0x7F08027C
            public const int notification_tile_bg = 2131231356;
            // aapt resource value: 0x7F08027D
            public const int notify_bg = 2131231357;
            // aapt resource value: 0x7F08027E
            public const int notify_panel_notification_icon_bg = 2131231358;
            // aapt resource value: 0x7F08026F
            public const int no_message = 2131231343;
            public const int navigation_empty_icon = 2131231341;
            
            // aapt resource value: 0x7F080270
            public const int no_read = 2131231344;
            public const int nomessage = 2131231344;
            // aapt resource value: 0x7F080271
            public const int notification_action_background = 2131231345;
            // aapt resource value: 0x7F080272
            public const int notification_bg = 2131231346;
            // aapt resource value: 0x7F080273
            public const int notification_bg_low = 2131231347;
            // aapt resource value: 0x7F080274
            public const int notification_bg_low_normal = 2131231348;
            // aapt resource value: 0x7F080275
            public const int notification_bg_low_pressed = 2131231349;
            // aapt resource value: 0x7F080276
            public const int notification_bg_normal = 2131231350;
            // aapt resource value: 0x7F080277
            public const int notification_bg_normal_pressed = 2131231351;
            // aapt resource value: 0x7F080278
            public const int notification_icon_background = 2131231352;
            // aapt resource value: 0x7F080279
            public const int notification_template_icon_bg = 2131231353;
            // aapt resource value: 0x7F08027A
            public const int notification_template_icon_low_bg = 2131231354;
            // aapt resource value: 0x7F08027B
            public const int notification_tile_bg = 2131231355;
            // aapt resource value: 0x7F08027C
            public const int notify_bg = 2131231356;
            // aapt resource value: 0x7F08027D
            public const int notify_panel_notification_icon_bg = 2131231357;
            // aapt resource value: 0x7F08026E
            public const int no_message = 2131231342;
            // aapt resource value: 0x7F08026F
            public const int no_read = 2131231343;
            // aapt resource value: 0x7F08027E
            public const int number_bg = 2131231358;
            
            // aapt resource value: 0x7F08027F
            public const int number_bg = 2131231359;
            public const int offline = 2131231359;
            
            // aapt resource value: 0x7F080280
            public const int offline = 2131231360;
            public const int open_cameralist_alarmlist_selector = 2131231360;
            
            // aapt resource value: 0x7F080281
            public const int open_cameralist_alarmlist_selector = 2131231361;
            public const int open_cameralist_button_selector = 2131231361;
            
            // aapt resource value: 0x7F080282
            public const int open_cameralist_button_selector = 2131231362;
            public const int open_cameralist_remotepb_selector = 2131231362;
            
            // aapt resource value: 0x7F080283
            public const int open_cameralist_remotepb_selector = 2131231363;
            public const int open_cameralist_setup_selector = 2131231363;
            
            // aapt resource value: 0x7F080284
            public const int open_cameralist_setup_selector = 2131231364;
            public const int opinion = 2131231364;
            
            // aapt resource value: 0x7F080285
            public const int opinion = 2131231365;
            public const int palyback_alarm_icon2 = 2131231365;
            
            // aapt resource value: 0x7F080286
            public const int palyback_alarm_icon2 = 2131231366;
            public const int palyback_close = 2131231366;
            
            // aapt resource value: 0x7F080287
            public const int palyback_close = 2131231367;
            public const int palyback_close_sel = 2131231367;
            
            // aapt resource value: 0x7F080288
            public const int palyback_close_sel = 2131231368;
            public const int palyback_close_selector = 2131231368;
            
            // aapt resource value: 0x7F080289
            public const int palyback_close_selector = 2131231369;
            public const int palyback_date_down = 2131231369;
            
            // aapt resource value: 0x7F08028A
            public const int palyback_date_down = 2131231370;
            public const int palyback_date_down_sel = 2131231370;
            
            // aapt resource value: 0x7F08028B
            public const int palyback_date_down_sel = 2131231371;
            public const int palyback_full_down = 2131231371;
            
            // aapt resource value: 0x7F08028C
            public const int palyback_full_down = 2131231372;
            public const int palyback_full_up = 2131231372;
            
            // aapt resource value: 0x7F08028D
            public const int palyback_full_up = 2131231373;
            public const int palyback_nest = 2131231373;
            
            // aapt resource value: 0x7F08028E
            public const int palyback_nest = 2131231374;
            public const int palyback_pause = 2131231374;
            
            // aapt resource value: 0x7F08028F
            public const int palyback_pause = 2131231375;
            public const int palyback_pause_sel = 2131231375;
            
            // aapt resource value: 0x7F080290
            public const int palyback_pause_sel = 2131231376;
            public const int palyback_previously = 2131231376;
            
            // aapt resource value: 0x7F080291
            public const int palyback_previously = 2131231377;
            public const int palyback_previously_sel = 2131231377;
            
            // aapt resource value: 0x7F080292
            public const int palyback_previously_sel = 2131231378;
            public const int palyback_previously_selector = 2131231378;
            
            // aapt resource value: 0x7F080293
            public const int palyback_previously_selector = 2131231379;
            public const int palyback_replay = 2131231379;
            
            // aapt resource value: 0x7F080294
            public const int palyback_replay = 2131231380;
            public const int palyback_retry = 2131231380;
            
            // aapt resource value: 0x7F080295
            public const int palyback_retry = 2131231381;
            public const int palyback_time_bg = 2131231381;
            
            // aapt resource value: 0x7F080296
            public const int palyback_time_bg = 2131231382;
            public const int palyback_video = 2131231382;
            
            // aapt resource value: 0x7F080297
            public const int palyback_video = 2131231383;
            public const int palyback_video_now = 2131231383;
            
            // aapt resource value: 0x7F080298
            public const int palyback_video_now = 2131231384;
            public const int palyback_video_now_sel = 2131231384;
            
            // aapt resource value: 0x7F080299
            public const int palyback_video_now_sel = 2131231385;
            public const int palyback_video_now_selector = 2131231385;
            
            // aapt resource value: 0x7F08029A
            public const int palyback_video_now_selector = 2131231386;
            public const int palyback_video_sel = 2131231386;
            
            // aapt resource value: 0x7F08029B
            public const int palyback_video_sel = 2131231387;
            public const int palyback_video_selector = 2131231387;
            
            // aapt resource value: 0x7F08029C
            public const int palyback_video_selector = 2131231388;
            public const int pause = 2131231388;
            
            // aapt resource value: 0x7F08029D
            public const int pause = 2131231389;
            public const int pause_sel = 2131231389;
            
            // aapt resource value: 0x7F08029E
            public const int pause_sel = 2131231390;
            public const int pic_bg = 2131231390;
            
            // aapt resource value: 0x7F08029F
            public const int pic_bg = 2131231391;
            // aapt resource value: 0x7F0802A0
            public const int play = 2131231392;
            // aapt resource value: 0x7F0802FF
            public const int playback = 2131231487;
            // aapt resource value: 0x7F08030F
            public const int playbackslider = 2131231503;
            // aapt resource value: 0x7F080310
            public const int playbackslider_sel = 2131231504;
            // aapt resource value: 0x7F080300
            public const int playback_button = 2131231488;
            // aapt resource value: 0x7F080301
            public const int playback_cancel = 2131231489;
            // aapt resource value: 0x7F080302
            public const int playback_check_selector = 2131231490;
            // aapt resource value: 0x7F080303
            public const int playback_cover2 = 2131231491;
            // aapt resource value: 0x7F080304
            public const int playback_cut = 2131231492;
            // aapt resource value: 0x7F080305
            public const int playback_cut_btn_selector = 2131231493;
            // aapt resource value: 0x7F080306
            public const int playback_cut_disable = 2131231494;
            // aapt resource value: 0x7F080307
            public const int playback_cut_sel = 2131231495;
            // aapt resource value: 0x7F080308
            public const int playback_matte = 2131231496;
            // aapt resource value: 0x7F080309
            public const int playback_more_down = 2131231497;
            // aapt resource value: 0x7F08030A
            public const int playback_more_down1 = 2131231498;
            // aapt resource value: 0x7F08030B
            public const int playback_more_up1 = 2131231499;
            // aapt resource value: 0x7F08030C
            public const int playback_play = 2131231500;
            // aapt resource value: 0x7F08030D
            public const int playback_play_sel = 2131231501;
            // aapt resource value: 0x7F08030E
            public const int playback_sel = 2131231502;
            // aapt resource value: 0x7F080311
            public const int playbtn_selector = 2131231505;
            // aapt resource value: 0x7F0802A1
            public const int play_balanced = 2131231393;
            // aapt resource value: 0x7F0802A2
            public const int play_balanced_disabel = 2131231394;
            // aapt resource value: 0x7F0802A3
            public const int play_balanced_sel = 2131231395;
            // aapt resource value: 0x7F0802A4
            public const int play_balanced_selector = 2131231396;
            // aapt resource value: 0x7F0802A5
            public const int play_big = 2131231397;
            // aapt resource value: 0x7F0802A7
            public const int play_bigbtn_selector = 2131231399;
            // aapt resource value: 0x7F0802A6
            public const int play_big_press = 2131231398;
            // aapt resource value: 0x7F0802A8
            public const int play_button_bg = 2131231400;
            // aapt resource value: 0x7F0802A9
            public const int play_button_sel = 2131231401;
            // aapt resource value: 0x7F0802AA
            public const int play_button_selector = 2131231402;
            // aapt resource value: 0x7F0802AB
            public const int play_close = 2131231403;
            // aapt resource value: 0x7F0802AC
            public const int play_close_sel = 2131231404;
            // aapt resource value: 0x7F0802AD
            public const int play_close_selector = 2131231405;
            // aapt resource value: 0x7F0802AE
            public const int play_disable = 2131231406;
            // aapt resource value: 0x7F0802AF
            public const int play_flunet = 2131231407;
            // aapt resource value: 0x7F0802B0
            public const int play_flunet_disabel = 2131231408;
            // aapt resource value: 0x7F0802B1
            public const int play_flunet_sel = 2131231409;
            // aapt resource value: 0x7F0802B2
            public const int play_flunet_selector = 2131231410;
            // aapt resource value: 0x7F0802B3
            public const int play_full_loding_logo = 2131231411;
            // aapt resource value: 0x7F0802B4
            public const int play_full_multiple = 2131231412;
            // aapt resource value: 0x7F0802B5
            public const int play_full_multiple2 = 2131231413;
            // aapt resource value: 0x7F0802B6
            public const int play_full_multiple3 = 2131231414;
            // aapt resource value: 0x7F0802B7
            public const int play_full_multiple4 = 2131231415;
            // aapt resource value: 0x7F0802B8
            public const int play_full_multiple5 = 2131231416;
            // aapt resource value: 0x7F0802B9
            public const int play_full_pause = 2131231417;
            // aapt resource value: 0x7F0802BA
            public const int play_full_pause_sel = 2131231418;
            // aapt resource value: 0x7F0802BB
            public const int play_full_pause_selector = 2131231419;
            // aapt resource value: 0x7F0802BC
            public const int play_full_play = 2131231420;
            // aapt resource value: 0x7F0802BD
            public const int play_full_play_sel = 2131231421;
            // aapt resource value: 0x7F0802BE
            public const int play_full_play_selector = 2131231422;
            // aapt resource value: 0x7F0802BF
            public const int play_full_previously = 2131231423;
            // aapt resource value: 0x7F0802C0
            public const int play_full_previously_sel = 2131231424;
            // aapt resource value: 0x7F0802C1
            public const int play_full_previously_selector = 2131231425;
            // aapt resource value: 0x7F0802C2
            public const int play_full_ptz_selector = 2131231426;
            // aapt resource value: 0x7F0802C3
            public const int play_full_quality_color_selector = 2131231427;
            // aapt resource value: 0x7F0802C4
            public const int play_full_quality_selector = 2131231428;
            // aapt resource value: 0x7F0802C5
            public const int play_full_soundoff_btn_selector = 2131231429;
            // aapt resource value: 0x7F0802C6
            public const int play_full_soundon_btn_selector = 2131231430;
            // aapt resource value: 0x7F0802C7
            public const int play_full_stop = 2131231431;
            // aapt resource value: 0x7F0802C8
            public const int play_full_stop_sel = 2131231432;
            // aapt resource value: 0x7F0802C9
            public const int play_full_stop_selector = 2131231433;
            // aapt resource value: 0x7F0802CA
            public const int play_full_talk_selector = 2131231434;
            // aapt resource value: 0x7F0802CB
            public const int play_full_video = 2131231435;
            // aapt resource value: 0x7F0802CC
            public const int play_full_video_now = 2131231436;
            // aapt resource value: 0x7F0802CD
            public const int play_full_video_now_sel = 2131231437;
            // aapt resource value: 0x7F0802CE
            public const int play_full_video_now_selector = 2131231438;
            // aapt resource value: 0x7F0802CF
            public const int play_full_video_sel = 2131231439;
            // aapt resource value: 0x7F0802D0
            public const int play_full_video_selector = 2131231440;
            // aapt resource value: 0x7F0802D1
            public const int play_hd = 2131231441;
            // aapt resource value: 0x7F0802D2
            public const int play_hd_disabel = 2131231442;
            // aapt resource value: 0x7F0802D3
            public const int play_hd_sel = 2131231443;
            // aapt resource value: 0x7F0802D4
            public const int play_hd_selector = 2131231444;
            // aapt resource value: 0x7F0802D5
            public const int play_play = 2131231445;
            // aapt resource value: 0x7F0802D6
            public const int play_play_dis = 2131231446;
            // aapt resource value: 0x7F0802D7
            public const int play_play_sel = 2131231447;
            // aapt resource value: 0x7F0802D8
            public const int play_play_selector = 2131231448;
            // aapt resource value: 0x7F0802D9
            public const int play_press = 2131231449;
            // aapt resource value: 0x7F0802DA
            public const int play_previously = 2131231450;
            // aapt resource value: 0x7F0802DB
            public const int play_previously_dis = 2131231451;
            // aapt resource value: 0x7F0802DC
            public const int play_previously_sel = 2131231452;
            // aapt resource value: 0x7F0802DD
            public const int play_previously_selector = 2131231453;
            // aapt resource value: 0x7F0802DE
            public const int play_privacy_selector = 2131231454;
            // aapt resource value: 0x7F0802DF
            public const int play_ptz = 2131231455;
            // aapt resource value: 0x7F0802E0
            public const int play_ptz_dis = 2131231456;
            // aapt resource value: 0x7F0802E1
            public const int play_ptz_sel = 2131231457;
            // aapt resource value: 0x7F0802E2
            public const int play_ptz_selector = 2131231458;
            // aapt resource value: 0x7F0802E3
            public const int play_small = 2131231459;
            // aapt resource value: 0x7F0802E5
            public const int play_smallbtn_selector = 2131231461;
            // aapt resource value: 0x7F0802E4
            public const int play_small_press = 2131231460;
            // aapt resource value: 0x7F0802E6
            public const int play_speech = 2131231462;
            // aapt resource value: 0x7F0802E7
            public const int play_speech_dis = 2131231463;
            // aapt resource value: 0x7F0802E8
            public const int play_speech_sel = 2131231464;
            // aapt resource value: 0x7F0802E9
            public const int play_speech_selector = 2131231465;
            // aapt resource value: 0x7F0802EA
            public const int play_stop = 2131231466;
            // aapt resource value: 0x7F0802EB
            public const int play_stop_sel = 2131231467;
            // aapt resource value: 0x7F0802EC
            public const int play_stop_selector = 2131231468;
            // aapt resource value: 0x7F0802ED
            public const int play_talk = 2131231469;
            // aapt resource value: 0x7F0802F1
            public const int play_talkback = 2131231473;
            // aapt resource value: 0x7F0802F2
            public const int play_talkback_sel = 2131231474;
            // aapt resource value: 0x7F0802F3
            public const int play_talkback_selector = 2131231475;
            // aapt resource value: 0x7F0802EE
            public const int play_talk_dis = 2131231470;
            // aapt resource value: 0x7F0802EF
            public const int play_talk_sel = 2131231471;
            // aapt resource value: 0x7F0802F0
            public const int play_talk_selector = 2131231472;
            // aapt resource value: 0x7F0802F4
            public const int play_video = 2131231476;
            // aapt resource value: 0x7F0802F5
            public const int play_video_dis = 2131231477;
            // aapt resource value: 0x7F0802F6
            public const int play_video_record = 2131231478;
            // aapt resource value: 0x7F0802F7
            public const int play_video_sel = 2131231479;
            // aapt resource value: 0x7F0802F8
            public const int play_video_selector = 2131231480;
            // aapt resource value: 0x7F0802F9
            public const int play_video_start = 2131231481;
            // aapt resource value: 0x7F0802FA
            public const int play_video_time_bg = 2131231482;
            // aapt resource value: 0x7F0802FB
            public const int play_voice = 2131231483;
            // aapt resource value: 0x7F0802FC
            public const int play_voice_dis = 2131231484;
            // aapt resource value: 0x7F0802FD
            public const int play_voice_sel = 2131231485;
            public const int play = 2131231391;
            
            // aapt resource value: 0x7F0802FE
            public const int play_voice_selector = 2131231486;
            public const int playback = 2131231486;
            // aapt resource value: 0x7F08030E
            public const int playbackslider = 2131231502;
            // aapt resource value: 0x7F08030F
            public const int playbackslider_sel = 2131231503;
            // aapt resource value: 0x7F0802FF
            public const int playback_button = 2131231487;
            // aapt resource value: 0x7F080300
            public const int playback_cancel = 2131231488;
            // aapt resource value: 0x7F080301
            public const int playback_check_selector = 2131231489;
            // aapt resource value: 0x7F080302
            public const int playback_cover2 = 2131231490;
            // aapt resource value: 0x7F080303
            public const int playback_cut = 2131231491;
            // aapt resource value: 0x7F080304
            public const int playback_cut_btn_selector = 2131231492;
            // aapt resource value: 0x7F080305
            public const int playback_cut_disable = 2131231493;
            // aapt resource value: 0x7F080306
            public const int playback_cut_sel = 2131231494;
            // aapt resource value: 0x7F080307
            public const int playback_matte = 2131231495;
            // aapt resource value: 0x7F080308
            public const int playback_more_down = 2131231496;
            // aapt resource value: 0x7F080309
            public const int playback_more_down1 = 2131231497;
            // aapt resource value: 0x7F08030A
            public const int playback_more_up1 = 2131231498;
            // aapt resource value: 0x7F08030B
            public const int playback_play = 2131231499;
            // aapt resource value: 0x7F08030C
            public const int playback_play_sel = 2131231500;
            // aapt resource value: 0x7F08030D
            public const int playback_sel = 2131231501;
            // aapt resource value: 0x7F080310
            public const int playbtn_selector = 2131231504;
            // aapt resource value: 0x7F0802A0
            public const int play_balanced = 2131231392;
            // aapt resource value: 0x7F0802A1
            public const int play_balanced_disabel = 2131231393;
            // aapt resource value: 0x7F0802A2
            public const int play_balanced_sel = 2131231394;
            // aapt resource value: 0x7F0802A3
            public const int play_balanced_selector = 2131231395;
            // aapt resource value: 0x7F0802A4
            public const int play_big = 2131231396;
            // aapt resource value: 0x7F0802A6
            public const int play_bigbtn_selector = 2131231398;
            // aapt resource value: 0x7F0802A5
            public const int play_big_press = 2131231397;
            // aapt resource value: 0x7F0802A7
            public const int play_button_bg = 2131231399;
            // aapt resource value: 0x7F0802A8
            public const int play_button_sel = 2131231400;
            // aapt resource value: 0x7F0802A9
            public const int play_button_selector = 2131231401;
            // aapt resource value: 0x7F0802AA
            public const int play_close = 2131231402;
            // aapt resource value: 0x7F0802AB
            public const int play_close_sel = 2131231403;
            // aapt resource value: 0x7F0802AC
            public const int play_close_selector = 2131231404;
            // aapt resource value: 0x7F0802AD
            public const int play_disable = 2131231405;
            // aapt resource value: 0x7F0802AE
            public const int play_flunet = 2131231406;
            // aapt resource value: 0x7F0802AF
            public const int play_flunet_disabel = 2131231407;
            // aapt resource value: 0x7F0802B0
            public const int play_flunet_sel = 2131231408;
            // aapt resource value: 0x7F0802B1
            public const int play_flunet_selector = 2131231409;
            // aapt resource value: 0x7F0802B2
            public const int play_full_loding_logo = 2131231410;
            // aapt resource value: 0x7F0802B3
            public const int play_full_multiple = 2131231411;
            // aapt resource value: 0x7F0802B4
            public const int play_full_multiple2 = 2131231412;
            // aapt resource value: 0x7F0802B5
            public const int play_full_multiple3 = 2131231413;
            // aapt resource value: 0x7F0802B6
            public const int play_full_multiple4 = 2131231414;
            // aapt resource value: 0x7F0802B7
            public const int play_full_multiple5 = 2131231415;
            // aapt resource value: 0x7F0802B8
            public const int play_full_pause = 2131231416;
            // aapt resource value: 0x7F0802B9
            public const int play_full_pause_sel = 2131231417;
            // aapt resource value: 0x7F0802BA
            public const int play_full_pause_selector = 2131231418;
            // aapt resource value: 0x7F0802BB
            public const int play_full_play = 2131231419;
            // aapt resource value: 0x7F0802BC
            public const int play_full_play_sel = 2131231420;
            // aapt resource value: 0x7F0802BD
            public const int play_full_play_selector = 2131231421;
            // aapt resource value: 0x7F0802BE
            public const int play_full_previously = 2131231422;
            // aapt resource value: 0x7F0802BF
            public const int play_full_previously_sel = 2131231423;
            // aapt resource value: 0x7F0802C0
            public const int play_full_previously_selector = 2131231424;
            // aapt resource value: 0x7F0802C1
            public const int play_full_ptz_selector = 2131231425;
            // aapt resource value: 0x7F0802C2
            public const int play_full_quality_color_selector = 2131231426;
            // aapt resource value: 0x7F0802C3
            public const int play_full_quality_selector = 2131231427;
            // aapt resource value: 0x7F0802C4
            public const int play_full_soundoff_btn_selector = 2131231428;
            // aapt resource value: 0x7F0802C5
            public const int play_full_soundon_btn_selector = 2131231429;
            // aapt resource value: 0x7F0802C6
            public const int play_full_stop = 2131231430;
            // aapt resource value: 0x7F0802C7
            public const int play_full_stop_sel = 2131231431;
            // aapt resource value: 0x7F0802C8
            public const int play_full_stop_selector = 2131231432;
            // aapt resource value: 0x7F0802C9
            public const int play_full_talk_selector = 2131231433;
            // aapt resource value: 0x7F0802CA
            public const int play_full_video = 2131231434;
            // aapt resource value: 0x7F0802CB
            public const int play_full_video_now = 2131231435;
            // aapt resource value: 0x7F0802CC
            public const int play_full_video_now_sel = 2131231436;
            // aapt resource value: 0x7F0802CD
            public const int play_full_video_now_selector = 2131231437;
            // aapt resource value: 0x7F0802CE
            public const int play_full_video_sel = 2131231438;
            // aapt resource value: 0x7F0802CF
            public const int play_full_video_selector = 2131231439;
            // aapt resource value: 0x7F0802D0
            public const int play_hd = 2131231440;
            // aapt resource value: 0x7F0802D1
            public const int play_hd_disabel = 2131231441;
            // aapt resource value: 0x7F0802D2
            public const int play_hd_sel = 2131231442;
            // aapt resource value: 0x7F0802D3
            public const int play_hd_selector = 2131231443;
            // aapt resource value: 0x7F0802D4
            public const int play_play = 2131231444;
            // aapt resource value: 0x7F0802D5
            public const int play_play_dis = 2131231445;
            // aapt resource value: 0x7F0802D6
            public const int play_play_sel = 2131231446;
            // aapt resource value: 0x7F0802D7
            public const int play_play_selector = 2131231447;
            // aapt resource value: 0x7F0802D8
            public const int play_press = 2131231448;
            // aapt resource value: 0x7F0802D9
            public const int play_previously = 2131231449;
            // aapt resource value: 0x7F0802DA
            public const int play_previously_dis = 2131231450;
            // aapt resource value: 0x7F0802DB
            public const int play_previously_sel = 2131231451;
            // aapt resource value: 0x7F0802DC
            public const int play_previously_selector = 2131231452;
            // aapt resource value: 0x7F0802DD
            public const int play_privacy_selector = 2131231453;
            // aapt resource value: 0x7F0802DE
            public const int play_ptz = 2131231454;
            // aapt resource value: 0x7F0802DF
            public const int play_ptz_dis = 2131231455;
            // aapt resource value: 0x7F0802E0
            public const int play_ptz_sel = 2131231456;
            // aapt resource value: 0x7F0802E1
            public const int play_ptz_selector = 2131231457;
            // aapt resource value: 0x7F0802E2
            public const int play_small = 2131231458;
            // aapt resource value: 0x7F0802E4
            public const int play_smallbtn_selector = 2131231460;
            // aapt resource value: 0x7F0802E3
            public const int play_small_press = 2131231459;
            // aapt resource value: 0x7F0802E5
            public const int play_speech = 2131231461;
            // aapt resource value: 0x7F0802E6
            public const int play_speech_dis = 2131231462;
            // aapt resource value: 0x7F0802E7
            public const int play_speech_sel = 2131231463;
            // aapt resource value: 0x7F0802E8
            public const int play_speech_selector = 2131231464;
            // aapt resource value: 0x7F0802E9
            public const int play_stop = 2131231465;
            // aapt resource value: 0x7F0802EA
            public const int play_stop_sel = 2131231466;
            // aapt resource value: 0x7F0802EB
            public const int play_stop_selector = 2131231467;
            // aapt resource value: 0x7F0802EC
            public const int play_talk = 2131231468;
            // aapt resource value: 0x7F0802F0
            public const int play_talkback = 2131231472;
            // aapt resource value: 0x7F0802F1
            public const int play_talkback_sel = 2131231473;
            // aapt resource value: 0x7F0802F2
            public const int play_talkback_selector = 2131231474;
            // aapt resource value: 0x7F0802ED
            public const int play_talk_dis = 2131231469;
            // aapt resource value: 0x7F0802EE
            public const int play_talk_sel = 2131231470;
            // aapt resource value: 0x7F0802EF
            public const int play_talk_selector = 2131231471;
            // aapt resource value: 0x7F0802F3
            public const int play_video = 2131231475;
            // aapt resource value: 0x7F0802F4
            public const int play_video_dis = 2131231476;
            // aapt resource value: 0x7F0802F5
            public const int play_video_record = 2131231477;
            // aapt resource value: 0x7F0802F6
            public const int play_video_sel = 2131231478;
            // aapt resource value: 0x7F0802F7
            public const int play_video_selector = 2131231479;
            // aapt resource value: 0x7F0802F8
            public const int play_video_start = 2131231480;
            // aapt resource value: 0x7F0802F9
            public const int play_video_time_bg = 2131231481;
            // aapt resource value: 0x7F0802FA
            public const int play_voice = 2131231482;
            // aapt resource value: 0x7F0802FB
            public const int play_voice_dis = 2131231483;
            // aapt resource value: 0x7F0802FC
            public const int play_voice_sel = 2131231484;
            // aapt resource value: 0x7F0802FD
            public const int play_voice_selector = 2131231485;
            // aapt resource value: 0x7F080311
            public const int popdialogbg = 2131231505;
            
            // aapt resource value: 0x7F080312
            public const int popdialogbg = 2131231506;
            public const int prepare_device = 2131231506;
            
            // aapt resource value: 0x7F080313
            public const int prepare_device = 2131231507;
            public const int preview_close1_video_ico = 2131231507;
            
            // aapt resource value: 0x7F080314
            public const int preview_close1_video_ico = 2131231508;
            public const int preview_close_video = 2131231508;
            
            // aapt resource value: 0x7F080315
            public const int preview_close_video = 2131231509;
            public const int preview_close_video_dis = 2131231509;
            
            // aapt resource value: 0x7F080316
            public const int preview_close_video_dis = 2131231510;
            public const int preview_close_video_sel = 2131231510;
            
            // aapt resource value: 0x7F080317
            public const int preview_close_video_sel = 2131231511;
            public const int preview_down_bg_normal = 2131231511;
            
            // aapt resource value: 0x7F080318
            public const int preview_down_bg_normal = 2131231512;
            public const int preview_down_bg_pressed = 2131231512;
            
            // aapt resource value: 0x7F080319
            public const int preview_down_bg_pressed = 2131231513;
            public const int preview_down_ico = 2131231513;
            
            // aapt resource value: 0x7F08031A
            public const int preview_down_ico = 2131231514;
            public const int preview_down_selector = 2131231514;
            
            // aapt resource value: 0x7F08031B
            public const int preview_down_selector = 2131231515;
            public const int preview_enlarge = 2131231515;
            
            // aapt resource value: 0x7F08031C
            public const int preview_enlarge = 2131231516;
            public const int preview_enlarge_btn_sel = 2131231516;
            
            // aapt resource value: 0x7F08031D
            public const int preview_enlarge_btn_sel = 2131231517;
            public const int preview_enlarge_dis = 2131231517;
            
            // aapt resource value: 0x7F08031E
            public const int preview_enlarge_dis = 2131231518;
            public const int preview_enlarge_selector = 2131231518;
            
            // aapt resource value: 0x7F08031F
            public const int preview_enlarge_selector = 2131231519;
            public const int preview_play_btn = 2131231519;
            
            // aapt resource value: 0x7F080320
            public const int preview_play_btn = 2131231520;
            public const int preview_play_btn_dis = 2131231520;
            
            // aapt resource value: 0x7F080321
            public const int preview_play_btn_dis = 2131231521;
            public const int preview_play_btn_sel = 2131231521;
            
            // aapt resource value: 0x7F080322
            public const int preview_play_btn_sel = 2131231522;
            public const int preview_recording = 2131231522;
            
            // aapt resource value: 0x7F080323
            public const int preview_recording = 2131231523;
            public const int preview_recording_dis = 2131231523;
            
            // aapt resource value: 0x7F080324
            public const int preview_recording_dis = 2131231524;
            public const int preview_recording_sel = 2131231524;
            
            // aapt resource value: 0x7F080325
            public const int preview_recording_sel = 2131231525;
            public const int preview_selection_bg = 2131231525;
            
            // aapt resource value: 0x7F080326
            public const int preview_selection_bg = 2131231526;
            public const int preview_stopplay_btn_dis = 2131231526;
            
            // aapt resource value: 0x7F080327
            public const int preview_stopplay_btn_dis = 2131231527;
            public const int preview_unvoice_btn = 2131231527;
            
            // aapt resource value: 0x7F080328
            public const int preview_unvoice_btn = 2131231528;
            public const int preview_unvoice_btn_sel = 2131231528;
            
            // aapt resource value: 0x7F080329
            public const int preview_unvoice_btn_sel = 2131231529;
            public const int preview_video_selection = 2131231529;
            
            // aapt resource value: 0x7F08032A
            public const int preview_video_selection = 2131231530;
            public const int preview_video_selection_hover = 2131231530;
            
            // aapt resource value: 0x7F08032B
            public const int preview_video_selection_hover = 2131231531;
            public const int preview_voice_btn = 2131231531;
            
            // aapt resource value: 0x7F08032C
            public const int preview_voice_btn = 2131231532;
            public const int preview_voice_btn_dis = 2131231532;
            
            // aapt resource value: 0x7F08032D
            public const int preview_voice_btn_dis = 2131231533;
            public const int preview_voice_btn_sel = 2131231533;
            
            // aapt resource value: 0x7F08032E
            public const int preview_voice_btn_sel = 2131231534;
            public const int previously = 2131231534;
            
            // aapt resource value: 0x7F08032F
            public const int previously = 2131231535;
            public const int previously_dis = 2131231535;
            
            // aapt resource value: 0x7F080330
            public const int previously_dis = 2131231536;
            public const int previously_sel = 2131231536;
            
            // aapt resource value: 0x7F080331
            public const int previously_sel = 2131231537;
            public const int ptz_bg = 2131231537;
            
            // aapt resource value: 0x7F080332
            public const int ptz_bg = 2131231538;
            public const int ptz_bottom_limit = 2131231538;
            
            // aapt resource value: 0x7F080333
            public const int ptz_bottom_limit = 2131231539;
            public const int ptz_bottom_sel = 2131231539;
            
            // aapt resource value: 0x7F080334
            public const int ptz_bottom_sel = 2131231540;
            public const int ptz_left_limit = 2131231540;
            
            // aapt resource value: 0x7F080335
            public const int ptz_left_limit = 2131231541;
            public const int ptz_left_sel = 2131231541;
            
            // aapt resource value: 0x7F080336
            public const int ptz_left_sel = 2131231542;
            public const int ptz_prompt = 2131231542;
            
            // aapt resource value: 0x7F080337
            public const int ptz_prompt = 2131231543;
            public const int ptz_right_limit = 2131231543;
            
            // aapt resource value: 0x7F080338
            public const int ptz_right_limit = 2131231544;
            public const int ptz_right_sel = 2131231544;
            
            // aapt resource value: 0x7F080339
            public const int ptz_right_sel = 2131231545;
            public const int ptz_top_limit = 2131231545;
            
            // aapt resource value: 0x7F08033A
            public const int ptz_top_limit = 2131231546;
            public const int ptz_turn = 2131231546;
            
            // aapt resource value: 0x7F08033B
            public const int ptz_turn = 2131231547;
            public const int ptz_turn_sel = 2131231547;
            
            // aapt resource value: 0x7F08033C
            public const int ptz_turn_sel = 2131231548;
            public const int ptz_turn_selector = 2131231548;
            
            // aapt resource value: 0x7F08033D
            public const int ptz_turn_selector = 2131231549;
            public const int ptz_up_sel = 2131231549;
            
            // aapt resource value: 0x7F08033E
            public const int ptz_up_sel = 2131231550;
            public const int push_close = 2131231550;
            
            // aapt resource value: 0x7F08033F
            public const int push_close = 2131231551;
            public const int push_close_sel = 2131231551;
            
            // aapt resource value: 0x7F080340
            public const int push_close_sel = 2131231552;
            public const int push_close_selector = 2131231552;
            
            // aapt resource value: 0x7F080341
            public const int push_close_selector = 2131231553;
            public const int put_ico = 2131231553;
            
            // aapt resource value: 0x7F080342
            public const int put_ico = 2131231554;
            public const int query_loding1 = 2131231554;
            
            // aapt resource value: 0x7F080343
            public const int query_loding1 = 2131231555;
            public const int query_loding2 = 2131231555;
            
            // aapt resource value: 0x7F080344
            public const int query_loding2 = 2131231556;
            public const int query_loding3 = 2131231556;
            
            // aapt resource value: 0x7F080345
            public const int query_loding3 = 2131231557;
            public const int query_loding4 = 2131231557;
            
            // aapt resource value: 0x7F080346
            public const int query_loding4 = 2131231558;
            public const int query_loding5 = 2131231558;
            
            // aapt resource value: 0x7F080347
            public const int query_loding5 = 2131231559;
            public const int radius_rect_bg_qq_group = 2131231559;
            
            // aapt resource value: 0x7F080348
            public const int radius_rect_bg_qq_group = 2131231560;
            public const int read_button = 2131231560;
            
            // aapt resource value: 0x7F080349
            public const int read_button = 2131231561;
            public const int read_button_sel = 2131231561;
            
            // aapt resource value: 0x7F08034A
            public const int read_button_sel = 2131231562;
            public const int read_button_selector = 2131231562;
            
            // aapt resource value: 0x7F08034B
            public const int read_button_selector = 2131231563;
            public const int refresh_selector = 2131231563;
            
            // aapt resource value: 0x7F08034C
            public const int refresh_selector = 2131231564;
            public const int register_server_bg = 2131231564;
            
            // aapt resource value: 0x7F08034D
            public const int register_server_bg = 2131231565;
            public const int remote_cal_selector = 2131231565;
            
            // aapt resource value: 0x7F08034E
            public const int remote_cal_selector = 2131231566;
            public const int remote_exit_btn_selector = 2131231566;
            
            // aapt resource value: 0x7F08034F
            public const int remote_exit_btn_selector = 2131231567;
            public const int remote_list_pause_btn_selector = 2131231567;
            
            // aapt resource value: 0x7F080350
            public const int remote_list_pause_btn_selector = 2131231568;
            public const int remote_list_play_btn_selector = 2131231568;
            
            // aapt resource value: 0x7F080351
            public const int remote_list_play_btn_selector = 2131231569;
            public const int remote_list_soundoff_btn_selector = 2131231569;
            
            // aapt resource value: 0x7F080352
            public const int remote_list_soundoff_btn_selector = 2131231570;
            public const int remote_list_soundon_btn_selector = 2131231570;
            
            // aapt resource value: 0x7F080353
            public const int remote_list_soundon_btn_selector = 2131231571;
            public const int remote_play = 2131231571;
            
            // aapt resource value: 0x7F080354
            public const int remote_play = 2131231572;
            public const int remote_play_sel = 2131231572;
            
            // aapt resource value: 0x7F080355
            public const int remote_play_sel = 2131231573;
            public const int remote_seekbar_style = 2131231573;
            
            // aapt resource value: 0x7F080356
            public const int remote_seekbar_style = 2131231574;
            public const int remote_seekbar_thumb = 2131231574;
            
            // aapt resource value: 0x7F080357
            public const int remote_seekbar_thumb = 2131231575;
            // aapt resource value: 0x7F080358
            public const int reset_deivce = 2131231576;
            // aapt resource value: 0x7F080365
            public const int results_4_dvr = 2131231589;
            // aapt resource value: 0x7F080366
            public const int results_8_16_nvr = 2131231590;
            // aapt resource value: 0x7F080367
            public const int results_8_nvr = 2131231591;
            // aapt resource value: 0x7F080368
            public const int results_c6p = 2131231592;
            // aapt resource value: 0x7F080369
            public const int results_mini_360_plus = 2131231593;
            // aapt resource value: 0x7F08036A
            public const int results_mini_trooper = 2131231594;
            // aapt resource value: 0x7F08036B
            public const int results_pic_a1 = 2131231595;
            // aapt resource value: 0x7F08036C
            public const int results_pic_a1c = 2131231596;
            // aapt resource value: 0x7F08036D
            public const int results_pic_a1s = 2131231597;
            // aapt resource value: 0x7F08036E
            public const int results_pic_baidu_c2s = 2131231598;
            // aapt resource value: 0x7F08036F
            public const int results_pic_bg = 2131231599;
            // aapt resource value: 0x7F080370
            public const int results_pic_c1 = 2131231600;
            // aapt resource value: 0x7F080371
            public const int results_pic_c2 = 2131231601;
            // aapt resource value: 0x7F080374
            public const int results_pic_c2c = 2131231604;
            // aapt resource value: 0x7F080375
            public const int results_pic_c2mini = 2131231605;
            // aapt resource value: 0x7F080376
            public const int results_pic_c2mini2 = 2131231606;
            // aapt resource value: 0x7F080377
            public const int results_pic_c2plus = 2131231607;
            // aapt resource value: 0x7F080378
            public const int results_pic_c2s = 2131231608;
            // aapt resource value: 0x7F080379
            public const int results_pic_c2w = 2131231609;
            // aapt resource value: 0x7F080372
            public const int results_pic_c2_2 = 2131231602;
            // aapt resource value: 0x7F080373
            public const int results_pic_c2_usa = 2131231603;
            // aapt resource value: 0x7F08037A
            public const int results_pic_c3 = 2131231610;
            // aapt resource value: 0x7F08037B
            public const int results_pic_c3c = 2131231611;
            // aapt resource value: 0x7F08037C
            public const int results_pic_c3e = 2131231612;
            // aapt resource value: 0x7F08037D
            public const int results_pic_c3s = 2131231613;
            // aapt resource value: 0x7F08037E
            public const int results_pic_c4 = 2131231614;
            // aapt resource value: 0x7F08037F
            public const int results_pic_c4c = 2131231615;
            // aapt resource value: 0x7F080380
            public const int results_pic_c4e = 2131231616;
            // aapt resource value: 0x7F080381
            public const int results_pic_c4s = 2131231617;
            // aapt resource value: 0x7F080382
            public const int results_pic_c6 = 2131231618;
            // aapt resource value: 0x7F080383
            public const int results_pic_c6c = 2131231619;
            // aapt resource value: 0x7F080384
            public const int results_pic_c6c_1 = 2131231620;
            // aapt resource value: 0x7F080385
            public const int results_pic_c6c_2 = 2131231621;
            // aapt resource value: 0x7F080386
            public const int results_pic_c6h = 2131231622;
            // aapt resource value: 0x7F080387
            public const int results_pic_co2 = 2131231623;
            // aapt resource value: 0x7F080388
            public const int results_pic_d1 = 2131231624;
            // aapt resource value: 0x7F080389
            public const int results_pic_default = 2131231625;
            // aapt resource value: 0x7F08038A
            public const int results_pic_f1 = 2131231626;
            // aapt resource value: 0x7F08038B
            public const int results_pic_h2c = 2131231627;
            // aapt resource value: 0x7F08038C
            public const int results_pic_h2s = 2131231628;
            // aapt resource value: 0x7F08038D
            public const int results_pic_n1 = 2131231629;
            // aapt resource value: 0x7F08038E
            public const int results_pic_n1w = 2131231630;
            // aapt resource value: 0x7F08038F
            public const int results_pic_r1 = 2131231631;
            // aapt resource value: 0x7F080390
            public const int results_pic_r2 = 2131231632;
            // aapt resource value: 0x7F080391
            public const int results_pic_w1 = 2131231633;
            // aapt resource value: 0x7F080392
            public const int results_pic_w3 = 2131231634;
            // aapt resource value: 0x7F080393
            public const int results_pic_x1 = 2131231635;
            // aapt resource value: 0x7F080394
            public const int results_pic_x2 = 2131231636;
            // aapt resource value: 0x7F080395
            public const int results_pic_x3 = 2131231637;
            // aapt resource value: 0x7F080396
            public const int results_pic_x3c = 2131231638;
            // aapt resource value: 0x7F080397
            public const int results_pic_x4 = 2131231639;
            // aapt resource value: 0x7F080398
            public const int results_pic_z1 = 2131231640;
            // aapt resource value: 0x7F080399
            public const int results_w2d = 2131231641;
            // aapt resource value: 0x7F08039A
            public const int results_w2s = 2131231642;
            // aapt resource value: 0x7F08039B
            public const int results_wlb = 2131231643;
            // aapt resource value: 0x7F08039C
            public const int results_x5_108tp = 2131231644;
            // aapt resource value: 0x7F080359
            public const int result_5k_vr104d = 2131231577;
            // aapt resource value: 0x7F08035A
            public const int result_5k_vr116d = 2131231578;
            // aapt resource value: 0x7F08035B
            public const int result_8_16dvr = 2131231579;
            // aapt resource value: 0x7F08035C
            public const int result_cs_c3w = 2131231580;
            // aapt resource value: 0x7F08035D
            public const int result_cs_vr104d = 2131231581;
            // aapt resource value: 0x7F08035E
            public const int result_cs_vr108d = 2131231582;
            // aapt resource value: 0x7F08035F
            public const int result_cs_vr116d = 2131231583;
            // aapt resource value: 0x7F080360
            public const int result_pic_dh1 = 2131231584;
            // aapt resource value: 0x7F080361
            public const int result_pic_doorbell = 2131231585;
            // aapt resource value: 0x7F080362
            public const int result_pic_doorbell_hik = 2131231586;
            // aapt resource value: 0x7F080363
            public const int result_pic_light = 2131231587;
            public const int reset_deivce = 2131231575;
            
            // aapt resource value: 0x7F080364
            public const int result_x5c = 2131231588;
            public const int results_4_dvr = 2131231588;
            // aapt resource value: 0x7F080365
            public const int results_8_16_nvr = 2131231589;
            // aapt resource value: 0x7F080366
            public const int results_8_nvr = 2131231590;
            // aapt resource value: 0x7F080367
            public const int results_c6p = 2131231591;
            // aapt resource value: 0x7F080368
            public const int results_mini_360_plus = 2131231592;
            // aapt resource value: 0x7F080369
            public const int results_mini_trooper = 2131231593;
            // aapt resource value: 0x7F08036A
            public const int results_pic_a1 = 2131231594;
            // aapt resource value: 0x7F08036B
            public const int results_pic_a1c = 2131231595;
            // aapt resource value: 0x7F08036C
            public const int results_pic_a1s = 2131231596;
            // aapt resource value: 0x7F08036D
            public const int results_pic_baidu_c2s = 2131231597;
            // aapt resource value: 0x7F08036E
            public const int results_pic_bg = 2131231598;
            // aapt resource value: 0x7F08036F
            public const int results_pic_c1 = 2131231599;
            // aapt resource value: 0x7F080370
            public const int results_pic_c2 = 2131231600;
            // aapt resource value: 0x7F080373
            public const int results_pic_c2c = 2131231603;
            // aapt resource value: 0x7F080374
            public const int results_pic_c2mini = 2131231604;
            // aapt resource value: 0x7F080375
            public const int results_pic_c2mini2 = 2131231605;
            // aapt resource value: 0x7F080376
            public const int results_pic_c2plus = 2131231606;
            // aapt resource value: 0x7F080377
            public const int results_pic_c2s = 2131231607;
            // aapt resource value: 0x7F080378
            public const int results_pic_c2w = 2131231608;
            // aapt resource value: 0x7F080371
            public const int results_pic_c2_2 = 2131231601;
            // aapt resource value: 0x7F080372
            public const int results_pic_c2_usa = 2131231602;
            // aapt resource value: 0x7F080379
            public const int results_pic_c3 = 2131231609;
            // aapt resource value: 0x7F08037A
            public const int results_pic_c3c = 2131231610;
            // aapt resource value: 0x7F08037B
            public const int results_pic_c3e = 2131231611;
            // aapt resource value: 0x7F08037C
            public const int results_pic_c3s = 2131231612;
            // aapt resource value: 0x7F08037D
            public const int results_pic_c4 = 2131231613;
            // aapt resource value: 0x7F08037E
            public const int results_pic_c4c = 2131231614;
            // aapt resource value: 0x7F08037F
            public const int results_pic_c4e = 2131231615;
            // aapt resource value: 0x7F080380
            public const int results_pic_c4s = 2131231616;
            // aapt resource value: 0x7F080381
            public const int results_pic_c6 = 2131231617;
            // aapt resource value: 0x7F080382
            public const int results_pic_c6c = 2131231618;
            // aapt resource value: 0x7F080383
            public const int results_pic_c6c_1 = 2131231619;
            // aapt resource value: 0x7F080384
            public const int results_pic_c6c_2 = 2131231620;
            // aapt resource value: 0x7F080385
            public const int results_pic_c6h = 2131231621;
            // aapt resource value: 0x7F080386
            public const int results_pic_co2 = 2131231622;
            // aapt resource value: 0x7F080387
            public const int results_pic_d1 = 2131231623;
            // aapt resource value: 0x7F080388
            public const int results_pic_default = 2131231624;
            // aapt resource value: 0x7F080389
            public const int results_pic_f1 = 2131231625;
            // aapt resource value: 0x7F08038A
            public const int results_pic_h2c = 2131231626;
            // aapt resource value: 0x7F08038B
            public const int results_pic_h2s = 2131231627;
            // aapt resource value: 0x7F08038C
            public const int results_pic_n1 = 2131231628;
            // aapt resource value: 0x7F08038D
            public const int results_pic_n1w = 2131231629;
            // aapt resource value: 0x7F08038E
            public const int results_pic_r1 = 2131231630;
            // aapt resource value: 0x7F08038F
            public const int results_pic_r2 = 2131231631;
            // aapt resource value: 0x7F080390
            public const int results_pic_w1 = 2131231632;
            // aapt resource value: 0x7F080391
            public const int results_pic_w3 = 2131231633;
            // aapt resource value: 0x7F080392
            public const int results_pic_x1 = 2131231634;
            // aapt resource value: 0x7F080393
            public const int results_pic_x2 = 2131231635;
            // aapt resource value: 0x7F080394
            public const int results_pic_x3 = 2131231636;
            // aapt resource value: 0x7F080395
            public const int results_pic_x3c = 2131231637;
            // aapt resource value: 0x7F080396
            public const int results_pic_x4 = 2131231638;
            // aapt resource value: 0x7F080397
            public const int results_pic_z1 = 2131231639;
            // aapt resource value: 0x7F080398
            public const int results_w2d = 2131231640;
            // aapt resource value: 0x7F080399
            public const int results_w2s = 2131231641;
            // aapt resource value: 0x7F08039A
            public const int results_wlb = 2131231642;
            // aapt resource value: 0x7F08039B
            public const int results_x5_108tp = 2131231643;
            // aapt resource value: 0x7F080358
            public const int result_5k_vr104d = 2131231576;
            // aapt resource value: 0x7F080359
            public const int result_5k_vr116d = 2131231577;
            // aapt resource value: 0x7F08035A
            public const int result_8_16dvr = 2131231578;
            // aapt resource value: 0x7F08035B
            public const int result_cs_c3w = 2131231579;
            // aapt resource value: 0x7F08035C
            public const int result_cs_vr104d = 2131231580;
            // aapt resource value: 0x7F08035D
            public const int result_cs_vr108d = 2131231581;
            // aapt resource value: 0x7F08035E
            public const int result_cs_vr116d = 2131231582;
            // aapt resource value: 0x7F08035F
            public const int result_pic_dh1 = 2131231583;
            // aapt resource value: 0x7F080360
            public const int result_pic_doorbell = 2131231584;
            // aapt resource value: 0x7F080361
            public const int result_pic_doorbell_hik = 2131231585;
            // aapt resource value: 0x7F080362
            public const int result_pic_light = 2131231586;
            // aapt resource value: 0x7F080363
            public const int result_x5c = 2131231587;
            // aapt resource value: 0x7F08039C
            public const int right_horizontal = 2131231644;
            
            // aapt resource value: 0x7F08039D
            public const int right_horizontal = 2131231645;
            public const int right_twinkle = 2131231645;
            
            // aapt resource value: 0x7F08039E
            public const int right_twinkle = 2131231646;
            public const int ring_off = 2131231646;
            
            // aapt resource value: 0x7F08039F
            public const int ring_off = 2131231647;
            public const int say_bg = 2131231647;
            
            // aapt resource value: 0x7F0803A0
            public const int say_bg = 2131231648;
            public const int screenshot = 2131231648;
            
            // aapt resource value: 0x7F0803A1
            public const int screenshot = 2131231649;
            public const int screenshot_def = 2131231649;
            
            // aapt resource value: 0x7F0803A2
            public const int screenshot_def = 2131231650;
            public const int screenshot_sel = 2131231650;
            
            // aapt resource value: 0x7F0803A3
            public const int screenshot_sel = 2131231651;
            public const int search = 2131231651;
            
            // aapt resource value: 0x7F0803A4
            public const int search = 2131231652;
            public const int search_bnt = 2131231652;
            
            // aapt resource value: 0x7F0803A5
            public const int search_bnt = 2131231653;
            public const int search_bnt_sel = 2131231653;
            
            // aapt resource value: 0x7F0803A6
            public const int search_bnt_sel = 2131231654;
            public const int search_button_selector = 2131231654;
            
            // aapt resource value: 0x7F0803A7
            public const int search_button_selector = 2131231655;
            public const int search_input = 2131231655;
            
            // aapt resource value: 0x7F0803A8
            public const int search_input = 2131231656;
            // aapt resource value: 0x7F0803A9
            public const int seekbar_thumb = 2131231657;
            // aapt resource value: 0x7F0803AB
            public const int selected_icon = 2131231659;
            // aapt resource value: 0x7F0803AC
            public const int selector_pickerview_btn = 2131231660;
            public const int seekbar_thumb = 2131231656;
            
            // aapt resource value: 0x7F0803AA
            public const int select_icon = 2131231658;
            public const int selected_icon = 2131231658;
            // aapt resource value: 0x7F0803AB
            public const int selector_pickerview_btn = 2131231659;
            // aapt resource value: 0x7F0803A9
            public const int select_icon = 2131231657;
            // aapt resource value: 0x7F0803AC
            public const int server1 = 2131231660;
            
            // aapt resource value: 0x7F0803AD
            public const int server1 = 2131231661;
            public const int server2 = 2131231661;
            
            // aapt resource value: 0x7F0803AE
            public const int server2 = 2131231662;
            public const int server3 = 2131231662;
            
            // aapt resource value: 0x7F0803AF
            public const int server3 = 2131231663;
            public const int server4 = 2131231663;
            
            // aapt resource value: 0x7F0803B0
            public const int server4 = 2131231664;
            public const int setup = 2131231664;
            
            // aapt resource value: 0x7F0803B1
            public const int setup = 2131231665;
            public const int setup_sel = 2131231665;
            
            // aapt resource value: 0x7F0803B2
            public const int setup_sel = 2131231666;
            public const int setup_wechat = 2131231666;
            
            // aapt resource value: 0x7F0803B3
            public const int setup_wechat = 2131231667;
            public const int share_management_label_button = 2131231667;
            
            // aapt resource value: 0x7F0803B4
            public const int share_management_label_button = 2131231668;
            public const int share_management_label_button_sel = 2131231668;
            
            // aapt resource value: 0x7F0803B5
            public const int share_management_label_button_sel = 2131231669;
            public const int shipin7_alarm_msg_new = 2131231669;
            
            // aapt resource value: 0x7F0803B6
            public const int shipin7_alarm_msg_new = 2131231670;
            public const int shrink_screen_normal = 2131231670;
            
            // aapt resource value: 0x7F0803B7
            public const int shrink_screen_normal = 2131231671;
            public const int shrink_screen_pressed = 2131231671;
            
            // aapt resource value: 0x7F0803B8
            public const int shrink_screen_pressed = 2131231672;
            public const int small_button_cameralist = 2131231672;
            
            // aapt resource value: 0x7F0803B9
            public const int small_button_cameralist = 2131231673;
            public const int sound_off = 2131231673;
            
            // aapt resource value: 0x7F0803BA
            public const int sound_off = 2131231674;
            public const int sound_off_blue = 2131231674;
            
            // aapt resource value: 0x7F0803BB
            public const int sound_off_blue = 2131231675;
            public const int sound_off_sel = 2131231675;
            
            // aapt resource value: 0x7F0803BC
            public const int sound_off_sel = 2131231676;
            public const int sound_off_sel_blue = 2131231676;
            
            // aapt resource value: 0x7F0803BD
            public const int sound_off_sel_blue = 2131231677;
            public const int sound_on = 2131231677;
            
            // aapt resource value: 0x7F0803BE
            public const int sound_on = 2131231678;
            public const int sound_on_blue = 2131231678;
            
            // aapt resource value: 0x7F0803BF
            public const int sound_on_blue = 2131231679;
            public const int sound_on_sel = 2131231679;
            
            // aapt resource value: 0x7F0803C0
            public const int sound_on_sel = 2131231680;
            public const int sound_on_sel_blue = 2131231680;
            
            // aapt resource value: 0x7F0803C1
            public const int sound_on_sel_blue = 2131231681;
            public const int sound_source = 2131231681;
            
            // aapt resource value: 0x7F0803C2
            public const int sound_source = 2131231682;
            public const int sound_source_sel = 2131231682;
            
            // aapt resource value: 0x7F0803C3
            public const int sound_source_sel = 2131231683;
            public const int speech = 2131231683;
            
            // aapt resource value: 0x7F0803C4
            public const int speech = 2131231684;
            public const int speech_0 = 2131231684;
            
            // aapt resource value: 0x7F0803C5
            public const int speech_0 = 2131231685;
            public const int speech_1 = 2131231685;
            
            // aapt resource value: 0x7F0803C6
            public const int speech_1 = 2131231686;
            public const int speech_2 = 2131231686;
            
            // aapt resource value: 0x7F0803C7
            public const int speech_2 = 2131231687;
            public const int speech_3 = 2131231687;
            
            // aapt resource value: 0x7F0803C8
            public const int speech_3 = 2131231688;
            public const int speech_4 = 2131231688;
            
            // aapt resource value: 0x7F0803C9
            public const int speech_4 = 2131231689;
            public const int speech_5 = 2131231689;
            
            // aapt resource value: 0x7F0803CA
            public const int speech_5 = 2131231690;
            public const int speech_full_selector = 2131231690;
            
            // aapt resource value: 0x7F0803CB
            public const int speech_full_selector = 2131231691;
            // aapt resource value: 0x7F0803CC
            public const int stop = 2131231692;
            // aapt resource value: 0x7F0803CF
            public const int stopbtn_selector = 2131231695;
            // aapt resource value: 0x7F0803D0
            public const int stoplay_btn = 2131231696;
            // aapt resource value: 0x7F0803D1
            public const int stoplay_btn_sel = 2131231697;
            // aapt resource value: 0x7F0803CD
            public const int stop_disable = 2131231693;
            public const int stop = 2131231691;
            
            // aapt resource value: 0x7F0803CE
            public const int stop_press = 2131231694;
            public const int stopbtn_selector = 2131231694;
            // aapt resource value: 0x7F0803CF
            public const int stoplay_btn = 2131231695;
            // aapt resource value: 0x7F0803D0
            public const int stoplay_btn_sel = 2131231696;
            // aapt resource value: 0x7F0803CC
            public const int stop_disable = 2131231692;
            // aapt resource value: 0x7F0803CD
            public const int stop_press = 2131231693;
            // aapt resource value: 0x7F0803D1
            public const int success = 2131231697;
            
            // aapt resource value: 0x7F0803D2
            public const int success = 2131231698;
            public const int success_icon = 2131231698;
            
            // aapt resource value: 0x7F0803D3
            public const int success_icon = 2131231699;
            public const int success_img = 2131231699;
            
            // aapt resource value: 0x7F0803D4
            public const int success_img = 2131231700;
            public const int sure_background_def = 2131231700;
            
            // aapt resource value: 0x7F0803D5
            public const int sure_background_def = 2131231701;
            public const int sure_background_sel = 2131231701;
            
            // aapt resource value: 0x7F0803D6
            public const int sure_background_sel = 2131231702;
            public const int switch_camera = 2131231702;
            
            // aapt resource value: 0x7F0803D7
            public const int switch_camera = 2131231703;
            public const int tab_left = 2131231703;
            
            // aapt resource value: 0x7F0803D8
            public const int tab_left = 2131231704;
            public const int tab_left_sel = 2131231704;
            
            // aapt resource value: 0x7F0803D9
            public const int tab_left_sel = 2131231705;
            public const int tab_right = 2131231705;
            
            // aapt resource value: 0x7F0803DA
            public const int tab_right = 2131231706;
            public const int tab_right_sel = 2131231706;
            
            // aapt resource value: 0x7F0803DB
            public const int tab_right_sel = 2131231707;
            public const int tiltle_button_selector = 2131231707;
            
            // aapt resource value: 0x7F0803DC
            public const int tiltle_button_selector = 2131231708;
            public const int timeline = 2131231708;
            
            // aapt resource value: 0x7F0803DD
            public const int timeline = 2131231709;
            public const int timeline_sel = 2131231709;
            
            // aapt resource value: 0x7F0803DE
            public const int timeline_sel = 2131231710;
            public const int tip_background = 2131231710;
            
            // aapt resource value: 0x7F0803DF
            public const int tip_background = 2131231711;
            public const int tip_textview_bg = 2131231711;
            
            // aapt resource value: 0x7F0803E0
            public const int tip_textview_bg = 2131231712;
            public const int title_down_bg = 2131231712;
            
            // aapt resource value: 0x7F0803E1
            public const int title_down_bg = 2131231713;
            public const int title_down_play = 2131231713;
            
            // aapt resource value: 0x7F0803E2
            public const int title_down_play = 2131231714;
            public const int title_down_play_sel = 2131231714;
            
            // aapt resource value: 0x7F0803E3
            public const int title_down_play_sel = 2131231715;
            public const int title_down_play_selector = 2131231715;
            
            // aapt resource value: 0x7F0803E4
            public const int title_down_play_selector = 2131231716;
            public const int title_menu_bg = 2131231716;
            
            // aapt resource value: 0x7F0803E5
            public const int title_menu_bg = 2131231717;
            public const int tittel_button_bg = 2131231717;
            
            // aapt resource value: 0x7F0803E6
            public const int tittel_button_bg = 2131231718;
            public const int tittel_button_press_bg = 2131231718;
            
            // aapt resource value: 0x7F0803E7
            public const int tittel_button_press_bg = 2131231719;
            public const int tooltip_frame_dark = 2131231719;
            
            // aapt resource value: 0x7F0803E8
            public const int tooltip_frame_dark = 2131231720;
            public const int tooltip_frame_light = 2131231720;
            
            // aapt resource value: 0x7F0803E9
            public const int tooltip_frame_light = 2131231721;
            public const int top_bar_bg = 2131231721;
            
            // aapt resource value: 0x7F0803EA
            public const int top_bar_bg = 2131231722;
            public const int track_bar_bg = 2131231722;
            
            // aapt resource value: 0x7F0803EB
            public const int track_bar_bg = 2131231723;
            public const int translucent = 2131231723;
            
            // aapt resource value: 0x7F0803EC
            public const int translucent = 2131231724;
            public const int @unchecked = 2131231724;
            
            // aapt resource value: 0x7F0803ED
            public const int @unchecked = 2131231725;
            public const int unlock = 2131231725;
            
            // aapt resource value: 0x7F0803EE
            public const int unlock = 2131231726;
            public const int unlock_def = 2131231726;
            
            // aapt resource value: 0x7F0803EF
            public const int unlock_def = 2131231727;
            // aapt resource value: 0x7F0803F0
            public const int unlock_sel = 2131231728;
            // aapt resource value: 0x7F0803F3
            public const int upgrade = 2131231731;
            // aapt resource value: 0x7F0803F1
            public const int up_horizontal = 2131231729;
            public const int unlock_sel = 2131231727;
            
            // aapt resource value: 0x7F0803F2
            public const int up_twinkle = 2131231730;
            public const int upgrade = 2131231730;
            // aapt resource value: 0x7F0803F0
            public const int up_horizontal = 2131231728;
            // aapt resource value: 0x7F0803F1
            public const int up_twinkle = 2131231729;
            // aapt resource value: 0x7F0803F3
            public const int user = 2131231731;
            
            // aapt resource value: 0x7F0803F4
            public const int user = 2131231732;
            public const int vertical_preview_sound_selector = 2131231732;
            
            // aapt resource value: 0x7F0803F5
            public const int vertical_preview_sound_selector = 2131231733;
            // aapt resource value: 0x7F0803F6
            public const int vertical_preview_stop_selector = 2131231734;
            // aapt resource value: 0x7F080406
            public const int videogo_icon = 2131231750;
            // aapt resource value: 0x7F0803F7
            public const int video_background = 2131231735;
            // aapt resource value: 0x7F0803F8
            public const int video_camera1_1 = 2131231736;
            // aapt resource value: 0x7F0803F9
            public const int video_camera1_2 = 2131231737;
            // aapt resource value: 0x7F0803FA
            public const int video_camera1_3 = 2131231738;
            // aapt resource value: 0x7F0803FB
            public const int video_file_watermark = 2131231739;
            // aapt resource value: 0x7F0803FC
            public const int video_quality_selector = 2131231740;
            // aapt resource value: 0x7F0803FD
            public const int video_talk_sdk_icn_watch = 2131231741;
            // aapt resource value: 0x7F0803FE
            public const int video_talk_sdk_placeholder_images_user = 2131231742;
            // aapt resource value: 0x7F0803FF
            public const int video_talk_sdk_video_answer = 2131231743;
            // aapt resource value: 0x7F080400
            public const int video_talk_sdk_video_hangup = 2131231744;
            // aapt resource value: 0x7F080401
            public const int video_talk_sdk_video_record_off = 2131231745;
            // aapt resource value: 0x7F080402
            public const int video_talk_sdk_video_record_on = 2131231746;
            // aapt resource value: 0x7F080403
            public const int video_talk_sdk_video_snap = 2131231747;
            // aapt resource value: 0x7F080404
            public const int video_talk_sdk_video_stop = 2131231748;
            public const int vertical_preview_stop_selector = 2131231733;
            
            // aapt resource value: 0x7F080405
            public const int video_talk_sdk_video_switch_camera = 2131231749;
            public const int videogo_icon = 2131231749;
            
            // aapt resource value: 0x7F080410
            public const int waiting_bg = 2131231760;
            // aapt resource value: 0x7F0803F6
            public const int video_background = 2131231734;
            
            // aapt resource value: 0x7F080411
            public const int waiting_progressbar_bg = 2131231761;
            // aapt resource value: 0x7F0803F7
            public const int video_camera1_1 = 2131231735;
            
            // aapt resource value: 0x7F080407
            public const int wait_1 = 2131231751;
            // aapt resource value: 0x7F0803F8
            public const int video_camera1_2 = 2131231736;
            
            // aapt resource value: 0x7F080408
            public const int wait_2 = 2131231752;
            // aapt resource value: 0x7F0803F9
            public const int video_camera1_3 = 2131231737;
            
            // aapt resource value: 0x7F080409
            public const int wait_3 = 2131231753;
            // aapt resource value: 0x7F0803FA
            public const int video_file_watermark = 2131231738;
            
            // aapt resource value: 0x7F08040A
            public const int wait_4 = 2131231754;
            // aapt resource value: 0x7F0803FB
            public const int video_quality_selector = 2131231739;
            
            // aapt resource value: 0x7F08040B
            public const int wait_5 = 2131231755;
            // aapt resource value: 0x7F0803FC
            public const int video_talk_sdk_icn_watch = 2131231740;
            
            // aapt resource value: 0x7F08040C
            public const int wait_6 = 2131231756;
            // aapt resource value: 0x7F0803FD
            public const int video_talk_sdk_placeholder_images_user = 2131231741;
            
            // aapt resource value: 0x7F08040D
            public const int wait_7 = 2131231757;
            // aapt resource value: 0x7F0803FE
            public const int video_talk_sdk_video_answer = 2131231742;
            
            // aapt resource value: 0x7F08040E
            public const int wait_8 = 2131231758;
            // aapt resource value: 0x7F0803FF
            public const int video_talk_sdk_video_hangup = 2131231743;
            // aapt resource value: 0x7F080400
            public const int video_talk_sdk_video_record_off = 2131231744;
            // aapt resource value: 0x7F080401
            public const int video_talk_sdk_video_record_on = 2131231745;
            // aapt resource value: 0x7F080402
            public const int video_talk_sdk_video_snap = 2131231746;
            // aapt resource value: 0x7F080403
            public const int video_talk_sdk_video_stop = 2131231747;
            // aapt resource value: 0x7F080404
            public const int video_talk_sdk_video_switch_camera = 2131231748;
            
            // aapt resource value: 0x7F08040F
            public const int wait_upload_img = 2131231759;
            public const int waiting_bg = 2131231759;
            // aapt resource value: 0x7F080410
            public const int waiting_progressbar_bg = 2131231760;
            // aapt resource value: 0x7F080406
            public const int wait_1 = 2131231750;
            // aapt resource value: 0x7F080407
            public const int wait_2 = 2131231751;
            // aapt resource value: 0x7F080408
            public const int wait_3 = 2131231752;
            // aapt resource value: 0x7F080409
            public const int wait_4 = 2131231753;
            // aapt resource value: 0x7F08040A
            public const int wait_5 = 2131231754;
            // aapt resource value: 0x7F08040B
            public const int wait_6 = 2131231755;
            // aapt resource value: 0x7F08040C
            public const int wait_7 = 2131231756;
            // aapt resource value: 0x7F08040D
            public const int wait_8 = 2131231757;
            // aapt resource value: 0x7F08040E
            public const int wait_upload_img = 2131231758;
            // aapt resource value: 0x7F080411
            public const int water_alarm = 2131231761;
            
            // aapt resource value: 0x7F080412
            public const int water_alarm = 2131231762;
            public const int wifi_config_bg = 2131231762;
            
            // aapt resource value: 0x7F080413
            public const int wifi_config_bg = 2131231763;
            public const int wifi_connect_tip = 2131231763;
            
            // aapt resource value: 0x7F080414
            public const int wifi_connect_tip = 2131231764;
            public const int yuntai_normal = 2131231764;
            
            // aapt resource value: 0x7F080415
            public const int yuntai_normal = 2131231765;
            public const int yuntai_pressed = 2131231765;
            
            // aapt resource value: 0x7F080416
            public const int yuntai_pressed = 2131231766;
            public const int yxs_head = 2131231766;
            
            // aapt resource value: 0x7F080417
            public const int yxs_head = 2131231767;
            // aapt resource value: 0x7F080418
            public const int z1_bg = 2131231768;
            public const int z1_bg = 2131231767;
            
            static Drawable()
            {
@@ -10429,10 +10426,7 @@
            public const int ic_launcher_round = 2131558401;
            
            // aapt resource value: 0x7F0D0003
            public const int Loading = 2131558403;
            // aapt resource value: 0x7F0D0004
            public const int videogo_icon = 2131558404;
            public const int videogo_icon = 2131558403;
            
            static Mipmap()
            {
HDL-ON_Android/Resources/drawable/Loading.png

HDL-ON_Android/Resources/mipmap-hdpi/Loading.png
Binary files differ
HDL-ON_Android/Resources/mipmap-mdpi/Loading.png
Binary files differ
HDL-ON_Android/Resources/mipmap-xhdpi/Loading.png
Binary files differ
HDL-ON_Android/Resources/mipmap-xxhdpi/Loading.png
Binary files differ
HDL-ON_Android/Resources/mipmap-xxxhdpi/Loading.png
Binary files differ
HDL-ON_iOS/HDL-ON_iOS.csproj
@@ -55,7 +55,7 @@
        <MtouchExtraArgs>-gcc_flags="-dead_strip -ObjC"</MtouchExtraArgs>
        <MtouchEnableSGenConc>false</MtouchEnableSGenConc>
<CodesignEntitlements>Entitlements.plist</CodesignEntitlements>
<CodesignProvision>On+Dev-20210604-1</CodesignProvision>
<CodesignProvision>On+Dev-20210428-1</CodesignProvision>
    </PropertyGroup>
    <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|iPhone' ">
        <DebugType>none</DebugType>
@@ -647,6 +647,7 @@
      <BundleResource Include="Resources\Phone\FunctionIcon\Electrical\TV\PlusIcon.png" />
      <BundleResource Include="Resources\Phone\FunctionIcon\Electrical\TV\ReduceIcon.png" />
      <BundleResource Include="Resources\Phone\FunctionIcon\Electrical\TVThinIcon.png" />
      <BundleResource Include="Resources\Phone\FunctionIcon\Electrical\TVIcon.png" />
      <BundleResource Include="Resources\Phone\FunctionIcon\EnvironmentalScience\SmogIcon.png" />
      <BundleResource Include="Resources\Phone\FunctionIcon\EnvironmentalScience\LocationIcon.png" />
      <BundleResource Include="Resources\Phone\FunctionIcon\EnvironmentalScience\UpArrow.png" />
@@ -933,7 +934,6 @@
      <BundleResource Include="Resources\Phone\FunctionIcon\Electrical\Fan\ComfortableModeSelect.png" />
      <BundleResource Include="Resources\Phone\FunctionIcon\Electrical\Fan\DialogTitleMenuGroud4.png" />
      <BundleResource Include="Resources\Phone\FunctionIcon\Electrical\WeepRobot\MuteSelect.png" />
      <BundleResource Include="Resources\Phone\FunctionIcon\Electrical\WeepRobot\Battery.png" />
      <BundleResource Include="Resources\Phone\FunctionIcon\Electrical\WeepRobot\ControlRight.png" />
      <BundleResource Include="Resources\Phone\FunctionIcon\Electrical\WeepRobot\AreaMode.png" />
      <BundleResource Include="Resources\Phone\FunctionIcon\Electrical\WeepRobot\AutoMode.png" />
@@ -1238,27 +1238,32 @@
      <BundleResource Include="Resources\Phone\FunctionIcon\Curtain\CurtainUpIcon.png" />
      <BundleResource Include="Resources\Phone\FunctionIcon\Curtain\CurtainUpIconOn.png" />
      <BundleResource Include="Resources\Phone\PersonalCenter\SmartSpeaker.png" />
      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\HomeIcon\irpjt_blue.png" />
      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\HomeIcon\irpjt_white.png" />
      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\HomeIcon\irstb_blue.png" />
      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\HomeIcon\irstb_white.png" />
      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\irpjt.png" />
      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\irstb.png" />
      <BundleResource Include="Resources\Phone\FunctionIcon\Energy\EnergyDrodUpIcon.png" />
      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\sensormegahealth.png" />
      <BundleResource Include="Resources\Phone\FunctionIcon\Electrical\TV\TVOkIconDown.png" />
      <BundleResource Include="Resources\Phone\FunctionIcon\Electrical\TV\TVOkIconLeft.png" />
      <BundleResource Include="Resources\Phone\FunctionIcon\Electrical\TV\TVOkIconRight.png" />
      <BundleResource Include="Resources\Phone\FunctionIcon\Electrical\TV\TVOkIconUp.png" />
      <BundleResource Include="Resources\Phone\FunctionIcon\Electrical\TV\TVOkIconOk.png" />
      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\irtvxm.png" />
      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\HomeIcon\irtvxm_blue.png" />
      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\HomeIcon\irtvxm_white.png" />
      <BundleResource Include="Resources\Phone\PersonalCenter\AddDevice\SenesorMegahealthBg.png" />
      <BundleResource Include="Resources\Phone\Public\Scan.png" />
      <BundleResource Include="Resources\Phone\FunctionIcon\ArmSensor\SomeoneFellBgIcon.png" />
      <BundleResource Include="Resources\Phone\FunctionIcon\ArmSensor\SomeoneInBgIcon.png" />
      <BundleResource Include="Resources\Phone\FunctionIcon\ArmSensor\UnderProtectionBgIcon.png" />
      <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\Redistribution.png" />
      <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\DoorLock.png" />
      <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\LockPictrue2.png" />
      <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\UnLockManager.png" />
      <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\LockPictrue1.png" />
      <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\NormallyOpenIcon2.png" />
      <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\CrearPswBackgroud.png" />
      <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\NormallyOpenIcon3.png" />
      <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\Editor.png" />
      <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\NormallyOpenIcon1.png" />
      <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\Connect.png" />
      <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\History.png" />
      <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\Screen.png" />
      <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\BindScene.png" />
      <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\Shard.png" />
      <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\Delete.png" />
      <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\UnConnect.png" />
      <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\More.png" />
      <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\Mute.png" />
      <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\Voice.png" />
      <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\UnLockPictrue1.png" />
      <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\Hide.png" />
      <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\UnLockPictrue2.png" />
      <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\UnLockPictrue3.png" />
      <BundleResource Include="Resources\Phone\Public\BatteryEnough.png" />
      <BundleResource Include="Resources\Phone\Public\BatteryNot.png" />
    </ItemGroup>
    <ItemGroup>
      <ITunesArtwork Include="iTunesArtwork" />
HDL-ON_iOS/Info.plist
@@ -104,9 +104,9 @@
    <key>UIStatusBarStyle</key>
    <string>UIStatusBarStyleLightContent</string>
    <key>CFBundleShortVersionString</key>
    <string>1.2.202106081</string>
    <string>1.2.202104282</string>
    <key>CFBundleVersion</key>
    <string>1.2.06081</string>
    <string>202104282</string>
    <key>NSLocationWhenInUseUsageDescription</key>
    <string>Use geographic location to provide services such as weather</string>
    <key>NSAppleMusicUsageDescription</key>
HDL-ON_iOS/Resources/Language.ini
@@ -70,14 +70,14 @@
69=All
70=Curtain
71=Name
72=Address
72=The address of the residence
73=Floor Management
74=Room Management
75=Administrator migration
75=Admin Migration
76=Privilege Migration
77=Debugging privilege
78=The administrator is migrated to other user.
79=All of the data for the residence is migrated to new user.
79=All residence data are migrated to new user.
80=Allow the staff to visit your home remotely
81=Floor
82=Add floor
@@ -188,8 +188,8 @@
187=Fan
188=Socket
189=Level
190=Chl
191=Vol
190=Channel
191=Volume
192=TV
193=The room has existed, fail to change.
194=Environment
@@ -382,7 +382,6 @@
378=Transition time
379=Transition speed
380=This function is not available!
381=Reload
400=Welcome home
401=Invalid barcode, please try again
402=Try again
@@ -412,6 +411,8 @@
426=Air dry time
427=Disinfect time
428=Anion Time
429=Real time power consumption: {0}kw
429=H
430=Min
431=You are currently adding any platform devices to
@@ -422,7 +423,7 @@
436=Added Devices
437=Device List
438=humidity:{0}%    air:{1}    wind:{2}
439=Real time: {0} kw
439=Real time power consumption: {0} kw
440=Next step
441=Please select all areas of capture status
442=Generate Scene
@@ -439,25 +440,7 @@
453=Alarm mute
454=Deployment information
455=The name can not be blank.
456=Canvas
457=Energy consumption
458=Date
459=Real time energy consumption
460=Energy consumption of this month
461=Outdoor/Indoor
462=You haven't added any devices yet
'
463=Please input the SN code of the device
464=Can start using Zhaoguan millimeter wave
465=Delete device
466=STB
467=Projector
468=Someone fell
469=Someone's in
'
470=Under protection
471=Millimeter wave sensor
1000=Room Humidity
1001=V-chip
1002=Anion
@@ -546,31 +529,79 @@
1084=1st Gear
1085=2nd Gear
1086=3rd Gear
4000=Video intercom
4001=Call record
4002=*Cloud photos are only kept for 30 days
4003=Door phone call
4004=Answered
4005=Unlocked
4006=year
4007=From
4008=Call
4009=Unlocked
4010=Missed
4011=Rejected
4012=The configuration parameters are abnormal!
4013=Access Control QR Code
4014=Temporary password
1087=Unlock
1088=Temp. Password
1089=Connected
1090=Disconnected
1091=Generate
1092=Effective time
1093=Expire time
1094=Select time
1095=Select Date
1096=Generate
1097=Temporary password has been copied
1098=Clear Password?
1099=The expire time must be later than the effective time
1100=Unlock Method
1101=It'll synchronize with actual lock, confirm to delete?
1102=Delete
1103=Remark
1104=The remark can not be blank.
1105=Assign to
1106=Target Scene Not Exist
1107=Select Scene
1108=Unlock
1109=Always On
1110=Setting
1111=Automation
1112=Turn on "Always On" Mode
1113=Turn off "Always On" Mode
1114=Edit
1115=Always On will be off at {0}
1116=Condition
1117=Motion
1118=Always On
1119=Lock
1120=User
1121=Unlock Method
1122=Fingerprint
1123=Card
1124=Key
1125=Information
1126=Unlock
1127=Alarm
1128=Offline
1129=For first user, Please bind lock password
1130=Please enter admin password
1131=Bind Successfully
1132=Skip to personal password for unlock
1133=Skip
1134=Please draw your pattern
1135=Lock will be always on after setting, confirm to proceed
1136=Confirm
1137=Expire
1138=Always On will expire after {0} hours
1139=Please enter expire time
1140=Expire time should not be more than 72 hours
1141=Expire time should not be less than 1 hour
1142=Fail to set, please try again
1143=Fail to verify administrator ID, please log in again account
1144=Your residence is being migrated to other HDL
1145=Note:
1146=1. All of your residence data will be migrate to new user.{0}2. After migration, original member will be{0}automatically unbound from this residence.{0}3. The new account is a valid HDL one.{0}4. The account from receiver cannot be the same{0}as that from migration side.
1147=Confirm
1148=Input receiver's account
1149=Profile
1150=Confirm admin migration from {0} to {1}
1151=The account does not exist.
1152=Fail to Transfer Ownership to Yourself
1153=Terminate
1154=Transferring to User, Please Wait…
1155={0} has become a residential administrator
1156=The residence data will be deleted from your account
1157=Fail to transfer
1158=Please try again
5000=Music
5001=Group
5002=Setting
@@ -619,148 +650,8 @@
5045=General volume
5046=Adjust volume
5047="QQ music" has not installed in your cell phone, please proceed in App center.
6000=normal
6001=Device status
6002=pcs
6003=Current IR control device
6004=Remote controller has been added
6005=AC
6006=TV
6007=Fan
6008=Set-top box
6009=DVD
6010=Projector
6011=Custom
6012=IR control
6013=Device Management
6014=Add remote controller
6015=Online
6016=Offline
6017=Version number
6018=Please enter the name of the remote controller
6019=Reminder: After the remote controller is created, it can be found and used in Function-Electrical Category{\r\n}
6020=Recommended button
6021=Please enter the button name
6022=Next
6023=Power
6024=Volume+
6025=Volume-
6026=channel+
6027=Channel-
6028=up
6029=down
6030=Left
6031=right
6032=Mute
6034=Confirm
6035=Play
6037=Exit
6038=Menu
6039=Pause
6040=Back
6041=Stop
6042=Homepage
6043=Fast forward
6044=Rewind
6045=Timing
6046=Copy remote control function
6047=Aim at the center of the remote controller and press the same button
6048=Smart remote controller
6049=Add button
6050=*Long press for custom sorting
6051=Done
6052=Added successfully
6053=Can be classified-function-electrical operation and use
6054=Classification
6055=Remote controller name
6056=Region
6057=Continue to add
6058=Electrical
6059=Failed to add
6060=Retry
6061=Match the remote control
6062=Please click the button below
6063=Confirm whether the device is responding
6064=Control failed
6065=Control success
6066=Power on
6067=Mode cooling
6068=Wind speed stroke
6069=Temperature 26℃
6070=Delete device
6071=Modify name
6072=Confirm deletion
6073=Cancel
6074=The remote controller cannot exceed 10 pcs
6075=The area where the remote control belongs:
6076=Edit information
6077=Version upgrade
6078=System is under maintenance~Please try again later~
6079=Failed to get data
6080=This function is temporarily not supported
6081=Select IR brand
6082=Shaking
6083=Low speed
6084=Medium speed
6085=High speed
6086=Auto
6087=Temperature+
6088=Temperature-
6089=Air purifier
6090=Water heater
6091=Product that does not exist
6092=The device does not exist
6093=The device is not online
6094=The gateway device does not exist
7108=Leak/No Leak
7109=Leak
7110=No leak
7111=Water leaking/no water leaking
7112=Water leaking
7113=No water leaking
7114=Someone/Nobody
7115=Someone
7116=Nobody
7117=Open/Close
7118=On
7119=Close
7120=Anti-dismantling function
7121=Online
7122=Not online
7123=Air quality
7124=Excellent
7125=Good
7126=Poor
7127=Send notification
7128=Notification content
7129=(within 100 characters)
7130=Account selection
7131=App push
7132=Automation
7133=Executed
6000=Rename
6001=Please enter a name
6002=Xiaodu
6003=aispeech
6004="Unbind requires a third-party APP for operation", "transfer to a third-party APP"
6005=Unbind
6006=Smart speaker
6007=Control content
6008=Failed to upload data
6009=Failed to configure data
6010="There is no speaker yet,", "Please go to the third-party APP to bind the smart speaker."
6011=Modification of remarks is unsuccessful!
6012=Do you want to unbind?
6013=Unbinding...
6014=transfer to third-party APP
6015=Add speakers
7000=Create automation
7001=Edit automation
7002=If
@@ -869,7 +760,7 @@
7105=Light pollution: 75 ~ 115ug/m3
7106=Moderate pollution: 115 ~ 150ug/m3
7107=Heavy pollution: > 150ug/m3
9000=Please sign in with new cell phone number.
9001=Please sign in with new email address.
9002=New cell phone number is revised.
@@ -940,7 +831,7 @@
9066=Remarks
9067=Remarks cannot be blank.
9068=Do you want to unbind?
10000=Invalid password, please log in again.
10001=Fail to request server, please try again later.
10002=System maintaining, please try again later.
@@ -975,9 +866,9 @@
10031=The device should not be blank.
10032=The user does not have permission.
10033=The device does not exist.
[Chinese]
1=登录
2=手机号登录
@@ -1369,7 +1260,7 @@
406=会客
407=阅读
408=确认添加
409=功能品牌
410=你当前还未添加任何平台设备
411=其他平台设备均由第三方服务商提供支持
@@ -1417,24 +1308,8 @@
453=报警静音
454=布防信息
455=名称不能为空。
456=画布
457=能耗
458=日期
459=实时能耗
460=本月能耗
461=室外/室内
462=您当前还未添加任何设备
463=请输入设备机上的sn码
464=可以开始使用兆观毫米波了
465=删除设备
466=机顶盒
467=投影仪
468=有人跌倒
469=有人进入
470=防护中
471=毫米波传感器
1000=室内湿度
1001=童锁
1002=负离子
@@ -1522,8 +1397,86 @@
1084=风速1档
1085=风速2档
1086=风速3档
1087=一键开锁
1087=Unlock
1088=临时密码开锁
1088=Temp. Password
1089=已连接
1089=Connected
1090=未连接
1090=Disconnected
1091=生成临时密码
1091=Generate
1092=生效时间
1092=Effective time
1093=失效时间
1093=
1094=选择时间
1095=选择日期
1096=Generate
1097=临时密码已经复制
1098=清除当前临时密码?
1099=生效时间必须大于失效时间
1100=开锁方式管理
1101=删除操作将被同步于实体锁上{0}是否还需要删除?
1102=确认删除
1103=修改备注名称
1104=备注名称不能为空
1105=分配至
1106=检测不到可供选择的场景
1107=选择场景
1108=锁已打开
1109=常开
1110=时效性常开设置
1111=常开自动化
1112=打开常开模式
1113=关闭常开模式
1114=编辑
1115=常开模式将于{0}关闭
1116=条件
1117=动作
1118=常开模式
1119=锁
1120=用户
1121=开锁方式
1122=指纹
1123=卡
1124=钥匙
1125=信息类型
1126=开锁信息
1127=报警类信息
1128=设备不在线
1129=第一次使用,请先绑定门锁密码
1130=请输入门锁管理员密码
1131=门锁绑定成功
1132=为了安全,请跳转至个人中心{0}设置个人密码,并应用于门锁开锁
1133=跳转
1134=请绘制图案
1135=设置常开模式后{0}您的门锁将处于打开状态{0}是否继续开启
1136=确认开启
1137=失效设置
1138=常开模式将于{0}小时后失效
1139=请输入失效时间
1140=失效时间不能大于72小时
1141=失效时间不能小于1小时
1142=常开模式关闭设置失效,请重试
1143=管理员身份验证失败,请重新登录
1144=您的住宅将过户给其他HDL账号
1145=请注意:
1146=1.该住宅您的数据(云端数据)将全部转移给新的户主{0}2.过户后,原有的成员将自动解绑该住宅{0}3.新户主账号为有效的HDL账号{0}4.接收方账号与转移方账号不可为同一个账号
1147=确认过户
1148=请输入接收方账号
1149=个人资料
1150=确认过户{0}的管理员账号给账号{1}
1151=目标账号并不存在
1152=不能自己过户给自己
1153=终止
1154=正在过户给用户,请稍后...
1155=用户{0}已经成为住宅行管理员
1156=该住宅的信息将在您的账号中删除
1157=过户失败
1158=请重新尝试
4000=可视对讲
4001=通话记录
4002=*云端照片只保留30天
@@ -1539,7 +1492,7 @@
4012=配置参数有异常!
4013=门禁二维码
4014=临时密码
5000=音乐
5001=组合
5002=设置
@@ -1588,8 +1541,8 @@
5045=总音量
5046=调节音量
5047=你手机暂未安装"QQ音乐"{\r\n}请前往手机商场安装
6000=正常
6001=设备状态
6002=个
@@ -1599,7 +1552,7 @@
6006=电视
6007=风扇
6008=机顶盒
6009=DVD
6009=DVD/EVD/VCD
6010=投影仪
6011=自定义
6012=红外遥控
@@ -1669,23 +1622,7 @@
6078=系统维护中~请稍后再试~
6079=获取数据失败
6080=暂时不支持该功能
6081=选择红外品牌
6082=摇头
6083=低速
6084=中速
6085=高速
6086=自动
6087=温度+
6088=温度-
6089=空气净化器
6090=热水器
6091=不存在的产品
6092=设备不存在
6093=设备不在线
6094=网关设备不存在
7000=新建自动化
7001=编辑自动化
7002=如果
@@ -1820,7 +1757,7 @@
7131=App推送
7132=自动化
7133=已执行
9000=请使用新的手机账号登录APP
9001=请使用新的邮箱账号登录APP
9002=登录手机修改完成
@@ -1890,7 +1827,7 @@
9066=备注
9067=备注不能为空
9068=是否解除绑定?
10000=无效登录密钥,请重新登录!
10001=请求服务器失败,请稍后再试!
10002=系统维护中,请稍后再试!
@@ -1924,4 +1861,4 @@
10030=没有远程控制权限
10031=设备不能为空
10032=用户没有设备的权限
10033=设备不存在
10033=设备不存在
HDL-ON_iOS/Resources/Phone/FunctionIcon/ArmSensor/SomeoneFellBgIcon.png
Binary files differ
HDL-ON_iOS/Resources/Phone/FunctionIcon/ArmSensor/SomeoneInBgIcon.png
Binary files differ
HDL-ON_iOS/Resources/Phone/FunctionIcon/ArmSensor/UnderProtectionBgIcon.png
Binary files differ
HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/TV/TVOkIconDown.png
Binary files differ
HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/TV/TVOkIconLeft.png
Binary files differ
HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/TV/TVOkIconOk.png
Binary files differ
HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/TV/TVOkIconRight.png
Binary files differ
HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/TV/TVOkIconUp.png
Binary files differ
HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/TVIcon.png
HDL-ON_iOS/Resources/Phone/FunctionIcon/Energy/EnergyDrodUpIcon.png
Binary files differ
HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/irpjt_blue.png
Binary files differ
HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/irpjt_white.png
Binary files differ
HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/irstb_blue.png
Binary files differ
HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/irstb_white.png
Binary files differ
HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/irtvxm_blue.png
Binary files differ
HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/irtvxm_white.png
Binary files differ
HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/irpjt.png
Binary files differ
HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/irstb.png
Binary files differ
HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/irtvxm.png
Binary files differ
HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/sensormegahealth.png
Binary files differ
HDL-ON_iOS/Resources/Phone/PersonalCenter/AddDevice/SenesorMegahealthBg.png
Binary files differ
HDL-ON_iOS/Resources/Phone/Public/Scan.png
Binary files differ
HDL_ON/Common/HDLCommon.cs
@@ -349,8 +349,6 @@
                case "13602944661":
                case "18778381374":
                case "18316672920":
                case "15626203746":
                case "551775569@qq.com":
                    return;
            }
HDL_ON/Common/R.cs
@@ -5,73 +5,6 @@
    public static class StringId
    {
        /// <summary>
        /// 毫米波传感器
        /// </summary>
        public const int SenesorMillimeterWave = 471;
        /// <summary>
        /// 防护中
        /// </summary>
        public const int UnderProtection=470;
        /// <summary>
        /// 有人进入
        /// </summary>
        public const int SomeoneIn = 469;
        /// <summary>
        /// 有人跌倒
        /// </summary>
        public const int SomeoneFell = 468;
        /// <summary>
        /// 投影仪
        /// </summary>
        public const int PJT = 467;
        /// <summary>
        /// 机顶盒
        /// </summary>
        public const int STB = 466;
        /// <summary>
        /// 删除设备
        /// </summary>
        public const int DeleteDevice = 465;
        /// <summary>
        /// 可以开始使用河东毫米波了
        /// </summary>
        public const int CanStartUsingZhaoguanMillimeterWave = 464;
        /// <summary>
        /// 请输入sn码
        /// </summary>
        public const int PlsEntrySNCode = 463;
        /// <summary>
        /// 您当前还未添加任何设备
        /// </summary>
        public const int NotAddedAnyDevices = 462;
        /// <summary>
        /// 室内室外
        /// </summary>
        public const int InOutdoor = 461;
        /// <summary>
        /// 本月能耗
        /// </summary>
        public const int EnergyConsumptionOfThisMonth = 460;
        /// <summary>
        /// 实时能耗
        /// </summary>
        public const int RealTimeEnergyConsumption=459;
        /// <summary>
        /// 日期
        /// </summary>
        public const int Date = 458;
        /// <summary>
        /// 能耗
        /// </summary>
        public const int EnergyConsumption = 457;
        /// <summary>
        /// 画布
        /// </summary>
        public const int Canvas = 456;
        /// <summary>
        /// 名称不能为空
        /// </summary>
        public const int NameCannotBeEmpty = 455;
        /// <summary>
        /// 布防信息
@@ -1317,20 +1250,10 @@
        public const int xitongweihuzhong = 6078;
        public const int huoqushujushibao = 6079;
        public const int zanshibuzhichigaigongneng = 6080;
        public const int xuanzehongwaipinpai= 6081;
        public const int yaotou = 6082;
        public const int disu = 6083;
        public const int zhongsu = 6084;
        public const int gaosu = 6085;
        public const int zidong = 6086;
        public const int wendujia = 6087;
        public const int wendujian = 6088;
        public const int kongqijinghauqi = 6089;
        public const int reshuiqi = 6090;
        public const int bucunzaichanpin = 6091;
        public const int shebeibucunzai = 6092;
        public const int shebeibuzaixian = 6093;
        public const int wangguanshebeibuzaixian = 6094;
        public const int newAutomation = 7000;
        public const int editAutomation = 7001;
@@ -1466,8 +1389,6 @@
        public const int apptuisong = 7131;
        public const int zidontghua = 7132;
        public const int yizhixing = 7133;
        public const int mubiaozhuangtai = 7134;
        public const int diedao = 7135;
        #region LE新增
        /// <summary>
HDL_ON/DAL/DriverLayer/Control.cs
@@ -283,7 +283,6 @@
        /// </summary>
        public void ControlScene(Scene scene)
        {
            //远程或者控制link网关场景
            if (!Ins.GatewayOnline_Local || DB_ResidenceData.Instance.GatewayType == 1)
            {
                new System.Threading.Thread(() =>
@@ -478,55 +477,47 @@
        /// 发送读取命令
        /// 自动判断是否为A协议设备
        /// </summary>
        public void SendReadCommand(Function function ,bool forceRemote = false)
        public void SendReadCommand(Function function)
        {
            function.refreshTime = DateTime.Now;
            if (forceRemote)
            if (Ins.GatewayOnline_Local)
            {
                var pm = new DAL.Server.HttpServerRequest();
                var pack = pm.RefreshDeviceStatus(new List<string>() { function.deviceId });
            }
            else
            {
                if (Ins.GatewayOnline_Local)
                if (DB_ResidenceData.Instance.GatewayType == 0)
                {
                    if (DB_ResidenceData.Instance.GatewayType == 0)
                    try
                    {
                        try
                        {
                            new Control_Udp().ReadBusData(function);
                        }
                        catch (Exception ex)
                        {
                            MainPage.Log($"发送数据异常: {ex.Message}");
                        }
                        new Control_Udp().ReadBusData(function);
                    }
                    else
                    catch (Exception ex)
                    {
                        var readKey = new Dictionary<string, string>();
                        readKey.Add("sid", function.sid);
                        var readDataObj = new AlinkReadFunctionStatusObj()
                        {
                            id = Ins.msg_id.ToString(),
                            objects = new List<Dictionary<string, string>>()
                        {
                            readKey
                        },
                            time_stamp = Utlis.GetTimestamp()
                        };
                        var functionControlDataJson = Newtonsoft.Json.JsonConvert.SerializeObject(readDataObj);
                        var sendBytes = Ins.ConvertSendBodyData(CommunicationTopic.ct.ReadStatus, functionControlDataJson);
                        MainPage.Log($"本地通讯 发送HDL-Link数据:{functionControlDataJson}");
                        new Control_Udp().SendLocalHdlLinkData(sendBytes, readDataObj.id);
                        MainPage.Log($"发送数据异常: {ex.Message}");
                    }
                }
                else
                {
                    var pm = new DAL.Server.HttpServerRequest();
                    var pack = pm.RefreshDeviceStatus(new List<string>() { function.deviceId });
                    var readKey = new Dictionary<string, string>();
                    readKey.Add("sid", function.sid);
                    var readDataObj = new AlinkReadFunctionStatusObj()
                    {
                        id = Ins.msg_id.ToString(),
                        objects = new List<Dictionary<string, string>>()
                        {
                            readKey
                        },
                        time_stamp = Utlis.GetTimestamp()
                    };
                    var functionControlDataJson = Newtonsoft.Json.JsonConvert.SerializeObject(readDataObj);
                    var sendBytes = Ins.ConvertSendBodyData(CommunicationTopic.ct.ReadStatus, functionControlDataJson);
                    MainPage.Log($"本地通讯 发送HDL-Link数据:{functionControlDataJson}");
                    new Control_Udp().SendLocalHdlLinkData(sendBytes, readDataObj.id);
                }
            }
            else
            {
                var pm = new DAL.Server.HttpServerRequest();
                var pack = pm.RefreshDeviceStatus(new List<string>() { function.deviceId });
            }
        }
@@ -570,7 +561,7 @@
            string sendDataString = topicString + lengthString + bodyDataString;
            byte[] sendDataBytes = Encoding.ASCII.GetBytes(sendDataString);
            MainPage.Log($"转换HDL-Link数据\r\n{sendDataString}\r\n");
            //MainPage.Log($"转换HDL-Link数据\r\n{sendDataString}\r\n");
            return sendDataBytes;
        }
@@ -644,7 +635,7 @@
                        {
                            Ins.GatewayId = device.device_mac;
                        }
                        reportIp = "239.0.168.188";// device.ip_address;//主播地址也能控制设备
                        reportIp = "239.0.168.188";// device.ip_address;
                    }
                }
                else if (receiveObj.Topic == CommunicationTopic.ct.ReadStatus + "_reply" ||
@@ -670,6 +661,15 @@
        /// <param name="updateBytes"></param>
        public void UpdataFunctionStatus(string revString, byte[] usefulBytes,bool isCloudData = false)
        {
            if (Ins.GatewayOnline_Local && isCloudData)//本地链接,除了涂鸦设备数据之外的云端数据不处理
            {
                if (FunctionList.List.GetDeviceFunctionList(SPK.BrandType.Tuya).Count == 0)
                {
                    //MainPage.Log($"A协议更新状态:本地链接,除了涂鸦设备数据之外的云端数据不处理...");
                    return;
                }
            }
            var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<AlinkFunctionStatusObj>(revString);
            if (temp != null)
            {
@@ -679,22 +679,6 @@
                {
                    try
                    {
                        if (Ins.GatewayOnline_Local && isCloudData)//本地链接,除了涂鸦设备数据之外的云端数据不处理
                        {
                            if (FunctionList.List.OtherBrandFunction.Count != 0)
                            {
                                if (FunctionList.List.OtherBrandFunction.Find((obj) => obj.sid == updateTemp.sid) == null)
                                {
                                    //MainPage.Log($"A协议更新状态:本地链接,除了涂鸦设备数据之外的云端数据不处理...");
                                    return;
                                }
                            }
                        }
                        var localFunction = allLocalFuntion.Find((obj) => obj.sid == updateTemp.sid);
                        if (localFunction == null)
                        {
@@ -719,9 +703,6 @@
                        Function localObj = null;
                        switch (localFunction.spk)
                        {
                            case SPK.ElectricEnergy:
                                EnergyMainPage.UpdataStatus(localFunction);
                                break;
                            case SPK.LightSwitch:
                                RelayPage.UpdataState(localFunction);
                                break;
@@ -828,14 +809,6 @@
                            case SPK.SensorTVOC:
                            case SPK.SensorTemperature:
                            case SPK.SensorHumidity:
                                if(localFunction.spk == SPK.SensorTemperature)
                                {
                                    HomePage.LoadEvent_RefreshEnvirIndoorTemp();
                                }
                                else if (localFunction.spk == SPK.SensorHumidity)
                                {
                                    HomePage.LoadEvent_RefreshEnvirIndoorHumi();
                                }
                                EnvironmentalPage.LoadEvent_UpdataStatus(localFunction);
                                break;
                            case SPK.ElectricSocket:
@@ -853,9 +826,7 @@
                            case SPK.SensorWater:
                            case SPK.ClothesHanger:
                            case SPK.AcIr:
                            case SPK.SenesorMegahealth:
                                //设备状态推送
                                //状态更新
                                Stan.HdlDeviceStatuPushLogic.Current.UpdateDeviceStatu(updateTemp.sid, updateTemp.status);
                                break;
                        }
HDL_ON/DAL/DriverLayer/Control_Udp.cs
@@ -984,7 +984,7 @@
            try
            {
                MainPage.Log("发送数据:" + SendFlag);
                //MainPage.Log("发送数据:" + SendFlag);
                UdpSocket._BusSocket.AsyncBeginSend(packet);
                packet.HaveSendCount--;
@@ -1107,22 +1107,11 @@
                var sendBytes = Control.Ins.ConvertSendBodyData(CommunicationTopic.SearchLoaclGateway, bodyString);
                //组播发送
                packet = new Packet(sendBytes, new System.Net.IPEndPoint(System.Net.IPAddress.Parse("239.0.168.188"), 8585));
                packet.HaveSendCount = 4;
                packet.HaveSendCount = 4;//ps:没有重发,后期有时间可以增加重发判断
                System.Threading.Thread thread = new System.Threading.Thread(new System.Threading.ParameterizedThreadStart(managerSendCount));
                thread.IsBackground = true;
                thread.Start(packet);
                //wait();不需要等待
                //hjSocket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
                //hjSocket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, true);
                //EndPoint ipep = new IPEndPoint(IPAddress.Parse(CsConst.myLocalIP), HDLUDP.UDPPort);
                //hjSocket.Bind(ipep);
            }
            catch (Exception ex)
            {
HDL_ON/DAL/DriverLayer/UdpSocket.cs
@@ -46,9 +46,10 @@
            busSocket = new Socket (AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
            busSocket.EnableBroadcast = true;
            try {
                busSocket.Bind(new IPEndPoint(IPAddress.Any, Port));
                //busSocket.Bind (new IPEndPoint (IPAddress.Any, 6000));
                busSocket.Bind(new IPEndPoint(IPAddress.Any, Port));
                busSocket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.AddMembership, new MulticastOption(IPAddress.Parse("239.0.168.188")));
                busSocket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.AddMembership, new MulticastOption(IPAddress.Parse("239.0.168.188")));
            }
            catch{
                busSocket = null;
HDL_ON/DAL/Mqtt/MqttClient.cs
@@ -133,7 +133,7 @@
                {
                    try
                    {
                        System.Threading.Thread.Sleep(2000);
                        System.Threading.Thread.Sleep(500);
                        //进入后台不处理
                        if (MainPage.IsEnterBackground) continue;
                        if (MqttInfoConfig.Current.HomeGatewayInfo == null)
@@ -204,7 +204,6 @@
                        Topic = $"/user/{DB_ResidenceData.Instance.CurrentRegion.id}/app/thing/event/irCodeStudyDone/up",
                        QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.AtMostOnce
                    };
                    #region 数据更新推送主题
                    //appHomeRefresh:住宅数据刷新通知
                    var appHomeRefresh = new MqttTopicFilter()
@@ -224,13 +223,6 @@
                        Topic = $"/user/{DB_ResidenceData.Instance.CurrentRegion.id}/app/thing/event/appDeviceRefresh/up",
                        QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.AtMostOnce
                    };
                    //一端口密钥更新通知
                    var mqttkeyChange = new MqttTopicFilter()
                    {
                        Topic = $"/user/{MqttInfoConfig.Current.HomeGatewayInfo.gatewayId}/custom/mqtt/secret/change",
                        QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.AtMostOnce
                    };
                    #endregion
@@ -238,7 +230,7 @@
                    var result = await RemoteMqttClient.SubscribeAsync(new MqttTopicFilter[] {
                        pirStatus,pirStudy,
                        appDeviceRefresh,appHomeRefresh,appRoomRefresh,
                        topicFilterPush2, topicAlinkStatus ,mqttkeyChange});
                        topicFilterPush2, topicAlinkStatus });
                    if (result.Items[0].ResultCode == MQTTnet.Client.Subscribing.MqttClientSubscribeResultCode.GrantedQoS0)
                    {
                        isSubscribeSuccess = true;
@@ -338,14 +330,14 @@
                                {
                                    var bytes = Securitys.EncryptionService.AesDecryptPayload(e.ApplicationMessage.Payload, tuyaEncryptKey);
                                    var revString = Encoding.UTF8.GetString(bytes);
                                    HDL_ON.UI.UI2.PersonalCenter.PirDevice.PirMethod.controldata = revString;
                                    HDL_ON.UI.UI2.PersonalCenter.PirDevice.Method.controldata = revString;
                                }
                                //App订阅遥控器自学按键学习成功通知
                                else if (topic == $"/user/{DB_ResidenceData.Instance.CurrentRegion.id}/app/thing/event/irCodeStudyDone/up")
                                {
                                    var bytes = Securitys.EncryptionService.AesDecryptPayload(e.ApplicationMessage.Payload, tuyaEncryptKey);
                                    var revString = Encoding.UTF8.GetString(bytes);
                                    UI.UI2.PersonalCenter.PirDevice.PirMethod.buttondata = revString;
                                    UI.UI2.PersonalCenter.PirDevice.Method.buttondata = revString;
                                }
                                #region 数据更新推送主题
                                //appHomeRefresh:住宅数据刷新通知
@@ -423,17 +415,6 @@
                                        MainPage.Log($"读取云端设备数据失败:Code:{deviceResult.Code};  Msg:{deviceResult.message}");
                                    }
                                }
                                //网关密钥变化
                                else if (topic == $"/user/{DB_ResidenceData.Instance.CurrentRegion.id}/custom/mqtt/secret/change")
                                {
                                    var pm = new HttpServerRequest();
                                    pm.GetHomeGatewayList();
                                    MainPage.Log($"网关密钥变更");
                                    MainPage.Log($"旧密钥:{mqttEncryptKey}");
                                    mqttEncryptKey = MqttInfoConfig.Current.HomeGatewayInfo.aesKey;
                                    MainPage.Log($"新密钥:{mqttEncryptKey}");
                                }
                                #endregion
                                //A网关设备状态-包含涂鸦设备
                                else if (topic == $"/user/{DB_ResidenceData.Instance.CurrentRegion.id}/app/thing/property/send")
@@ -504,8 +485,6 @@
                catch (Exception ex)
                {
                    Utlis.WriteLine($"error:" + ex.Message);
                    //mqtt连接异常,清空本地mqtt信息,可能需要重新获取:wxr
                    MqttInfoConfig.Current.Refresh();
                }
                finally
                {
@@ -647,8 +626,6 @@
                    //重新中心服务器获取参数标记
                    MqttInfoConfig.Current.IfGetMqttInfoSuccess = false;
                    Console.WriteLine("Connect error: " + ex.Message);
                    //mqtt连接异常,清空本地mqtt信息,可能需要重新获取:wxr
                    MqttInfoConfig.Current.Refresh();
                }
                finally
                {
@@ -694,7 +671,7 @@
        {
            if (mMes == PushSignStr) return;//是自己的登录推送不处理//或者当前不是远程链接状态
            //测试账号,不挤下线
            switch (UserInfo.Current.userMobileInfo)
            switch (UserInfo.Current.AccountString)
            {
                case "13415629083":
                case "18316120654":
@@ -709,8 +686,6 @@
                case "18778381374":
                case "18316672920":
                case "15971583093":
                case "15626203746":
                case "551775569@qq.com":
                    return;
            }
@@ -842,12 +817,9 @@
        /// <returns></returns>
        static async Task GetMqttInfoAndMQTTConnectAsync()
        {
            var mqttInfoRequestResult_Obj = new HttpServerRequest().GetMqttRemoteInfo(GetRandomKey());
            var mqttInfoRequestResult_Obj = new Server.HttpServerRequest().GetMqttRemoteInfo(GetRandomKey());
            if (mqttInfoRequestResult_Obj != null)
            {
                MainPage.Log($"获取mqtt info 成功 /r/n clientId:{mqttInfoRequestResult_Obj.clientId}/r/n passWord:{mqttInfoRequestResult_Obj.passWord} /r/n url:{mqttInfoRequestResult_Obj.url}/r/n userName:{mqttInfoRequestResult_Obj.userName}");
                MqttInfoConfig.Current.mMqttInfo = mqttInfoRequestResult_Obj;
                await MQTTConnectAsync();
                //1.判断是否绑定了网关,获取网关远程连接的加密KEY
HDL_ON/DAL/Mqtt/MqttInfoConfig.cs
@@ -67,8 +67,7 @@
        public void Refresh()
        {
            m_Current = null;
            Common.FileUtlis.Files.DeleteFile(ConfigFile);
            //Save();
            Save();
        }
        public void Save()
HDL_ON/DAL/Server/HttpServerRequest.cs
@@ -51,7 +51,7 @@
            d.Add("type", qType);
            d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.id);
            d.Add("deviceId",  deviceId );
            d.Add("key",  deviceKey );
            d.Add("key",  "value" );
            var requestJson = HttpUtil.GetSignRequestJson(d);
            return HttpUtil.RequestHttpsPost(NewAPI.Api_Post_EnvironmentalSensorHistoricalData, requestJson);
@@ -74,20 +74,8 @@
            var requestJson = HttpUtil.GetSignRequestJson(d);
            return HttpUtil.RequestHttpsPost(NewAPI.Api_Post_ArmSensorHistoricalData, requestJson);
        }
        /// <summary>
        /// 读取最近一个月的数据
        /// </summary>
        /// <returns></returns>
        public ResponsePackNew GetLastMonthHistory(string deviceId,string key)
        {
            Dictionary<string, object> d = new Dictionary<string, object>();
            d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.id);
            d.Add("deviceId", deviceId);
            d.Add("key", key);
            var requestJson = HttpUtil.GetSignRequestJson(d);
            return HttpUtil.RequestHttpsPost(NewAPI.Api_Post_SensorLastMonthHistoricalData, requestJson);
        }
        #endregion
@@ -1320,9 +1308,6 @@
                            MainPage.cityInfo.pm25 = jt.GetValue("Air_Quality").ToString();
                            MainPage.cityInfo.windLevel = jt.GetValue("WindLevel").ToString();
                            MainPage.cityInfo.weather = jt.GetValue("Weather").ToString();
                            MainPage.cityInfo.lowestTemperature = jt.GetValue("lowestTemperature").ToString();
                            MainPage.cityInfo.highestTemperature = jt.GetValue("highestTemperature").ToString();
                            break;
                        }
                        catch (Exception ex)
@@ -1850,10 +1835,7 @@
            d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.id);
            d.Add("productPlatform", productPlatform);
            d.Add("productBrand", productBrand);
            if (productBrand != "MegaHealth")
            {
                d.Add("networkConfig", true);
            }
            d.Add("networkConfig", true);
            var requestJson = HttpUtil.GetSignRequestJson(d);
            return HttpUtil.RequestHttpsPostFroHome(NewAPI.Api_Post_GetDevcieList, requestJson);
@@ -1872,29 +1854,10 @@
            d.Add("productBrand", productBrand);
            d.Add("networkConfig", true);
            
            var requestJson = HttpUtil.GetSignRequestJson(d);
            return HttpUtil.RequestHttpsPostFroHome(NewAPI.Api_Post_Get3tyBrandDevcieList, requestJson);
        }
        /// <summary>
        /// 注册第三方设备
        /// </summary>
        /// <param name="productPlatform"></param>
        /// <param name="productBrand"></param>
        /// <returns></returns>
        public ResponsePackNew IndependentRegister3TyDevcie(string spk,string extDevId,string deviceName)
        {
            Dictionary<string, object> d = new Dictionary<string, object>();
            d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.id);
            d.Add("spk", spk);
            d.Add("extDevId", extDevId);
            d.Add("name", deviceName);
            var requestJson = HttpUtil.GetSignRequestJson(d);
            return HttpUtil.RequestHttpsPostFroHome(NewAPI.Api_Post_IndependentRegister3TyDevcie, requestJson);
        }
        /// <summary>
        /// 获取设备详情
HDL_ON/DAL/Server/HttpUtil.cs
@@ -17,8 +17,8 @@
        /// 固定域名,正式环境
        /// 公共域名就近解析
        /// </summary>
        public const string GlobalRequestHttpsHost = "https://nearest.hdlcontrol.com";
        //public const string GlobalRequestHttpsHost = "https://test-gz.hdlcontrol.com";//mmmm
        //public const string GlobalRequestHttpsHost = "https://nearest.hdlcontrol.com";
        public const string GlobalRequestHttpsHost = "https://test-gz.hdlcontrol.com";//mmmm
        /// <summary>
        /// RegionMark
        /// </summary>
@@ -153,7 +153,9 @@
                {
                    urlHead = OnAppConfig.Instance.RequestHttpsHost;
                }
                //"https://test-gz.hdlcontrol.com";
                //"https://bahrain-gateway.hdlcontrol.com";
                //urlHead="https://china-gateway.hdlcontrol.com";
                string requestFullUrl = urlHead + apiPath;
HDL_ON/DAL/Server/NewAPI.cs
@@ -337,10 +337,6 @@
        /// </summary>
        public const string Api_Post_Get3tyBrandDevcieList = "/home-wisdom/app/product/list";
        /// <summary>
        /// 注册第三方设备
        /// </summary>
        public const string Api_Post_IndependentRegister3TyDevcie = "/home-wisdom/app/device/independentRegister";
        /// <summary>
        /// 获取设备详情
        /// </summary>
        public const string Api_Post_GetDevcieInfoList = "/home-wisdom/app/device/info";
@@ -385,10 +381,6 @@
        /// 获取安防传感器历史数据
        /// </summary>
        public const string Api_Post_ArmSensorHistoricalData = "/home-wisdom/app/device/message";
        /// <summary>
        /// 读取最近一个月的数据
        /// </summary>
        public const string Api_Post_SensorLastMonthHistoricalData = "/home-wisdom/app/statistics/device/monthDiff";
        #endregion
        #region Kaede -- 场景接口____________________________
HDL_ON/Entity/Function/Function.cs
@@ -1,4 +1,4 @@
using System;
using System;
using System.Collections.Generic;
using HDL_ON.Common;
using HDL_ON.DAL.Server;
@@ -126,6 +126,7 @@
        /// <returns>修改结果</returns>
        public bool SetAttrState(string key, object value)
        {
            //var attrState = status.Find((s) => s.key == key.ToString());
            var attr = attributes.Find((s) => s.key == key);
            if (attr == null)
            {
@@ -777,10 +778,6 @@
        /// </summary>
        public const string Status = "status";
        /// <summary>
        /// 毫米波传感器,动作状态
        /// </summary>
        public const string ActionStatus = "action_state";
        /// <summary>
        /// 电量状态
        /// </summary>
        public const string BatteryState = "battery_state";
@@ -880,14 +877,6 @@
        /// </summary>
        public const string TuyaWaterTime = "countdown_1";
        #endregion
        /// <summary>
        /// 功率
        /// </summary>
        public const string Power = "power";
        /// <summary>
        /// 总电量
        /// </summary>
        public const string TotalElectricity = "total_electricity";
    }
@@ -945,8 +934,6 @@
    public static class SPK
    {
        #region 灯光
        /// <summary>
@@ -1088,11 +1075,6 @@
        /// 能源模块
        /// </summary>
        public const string EnergyStandard = "energy.standard";
        /// <summary>
        /// 能源-电能
        /// </summary>
        public const string ElectricEnergy = "energy.electric";
        /// <summary>
        /// 能源spk列表
        /// </summary>
@@ -1100,7 +1082,7 @@
        public static List<string> EnergySpkList()
        {
            var spkList = new List<string>();
            spkList.Add(ElectricEnergy);
            spkList.Add(EnergyStandard);
            return spkList;
        }
        #endregion
@@ -1165,10 +1147,6 @@
        /// (干接点)
        /// </summary>
        public const string SensorDryContact = "sensor.dryContact";
        /// <summary>
        /// 毫米波传感器
        /// </summary>
        public const string SenesorMegahealth = "sensor.megahealth";
        /// <summary>
        /// 安防传感器spk列表
@@ -1187,7 +1165,6 @@
            spkList.Add(SensorDuiShe);
            spkList.Add(SensoruUtrasonic);
            spkList.Add(SensorDryContact);
            spkList.Add(SenesorMegahealth);
            return spkList;
        }
        #endregion
@@ -1244,10 +1221,6 @@
        /// 红外、电视
        /// </summary>
        public const string TvIr = "ir.tv";
        /// <summary>
        /// 红外、小米电视
        /// </summary>
        public const string TvXmIr = "ir.tvxm";
        /// <summary>
        /// 家电、风扇
        /// </summary>
@@ -1315,12 +1288,9 @@
            spkList.Add(ElectricSocket);
            spkList.Add(ElectricTV);
            spkList.Add(TvIr);
            spkList.Add(TvXmIr);
            spkList.Add(ElectricFan);
            spkList.Add(ClothesHanger);
            spkList.Add(IrLearn);
            spkList.Add(PjtIr);
            spkList.Add(StbIr);
            spkList.Add(ElectricTuyaAirCleaner);
            spkList.Add(ElectricTuyaFan);
            spkList.Add(ElectricTuyaWeepRobot);
@@ -1331,6 +1301,12 @@
        #endregion
        #region 能源
        /// <summary>
        /// 能源-电能
        /// </summary>
        public const string ElectricEnergy = "energy.electric";
        #endregion
        #region 设备类
        /// <summary>
@@ -1350,21 +1326,7 @@
        }
        #endregion
        #region 第三方spk列表
        /// <summary>
        /// 获取所有第三方品牌功能的spk
        /// </summary>
        /// <returns></returns>
        public static List<string> GetAll3tySPK()
        {
            var spkList = new List<string>();
            spkList.Add(ElectricTuyaAirCleaner);
            spkList.Add(ElectricTuyaFan);
            spkList.Add(ElectricTuyaWaterValve);
            spkList.Add(ElectricTuyaWeepRobot);
            spkList.Add(SenesorMegahealth);
            return spkList;
        }
        /// <summary>
        /// 获取第三方设备spk
        /// </summary>
@@ -1375,19 +1337,16 @@
            switch (brandType)
            {
                case BrandType.All3tyBrand:
                case BrandType.Tuya:
                    list.Add(ElectricTuyaAirCleaner);
                    list.Add(ElectricTuyaFan);
                    list.Add(ElectricTuyaWaterValve);
                    list.Add(ElectricTuyaWeepRobot);
                    break;
                case BrandType.All3tyBrand:
                    list.Add(SenesorMegahealth);//兆观
                    break;
            }
            return list;
        }
        #endregion
        /// <summary>
@@ -1398,10 +1357,6 @@
            All = 0,
            Hdl = 1,
            Tuya = 2,
            /// <summary>
            /// 兆观
            /// </summary>
            Megahealth = 3,
            All3tyBrand = 999,
HDL_ON/Entity/Function/Scene.cs
@@ -67,7 +67,7 @@
        /// </summary>
        public string delay = "0";
        /// <summary>
        /// 场景的最后一次执行时间
        /// 场景的最好一次执行时间
        /// </summary>
        public string LastExecutionTime = "";
@@ -348,18 +348,7 @@
        {
            var delayInt = 0;
            int.TryParse(delay,out delayInt);
            if(delayInt == 0)
            {
                return Language.StringByID(StringId.NoDelay);
            }
            string text = "";
            if (delayInt > 60)
            {
                text = (delayInt / 60) + Language.StringByID(StringId.m) + (delayInt % 60) + Language.StringByID(StringId.s);
            }else
            {
                text = delayInt + Language.StringByID(StringId.s);
            }
            string text = (delayInt / 60)+Language.StringByID(StringId.m)+(delayInt % 60)+Language.StringByID(StringId.s);
            return text;
            switch (delay)
            {
HDL_ON/Entity/FunctionList.cs
@@ -143,25 +143,6 @@
        /// </summary>
        public UI.UI2.FuntionControlView.Video.VideoClouds videoIntercom;
        List<Function> _OtherBrandFunction;
        /// <summary>
        /// 第三方品牌功能
        /// </summary>
        public List<Function> OtherBrandFunction
        {
            get
            {
                if(_OtherBrandFunction == null)
                {
                    _OtherBrandFunction = new List<Function>();
                    var spkList = SPK.GetAll3tySPK();
                    _OtherBrandFunction = Functions.FindAll((obj) => spkList.Contains(obj.spk));
                }
                return _OtherBrandFunction;
            }
        }
        /// <summary>
        /// 场景列表
        /// </summary>
@@ -289,9 +270,6 @@
            return Functions;
        }
        /// <summary>
        /// 清空设备功能列表
HDL_ON/Entity/ResponseEntity/CityInfo.cs
@@ -30,14 +30,6 @@
        /// 时区
        /// </summary>
        public string timeZone;
        /// <summary>
        /// 最低温
        /// </summary>
        public string lowestTemperature = "--";
        /// <summary>
        /// 最高温
        /// </summary>
        public string highestTemperature = "--";
        /// <summary>
        /// 温度
HDL_ON/HDL_ON.projitems
@@ -372,6 +372,7 @@
    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\PirDevice\PirSend.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\PirDevice\AddControlComplete.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\PirDevice\View\PatchView.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\PirDevice\Method.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\PirDevice\View\FailView.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\PirDevice\View\ReplicationView.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Electrical\ClothesHangerSetTimePage.cs" />
@@ -379,6 +380,11 @@
    <Compile Include="$(MSBuildThisFileDirectory)UI\UI0-Stan\Logic\HdlCloudReceiveLogic.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)UI\UI0-Stan\Logic\HdlWifiLogic.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)UI\UI0-Stan\Controls\CompoundControls\ProgressRowBar.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\AddDevice\AddMiniRemoteControlDirection3Page.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\AddDevice\AddMiniRemoteControlDirection1Page.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\AddDevice\AddMiniRemoteControlDirection2Page.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\AddDevice\AddMiniRemoteControlDirection4Page.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\AddDevice\AddThirdPartyDeviceMenuListPage.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\PirDevice\Matching.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\PirDevice\View\PirNameView.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\AddFunction\BrandListPage.cs" />
@@ -403,6 +409,7 @@
    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\1ContorlPage\AcControlPage_AddIrButton.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Energy\EnergyMainPage.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)DAL\ThirdPartySdk\ESOnVideo.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Energy\EchartsOption_Energy.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\1ContorlPage\AirFreshControlPage.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Video\VideoMethod.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Video\VideoSend.cs" />
@@ -421,18 +428,6 @@
    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\SmartSpeaker\SmartSpeakerSelectDevicesPage.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\SmartSpeaker\SmartSpeakerRoomListPage.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Electrical\DvdPage.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Electrical\PjtPage.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Electrical\StbPage.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\PirDevice\PirMethod.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\AddDevice\SenesorMegahealth\AddSenesorMegahealthDirection1Page.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\AddDevice\MiniRemoteControl\AddMiniRemoteControlDirection1Page.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\AddDevice\MiniRemoteControl\AddMiniRemoteControlDirection2Page.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\AddDevice\MiniRemoteControl\AddMiniRemoteControlDirection3Page.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\AddDevice\MiniRemoteControl\AddMiniRemoteControlDirection4Page.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\AddDevice\MiniRemoteControl\AddThirdPartyDeviceMenuListPage.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\AddDevice\SenesorMegahealth\SenesorMegahealthManagerPage.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\ArmSensor\SenesorMegahealthPage.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Electrical\IrFanPage.cs" />
  </ItemGroup>
  <ItemGroup>
    <Folder Include="$(MSBuildThisFileDirectory)DAL\" />
@@ -477,7 +472,5 @@
    <Folder Include="$(MSBuildThisFileDirectory)DAL\ThirdPartySdk\" />
    <Folder Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\ArmCenter\" />
    <Folder Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\SmartSpeaker\" />
    <Folder Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\AddDevice\SenesorMegahealth\" />
    <Folder Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\AddDevice\MiniRemoteControl\" />
  </ItemGroup>
</Project>
HDL_ON/UI/MainPage.cs
@@ -20,7 +20,7 @@
        /// <summary>
        /// 版本号
        /// </summary>
        public static string VersionString = "1.2.0608";
        public static string VersionString = "1.2.0428";
        ///// <summary>
        ///// 客户端类型
        ///// </summary>
HDL_ON/UI/UI0-Public/OperationSuccessPromptPage.cs
@@ -11,12 +11,6 @@
    {
        Dialog dialog;
        FrameLayout bodyView;
        /// <summary>
        /// 回掉函数
        /// </summary>
        public Action rebackAction = null;
        public OperationResultDisPalyPage()
        {
            dialog = this;
@@ -30,8 +24,7 @@
        /// <param name="title">页面标题</param>
        /// <param name="tipTitle">提示标题</param>
        /// <param name="tipMsg">提示信息</param>
        /// <param name="confirmText">按钮文本</param>
        public void LoadPage(bool result,string title,string tipTitle,string tipMsg,string confirmText = "")
        public void LoadPage(bool result,string title,string tipTitle,string tipMsg)
        {
            bodyView.BackgroundColor = CSS_Color.BackgroundColor;
            dialog.AddChidren(bodyView);
@@ -84,14 +77,8 @@
                TextSize = CSS_FontSize.SubheadingFontSize,
            };
            bodyView.AddChidren(btnConfirm);
            if(confirmText != "")
            {
                btnConfirm.Text = confirmText;
            }
            btnConfirm.MouseUpEventHandler = (sender, e) => {
                this.Close();
                rebackAction?.Invoke();
            };
        }
HDL_ON/UI/UI0-Public/PublicAssmebly.cs
@@ -586,7 +586,7 @@
            BottomTimeSelectControl timeControl = new BottomTimeSelectControl(mRange, sRange, 5, Language.StringByID(StringId.SceneDelay));
            timeControl.RowHeight = Application.GetRealHeight(50);
            timeControl.InitControl(0, 0, 262, false);
            //timeControl.ChangePickerEvent2();
            timeControl.ChangePickerEvent2();
            timeControl.FinishEvent = (type, hours, min) =>
            {
                if(type == 1)
HDL_ON/UI/UI0-Public/PublicAssmeblyBLL.cs
@@ -76,23 +76,10 @@
                        break;
                    case SPK.ElectricTV:
                    case SPK.TvIr:
                    case SPK.TvXmIr:
                        var tvView = new TVPage(function);
                        MainPage.BasePageView.AddChidren(tvView);
                        tvView.LoadPage(btnCollectionIcon, btnName, btnFromFloor);
                        MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
                        break;
                    case SPK.PjtIr://投影仪
                        var pjtView = new PjtPage(function);
                        MainPage.BasePageView.AddChidren(pjtView);
                        pjtView.LoadPage(btnCollectionIcon, btnName, btnFromFloor);
                        MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
                        break;
                    case SPK.StbIr://机顶盒
                        var stbView = new StbPage(function);
                        MainPage.BasePageView.AddChidren(stbView);
                        stbView.LoadPage(btnCollectionIcon, btnName, btnFromFloor);
                        MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
                        break;
                    case SPK.ElectricTuyaAirCleaner:
                        var airCleaner = new TuyaAirCleanerPage();
@@ -142,11 +129,6 @@
                        var doorwindowPage = new SensorDoorWinwsPage();
                        doorwindowPage.ShowColltionButton = false;
                        doorwindowPage.AddForm(function, btnCollectionIcon, btnName, btnFromFloor);
                        break;
                    case SPK.SenesorMegahealth:
                        var smPage = new SenesorMegahealthPage();
                        smPage.ShowColltionButton = false;
                        smPage.AddForm(function, btnCollectionIcon, btnName, btnFromFloor);
                        break;
                    case SPK.ClothesHanger:
                        var clothesHangerpage = new ClothesHangerPage();
HDL_ON/UI/UI0-Public/TopViewDiv.cs
@@ -98,6 +98,12 @@
            };
            contentView.AddChidren(btnBackIcon);
            btnBack = new Button()
            {
                Width = Application.GetRealWidth(100),
            };
            contentView.AddChidren(btnBack);
            Button btnTilte = new Button()
            {
                Gravity = Gravity.CenterHorizontal,
@@ -111,12 +117,6 @@
            };
            contentView.AddChidren(btnTilte);
            btnBack = new Button()
            {
                Width = Application.GetRealWidth(70),
            };
            contentView.AddChidren(btnBack);
            LoadEventList();
        }
HDL_ON/UI/UI0-Public/Widget/EmptyTipView.cs
@@ -23,33 +23,29 @@
        /// <summary>
        /// 
        /// </summary>
        public EmptyTipView(string tipMsg ="",int btnTipNotY=0)
        public EmptyTipView(string tipMsg ="")
        {
            if(tipMsg == "")
            {
                tipMsg = Language.StringByID(StringId.ContentIsEmpty);
            }
            int tipHeight = Application.GetRealWidth(180 + btnTipNotY);
            int tipHeight = Application.GetRealWidth(180);
            this.Height = tipHeight + Application.GetRealHeight(17 );
            this.Height = tipHeight + Application.GetRealHeight(17);
            BtnTipNot = new Button()
            {
                Gravity = Gravity.CenterHorizontal,
                Width = Application.GetRealWidth(180),
                Height = Application.GetRealWidth(180),
                Width = tipHeight,
                Height = tipHeight,
                UnSelectedImagePath = "TipNot.png",
            };
            this.AddChidren(BtnTipNot);
            if(btnTipNotY!=0)
            {
                BtnTipNot.Y = Application.GetRealHeight(btnTipNotY);
            }
            //空空如也
            Button btnTipNotText = new Button()
            {
                Y = tipHeight ,
                Y = tipHeight,
                Height = Application.GetRealHeight(17),
                Text = tipMsg,
                TextAlignment = TextAlignment.Center,
HDL_ON/UI/UI0-Stan/Controls/BottomControls/BottomTimeSelectControl.cs
@@ -7,7 +7,7 @@
namespace HDL_ON.Stan
{
    /// <summary>
    /// 底部时间选择控件
    /// 底部时间选择控件(时和分),不需要加到父控件
    /// </summary>
    public class BottomTimeSelectControl : BottomDialogCommon
    {
@@ -17,24 +17,24 @@
        /// 结束事件(0:点击了取消  1:点击了确定,第二,三参数为时和分)
        /// </summary>
        public Action<int, int, int> FinishEvent = null;
        /// <summary>
        /// 小时取值范围
        /// <summary>
        /// 小时取值范围
        /// </summary>
        List<int> hRange = new List<int>();
        /// <summary>
        /// 分钟取值范围
        /// <summary>
        /// 分钟取值范围
        /// </summary>
        List<int> mRange = new List<int>();
        /// <summary>
        /// 时间控件
        /// </summary>
        UIPickerView pickerView;
        //选择的时与分
        int selectHour = 0;
        int selectMinute = 0;
        //XX时
        List<string> listHour ;
        //XX分
        List<int> mRange = new List<int>();
        /// <summary>
        /// 时间控件
        /// </summary>
        UIPickerView pickerView;
        //选择的时与分
        int selectHour = 0;
        int selectMinute = 0;
        //XX时
        List<string> listHour;
        //XX分
        List<string> listMinute;
@@ -43,16 +43,16 @@
        #region ■ 初始化_____________________________
        /// <summary>
        /// 底部时间选择控件
        /// 底部时间选择控件(时和分),不需要加到父控件
        /// </summary>
        /// <param name="i_title">标题</param>
        /// <param name="clickBackClose">点击背景时,是否关闭弹窗</param>
        public BottomTimeSelectControl(string i_title = "", bool clickBackClose = true)
        {
            base.ClickBackClose = clickBackClose;
            base.StrTitle = i_title;
            base.StrTitle = i_title;
            base.RowCount = 5;
            for (int i = 0; i <= 23; i++)
            {
                hRange.Add(i);
@@ -61,23 +61,23 @@
            {
                mRange.Add(i);
            }
        }
        }
        /// <summary>
        /// 底部时间选择控件
        /// 底部时间选择控件(时和分),不需要加到父控件
        /// </summary>
        /// <param name="i_title">标题</param>
        /// <param name="clickBackClose">点击背景时,是否关闭弹窗</param>
        public BottomTimeSelectControl(List<int> hoursRange,List<int> minuteRange ,int rowCount, string i_title = "", bool clickBackClose = true)
        public BottomTimeSelectControl(List<int> hoursRange, List<int> minuteRange, int rowCount, string i_title = "", bool clickBackClose = true)
        {
            base.ClickBackClose = clickBackClose;
            base.StrTitle = i_title;
            hRange = hoursRange;
            mRange = minuteRange;
            base.RowCount = rowCount;
            hRange = hoursRange;
            mRange = minuteRange;
            base.RowCount = rowCount;
        }
@@ -92,9 +92,15 @@
            //已经初始化
            if (base.btnCancel != null) { return; }
            this.selectHour = i_hour;
            this.selectMinute = i_minute;
            //初始化底层控件
            var frameWhiteBack = base.InitBaseControl();
            frameWhiteBack.Height = Application.GetRealHeight(contentView);
            if (contentView != -1)
            {
                frameWhiteBack.Height = Application.GetRealHeight(contentView);
            }
            //frameWhiteBack.Y = frameWhiteBack.Parent.Height - Application.GetRealHeight(297 + 20);
            //取消
@@ -125,27 +131,27 @@
            //时间控件
            pickerView = new UIPickerView();
            //时
            var strhour = Language.StringByID(StringId.h);
            var strhour = HdlCommonLogic.Current.GetHourText();
            //分
            var strMinute = Language.StringByID(StringId.m);
            if(!isHour)
            {
                strhour = Language.StringByID(StringId.m);
            var strMinute = HdlCommonLogic.Current.GetMinuteText();
            if(!isHour)
            {
                strhour = Language.StringByID(StringId.m);
                strMinute = Language.StringByID(StringId.s);
            }
            //XX时
            listHour = new List<string>();// { "00" + strhour };
            //XX分
            listMinute = new List<string>();// { "00" + strMinute };
            //for (int i = 1; i <= 23; i++)
            foreach(var hItem in hRange)
            listMinute = new List<string>();// { "00" + strMinute };
            //for (int i = 1; i <= 23; i++)
            foreach (var hItem in hRange)
            {
                listHour.Add(hItem.ToString().PadLeft(2, '0') + strhour);
            }
            //for (int i = 1; i <= 59; i++)
            foreach (var mItem in mRange)
            }
            //for (int i = 1; i <= 59; i++)
            foreach (var mItem in mRange)
            {
                listMinute.Add(mItem.ToString().PadLeft(2, '0') + strMinute);
            }
@@ -171,32 +177,57 @@
            };
        }
        /// <summary>
        /// 特殊的集合选择事件,凉霸时间设置使用
        /// <summary>
        /// 特殊的集合选择事件,凉霸时间设置使用
        /// </summary>
        public void ChangePickerEvent()
        {
        public void ChangePickerEvent()
        {
            pickerView.OnSelectChangeEvent = (value1, value2, value3) =>
            {
                if (value1 == 0 && value2 == 0)
                {
                    value2 = 1;
                    pickerView.setCurrentItems(value1, value2, 0);
                }
                else if (value1 == 4 && value2 == 1)
                {
                    value2 = 0;
                    pickerView.setCurrentItems(value1, value2, 0);
                }
                //else
                {
                    //更改索引
                    selectHour = Convert.ToInt32(listHour[value1].Substring(0, 2));
                    selectMinute = Convert.ToInt32(listMinute[value2].Substring(0, 2));
            {
                if (value1 == 0 && value2 == 0)
                {
                    value2 = 1;
                    pickerView.setCurrentItems(value1, value2, 0);
                }
            };
        }
                else if (value1 == 4 && value2 == 1)
                {
                    value2 = 0;
                    pickerView.setCurrentItems(value1, value2, 0);
                }
                else
                {
                    //更改索引
                    selectHour = Convert.ToInt32(listHour[value1].Substring(0, 2));
                    selectMinute = Convert.ToInt32(listMinute[value2].Substring(0, 2));
                }
            };
        }
        /// <summary>
        /// 特殊的集合选择事件,场景时间设置使用
        /// </summary>
        public void ChangePickerEvent2()
        {
            pickerView.OnSelectChangeEvent = (value1, value2, value3) =>
            {
                if (value1 == 60 && value2 == 60)
                {
                    value2 = 0;
                    pickerView.setCurrentItems(value1, value2, 0);
                }
                //else if (value1 == 4 && value2 == 1)
                //{
                //    value2 = 0;
                //    pickerView.setCurrentItems(value1, value2, 0);
                //}
                //else
                //{
                //    //更改索引
                //    selectHour = Convert.ToInt32(listHour[value1].Substring(0, 2));
                //    selectMinute = Convert.ToInt32(listMinute[value2].Substring(0, 2));
                //}
            };
        }
        #endregion
        #region ■ 一般方法___________________________
HDL_ON/UI/UI0-Stan/Form/DeviceFunctionCardCommonForm.cs
@@ -145,7 +145,8 @@
            btnRoomName.Text = device.GetRoomListName();
            btnRoomName.Width = btnRoomName.GetRealWidthByText();
            FrameWhiteCentet1.AddChidren(btnRoomName);
            if (ShowColltionButton)
            //成员没有收藏功能
            //if (DB_ResidenceData.Instance.CurrentRegion.isOtherShare == false && ShowColltionButton)
            {
                var btnCollection = new IconViewControl(40);
                btnCollection.X = Application.GetRealWidth(273);
HDL_ON/UI/UI1-Login/ForgetPasswordPage.cs
@@ -350,7 +350,6 @@
                TextSize = CSS_FontSize.TextFontSize,
                PlaceholderTextColor = CSS_Color.PromptingColor1,
                PlaceholderText = Language.StringByID(StringId.PlsEntryVerificationCode),
                IsNumberKeyboardType = true
            };
            verificationCodeView.AddChidren(etVerificationCode);
HDL_ON/UI/UI1-Login/LoginPage.cs
@@ -199,8 +199,7 @@
                //return;
                if (b)
                {
                    etAccount.Text = "15626203746";//测试服务器
                    //etAccount.Text = "13375012446";//测试服务器
                    etAccount.Text = "13375012446";//测试服务器
                    //etAccount.Text = "1033326940@qq.com";
                    //etAccount.Text = "18022428438";//wjc
                    //etAccount.Text = "13602944661";//kx
@@ -216,8 +215,7 @@
                    //etAccount.Text = "BB01010101@evoyo.com";//可视对讲
                    //etAccount.Text = "13168123446";
                    //etAccount.Text = "13676202754";//巴林服务器
                    //etAccount.Text = "13602944661";//kx
                    etAccount.Text = "551775569@qq.com";//wcf
                    etAccount.Text = "13602944661";//kx
                    //etAccount.Text = "18666455392";//13375012446//13602944661//tzy 18778381374
                    //etAccount.Text = "15971583093";// gs//tzy 274116637@qq.com//Sumant.Bhatia@havells.com 国外服务器测试
                }
HDL_ON/UI/UI1-Login/RegisterPage.cs
@@ -607,7 +607,6 @@
                TextSize = CSS_FontSize.TextFontSize,
                PlaceholderTextColor = CSS_Color.PromptingColor1,
                PlaceholderText = Language.StringByID(StringId.PlsEntryVerificationCode),
                IsNumberKeyboardType = true
            };
            verificationCodeView.AddChidren(etVerificationCode);
HDL_ON/UI/UI2/1-HomePage/HomePage.cs
@@ -35,21 +35,13 @@
        /// </summary>
        FrameLayout environmentalView;
        /// <summary>
        /// 当前温度信息-室外
        /// 当前温度信息
        /// </summary>
        TextButton btnTempValues;
        /// <summary>
        /// 当前湿度信息-室外
        /// 当前湿度信息
        /// </summary>
        TextButton btnHumidityValues;
        /// <summary>
        /// 当前温度信息-室内
        /// </summary>
        TextButton btnIndoorTempValues;
        /// <summary>
        /// 当前湿度信息-室内
        /// </summary>
        TextButton btnIndoorHumiValues;
        /// <summary>
        /// 当前pm2.5状态
        /// </summary>
@@ -192,27 +184,9 @@
                };
                topView.AddChidren(environmentalView);
                #region 环境数据
                var tempSensorList = FunctionList.List.GetEnvirSensorsList().FindAll((obj) => obj.spk == SPK.SensorTemperature);
                var humiSensorList = FunctionList.List.GetEnvirSensorsList().FindAll((obj) => obj.spk == SPK.SensorHumidity);
                var btnEnvirValuesTitle = new Button() {
                    X = Application.GetRealWidth(12),
                    Gravity = Gravity.CenterVertical,
                    TextColor = CSS_Color.MainBackgroundColor,
                    TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
                    TextID = StringId.InOutdoor,
                    TextAlignment = TextAlignment.CenterLeft,
                };
                if (tempSensorList.Count > 0 || humiSensorList.Count > 0)
                {
                    btnEnvirValuesTitle.Width = Application.GetRealWidth(8)+ btnEnvirValuesTitle.GetTextWidth();
                }
                environmentalView.AddChidren(btnEnvirValuesTitle);
                Button btnTempIcon = new Button()
                {
                    X = btnEnvirValuesTitle.Right,//+ Application.GetRealWidth(4),
                    //X = Application.GetRealWidth(12),
                    X = Application.GetRealWidth(12),
                    Gravity = Gravity.CenterVertical,
                    Width = Application.GetMinRealAverage(16),
                    Height = Application.GetMinRealAverage(16),
@@ -223,44 +197,18 @@
                btnTempValues = new TextButton()
                {
                    X = btnTempIcon.Right + Application.GetRealWidth(4),
                    Width = Application.GetRealWidth(30),
                    Gravity = Gravity.CenterVertical,
                    TextColor = CSS_Color.MainBackgroundColor,
                    TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
                    Text = MainPage.cityInfo.temperature + "°",
                    TextAlignment = TextAlignment.CenterLeft,
                };
                btnTempValues.Width = btnTempValues.GetTextWidth();
                environmentalView.AddChidren(btnTempValues);
                btnIndoorTempValues = new TextButton()
                {
                    X = btnTempValues.Right,
                    Gravity = Gravity.CenterVertical,
                    TextColor = CSS_Color.MainBackgroundColor,
                    TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
                    TextAlignment = TextAlignment.CenterLeft,
                    Text = "/--°",
                };
                if (tempSensorList.Count > 0)
                {
                    double tempTotalValues = 0;
                    foreach (var temp in tempSensorList)
                    {
                        double tempValue = 0;
                        double.TryParse(temp.GetAttrState(FunctionAttributeKey.Value), out tempValue);
                        tempTotalValues += tempValue;
                    }
                    if (tempTotalValues > 0)
                    {
                        btnIndoorTempValues.Text = "/" + tempTotalValues + "°";
                    }
                    btnIndoorTempValues.Width = btnIndoorTempValues.GetTextWidth();
                }
                environmentalView.AddChidren(btnIndoorTempValues);
                Button btnHumidityIcon = new Button()
                {
                    X = btnIndoorTempValues.Right + Application.GetRealWidth(8),
                    X = btnTempValues.Right + Application.GetRealWidth(2),
                    Gravity = Gravity.CenterVertical,
                    Width = Application.GetMinRealAverage(16),
                    Height = Application.GetMinRealAverage(16),
@@ -271,44 +219,18 @@
                btnHumidityValues = new TextButton()
                {
                    X = btnHumidityIcon.Right + Application.GetRealWidth(4),
                    Width = Application.GetRealWidth(30),
                    Gravity = Gravity.CenterVertical,
                    TextColor = CSS_Color.MainBackgroundColor,
                    TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
                    Text = MainPage.cityInfo.humidity + "%",
                    TextAlignment = TextAlignment.CenterLeft,
                };
                btnHumidityValues.Width = btnHumidityValues.GetTextWidth();
                environmentalView.AddChidren(btnHumidityValues);
                btnIndoorHumiValues = new TextButton()
                {
                    X = btnHumidityValues.Right,
                    Gravity = Gravity.CenterVertical,
                    TextColor = CSS_Color.MainBackgroundColor,
                    TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
                    TextAlignment = TextAlignment.CenterLeft,
                    Text = "/--%",
                };
                if (tempSensorList.Count > 0)
                {
                    double humiTotalValues = 0;
                    foreach (var humi in humiSensorList)
                    {
                        double humiValue = 0;
                        double.TryParse(humi.GetAttrState(FunctionAttributeKey.Value), out humiValue);
                        humiTotalValues += humiValue;
                    }
                    if (humiTotalValues > 0)
                    {
                        btnIndoorHumiValues.Text = "/" + humiTotalValues + "%";
                    }
                    btnIndoorHumiValues.Width = btnIndoorHumiValues.GetTextWidth();
                }
                environmentalView.AddChidren(btnIndoorHumiValues);
                Button btnPm25Icon = new Button()
                {
                    X = btnIndoorHumiValues.Right + Application.GetRealWidth(4),
                    X = btnHumidityValues.Right + Application.GetRealWidth(2),
                    Gravity = Gravity.CenterVertical,
                    Width = Application.GetMinRealAverage(16),
                    Height = Application.GetMinRealAverage(16),
@@ -319,13 +241,13 @@
                btnPm25Values = new TextButton()
                {
                    X = btnPm25Icon.Right + Application.GetRealWidth(4),
                    Width = Application.GetRealWidth(130),
                    Gravity = Gravity.CenterVertical,
                    TextColor = CSS_Color.MainBackgroundColor,
                    TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
                    Text = MainPage.cityInfo.pm25,
                    TextAlignment = TextAlignment.CenterLeft,
                };
                btnPm25Values.Width = btnPm25Values.GetTextWidth();
                environmentalView.AddChidren(btnPm25Values);
                #endregion
@@ -461,86 +383,7 @@
#if DEBUG
            FunctionList.List.Functions.Add(new Function() { spk = SPK.PjtIr, name = "测试投影仪",
                                        attributes = new List<FunctionAttributes>() {
                                            new FunctionAttributes(){ key = "on_off",curValue= "on",state = "on" },
                                            new FunctionAttributes(){ key = "computer",value = new List<string>(){"电脑" } },
                                            new FunctionAttributes(){ key = "video",value = new List<string>(){"视频" } },
                                            new FunctionAttributes(){ key = "source",value = new List<string>(){"信号源" } },
                                            new FunctionAttributes(){ key = "zoom+",value = new List<string>(){"变焦+" } },
                                            new FunctionAttributes(){ key = "zoom-",value = new List<string>(){"变焦-" } },
                                            new FunctionAttributes(){ key = "page+",value = new List<string>(){"画面+" } },
                                            new FunctionAttributes(){ key = "page-",value = new List<string>(){"画面-" } },
                                            new FunctionAttributes(){ key = "menu",value = new List<string>(){"菜单" } },
                                            new FunctionAttributes(){ key = "ok",value = new List<string>(){"确认" } },
                                            new FunctionAttributes(){ key = "up",value = new List<string>(){"上" } },
                                            new FunctionAttributes(){ key = "left",value = new List<string>(){"左" } },
                                            new FunctionAttributes(){ key = "right",value = new List<string>(){"右" } },
                                            new FunctionAttributes(){ key = "down",value = new List<string>(){"下" } },
                                            new FunctionAttributes(){ key = "exit",value = new List<string>(){"退出" } },
                                            new FunctionAttributes(){ key = "volume+",value = new List<string>(){"音量+" } },
                                            new FunctionAttributes(){ key = "volume-",value = new List<string>(){"音量-" } },
                                            new FunctionAttributes(){ key = "mute",value = new List<string>(){"静音" } },
                                            new FunctionAttributes(){ key = "auto",value = new List<string>(){"自动" } },
                                            new FunctionAttributes(){ key = "pause",value = new List<string>(){"暂停" } },
                                        }
            });
            FunctionList.List.Functions.Add(new Function()
            {
                spk = SPK.StbIr,
                name = "测试机顶盒",
                attributes = new List<FunctionAttributes>() {
                                            new FunctionAttributes(){ key = "on_off",curValue= "on",state = "on" },
                                            new FunctionAttributes(){ key = "computer",value = new List<string>(){"电脑" } },
                                            new FunctionAttributes(){ key = "video",value = new List<string>(){"视频" } },
                                            new FunctionAttributes(){ key = "source",value = new List<string>(){"信号源" } },
                                            new FunctionAttributes(){ key = "zoom+",value = new List<string>(){"变焦+" } },
                                            new FunctionAttributes(){ key = "zoom-",value = new List<string>(){"变焦-" } },
                                            new FunctionAttributes(){ key = "page+",value = new List<string>(){"画面+" } },
                                            new FunctionAttributes(){ key = "page-",value = new List<string>(){"画面-" } },
                                            new FunctionAttributes(){ key = "menu",value = new List<string>(){"菜单" } },
                                            new FunctionAttributes(){ key = "ok",value = new List<string>(){"确认" } },
                                            new FunctionAttributes(){ key = "up",value = new List<string>(){"上" } },
                                            new FunctionAttributes(){ key = "left",value = new List<string>(){"左" } },
                                            new FunctionAttributes(){ key = "right",value = new List<string>(){"右" } },
                                            new FunctionAttributes(){ key = "down",value = new List<string>(){"下" } },
                                            new FunctionAttributes(){ key = "exit",value = new List<string>(){"退出" } },
                                            new FunctionAttributes(){ key = "volume+",value = new List<string>(){"音量+" } },
                                            new FunctionAttributes(){ key = "volume-",value = new List<string>(){"音量-" } },
                                            new FunctionAttributes(){ key = "mute",value = new List<string>(){"静音" } },
                                            new FunctionAttributes(){ key = "auto",value = new List<string>(){"自动" } },
                                            new FunctionAttributes(){ key = "pause",value = new List<string>(){"暂停" } },
                                        }
            });
            FunctionList.List.Functions.Add(new Function()
            {
                spk = SPK.TvIr,
                name = "测试电视",
                attributes = new List<FunctionAttributes>() {
                                            new FunctionAttributes(){ key = "on_off",curValue= "on",state = "on" },
                                            new FunctionAttributes(){ key = "computer",value = new List<string>(){"电脑" } },
                                            new FunctionAttributes(){ key = "video",value = new List<string>(){"视频" } },
                                            new FunctionAttributes(){ key = "source",value = new List<string>(){"信号源" } },
                                            new FunctionAttributes(){ key = "zoom+",value = new List<string>(){"变焦+" } },
                                            new FunctionAttributes(){ key = "zoom-",value = new List<string>(){"变焦-" } },
                                            new FunctionAttributes(){ key = "page+",value = new List<string>(){"画面+" } },
                                            new FunctionAttributes(){ key = "page-",value = new List<string>(){"画面-" } },
                                            new FunctionAttributes(){ key = "menu",value = new List<string>(){"菜单" } },
                                            new FunctionAttributes(){ key = "ok",value = new List<string>(){"确认" } },
                                            new FunctionAttributes(){ key = "up",value = new List<string>(){"上" } },
                                            new FunctionAttributes(){ key = "left",value = new List<string>(){"左" } },
                                            new FunctionAttributes(){ key = "right",value = new List<string>(){"右" } },
                                            new FunctionAttributes(){ key = "down",value = new List<string>(){"下" } },
                                            new FunctionAttributes(){ key = "exit",value = new List<string>(){"退出" } },
                                            new FunctionAttributes(){ key = "volume+",value = new List<string>(){"音量+" } },
                                            new FunctionAttributes(){ key = "volume-",value = new List<string>(){"音量-" } },
                                            new FunctionAttributes(){ key = "mute",value = new List<string>(){"静音" } },
                                            new FunctionAttributes(){ key = "auto",value = new List<string>(){"自动" } },
                                            new FunctionAttributes(){ key = "pause",value = new List<string>(){"暂停" } },
                                        }
            });
            //FunctionList.List.Functions.Add(new Function() { spk = SPK.ClothesHanger, name = "测试凉霸", attributes = new List<FunctionAttributes> { new FunctionAttributes { key = FunctionAttributeKey.HotDry } ,new FunctionAttributes { key = FunctionAttributeKey.HotDryTime } ,new FunctionAttributes { key = FunctionAttributeKey.HotDryTimeLeft } } });
#endif
        }
@@ -840,11 +683,6 @@
                };
                view.AddChidren(btnIcon);
                btnIcon.UnSelectedImagePath = $"FunctionIcon/Icon/HomeIcon/{function.IconName}_blue.png";
                btnIcon.SelectedImagePath = $"FunctionIcon/Icon/HomeIcon/{function.IconName}_white.png";
                Button btnName;
                btnName = new Button()
                {
@@ -946,17 +784,14 @@
                    LoadEvent_ControlCurtain(function, btnCurtainClose, btnCurtainOpen);
                }
                else if (function.spk == SPK.ElectricTV || function.spk == SPK.TvIr || function.spk == SPK.TvXmIr
                    || function.spk == SPK.StbIr || function.spk == SPK.PjtIr)
                else if (function.spk == SPK.ElectricTV || function.spk == SPK.TvIr)
                {
                    //btnIcon.UnSelectedImagePath = $"FunctionIcon/Icon/HomeIcon/{function.IconName}_blue.png";
                    //btnIcon.SelectedImagePath = $"FunctionIcon/Icon/HomeIcon/{function.IconName}_white.png";
                    btnIcon.UnSelectedImagePath = "FunctionIcon/Electrical/TVIcon.png";
                    Button btnPower;
                    btnPower = new Button()
                    {
                        X = Application.GetRealWidth(131),
                        Y = Application.GetRealHeight(80),
                        Y = Application.GetRealHeight(70),
                        Width = Application.GetRealWidth(32),
                        Height = Application.GetRealWidth(32),
                        UnSelectedImagePath = "Public/PowerClose.png",
@@ -1136,7 +971,7 @@
                btnIcon.MouseUpEventHandler = skipControlPageEvent;
                btnState.MouseUpEventHandler = skipControlPageEvent;
                //电视不需要更新状态
                if(function.spk!= SPK.ElectricTV && function.spk != SPK.StbIr && function.spk != SPK.PjtIr)
                if(function.spk!= SPK.ElectricTV)
                {
                    UpdataFunctionStates(function);
                }
HDL_ON/UI/UI2/1-HomePage/HomePageBLL.cs
@@ -21,59 +21,6 @@
                bodyView.btnPm25Values.Text = MainPage.cityInfo.pm25 == null ? "--" : MainPage.cityInfo.pm25;
            }
        }
        /// <summary>
        /// 更新室内传感器数据-湿度
        /// </summary>
        public static void LoadEvent_RefreshEnvirIndoorHumi()
        {
            Application.RunOnMainThread(() =>
            {
                if (bodyView != null)
                {
                    var humiSensorList = FunctionList.List.GetEnvirSensorsList().FindAll((obj) => obj.spk == SPK.SensorHumidity);
                    double humiTotalValues = 0;
                    foreach (var temp in humiSensorList)
                    {
                        double humiValue = 0;
                        double.TryParse(temp.GetAttrState(FunctionAttributeKey.Value), out humiValue);
                        humiTotalValues += humiValue;
                    }
                    if (humiTotalValues > 0)
                    {
                        bodyView.btnIndoorHumiValues.Text = "/" + humiTotalValues + "%";
                    }
                    bodyView.btnIndoorHumiValues.Width = bodyView.btnIndoorHumiValues.GetTextWidth();
                }
            });
        }
        /// <summary>
        /// 更新室内传感器数据-晚点
        /// </summary>
        public static void LoadEvent_RefreshEnvirIndoorTemp()
        {
            Application.RunOnMainThread(() =>
            {
                if (bodyView != null)
                {
                    var tempSensorList = FunctionList.List.GetEnvirSensorsList().FindAll((obj) => obj.spk == SPK.SensorTemperature);
                    double tempTotalValues = 0;
                    foreach (var temp in tempSensorList)
                    {
                        double tempValue = 0;
                        double.TryParse(temp.GetAttrState(FunctionAttributeKey.Value), out tempValue);
                        tempTotalValues += tempValue;
                    }
                    if (tempTotalValues > 0)
                    {
                        bodyView.btnIndoorTempValues.Text = "/" + tempTotalValues + "°";
                    }
                    bodyView.btnIndoorTempValues.Width = bodyView.btnIndoorTempValues.GetTextWidth();
                }
            });
        }
        /// <summary>
        /// 更新功能列表主页
        /// </summary>
HDL_ON/UI/UI2/2-Classification/ClassificationPage.cs
@@ -475,9 +475,10 @@
                        break;
                    case ShowFunction.EnergyMonitoring:
                        #region 能源
                        functionCount = FunctionList.List.GetEnergyList().Count;
                        functionOnCount = FunctionList.List.GetEnergyList().FindAll((obj) => obj.trait_on_off.curValue.ToString() == "on").Count;
                        functionCount = FunctionList.List.GetElectricals().Count;
                        functionOnCount = FunctionList.List.GetElectricals().FindAll((obj) => obj.trait_on_off.curValue.ToString() == "on").Count;
                        #endregion
                        //functionCount = 1;
                        break;
                    case ShowFunction.Environmental:
                        #region 环境数据
@@ -562,12 +563,11 @@
                {
                    X = Application.GetRealWidth(16),
                    Y = Application.GetRealHeight(14),
                    Width = Application.GetRealWidth(140),
                    Width = Application.GetRealWidth(120),
                    Height = Application.GetRealHeight(24),
                    TextColor = CSS_Color.FirstLevelTitleColor,
                    TextSize = CSS_FontSize.TextFontSize,
                    TextAlignment = TextAlignment.CenterLeft,
                    IsMoreLines = true,
                };
                functionView.AddChidren(btnName);
HDL_ON/UI/UI2/2-Classification/FunctionControlZoneBLL.cs
@@ -81,7 +81,7 @@
            {
                btnSwitch.IsSelected = !btnSwitch.IsSelected;
                if(function.spk == SPK.IrLearn || function.spk == SPK.TvIr || function.spk == SPK.TvXmIr)
                if(function.spk == SPK.IrLearn || function.spk == SPK.TvIr)
                {
                    new System.Threading.Thread(() => {
                        System.Threading.Thread.Sleep(2000);
HDL_ON/UI/UI2/2-Classification/RoomPage.cs
@@ -77,7 +77,7 @@
            foreach (var function in room.GetRoomFunctions(false))
            {
                if (function.Spk_Prefix == FunctionCategory.Sensor || function.spk == SPK.ElectricEnergy)
                if (function.Spk_Prefix == FunctionCategory.Sensor)
                {
                    continue;
                }
HDL_ON/UI/UI2/3-Intelligence/Automation/AddInputType.cs
@@ -1,5 +1,4 @@
using System;
using System.Collections.Generic;
using Shared;
namespace HDL_ON.UI.UI2.Intelligence.Automation
{
@@ -28,7 +27,7 @@
                BackgroundColor = CSS.CSS_Color.viewMiddle,
            };
            this.AddChidren(viewLayout);
            #region 时间  功能 室外变化
            #region 时间  功能
            //时间
            LogicView.SelectTypeView timeView = new LogicView.SelectTypeView();
            timeView.btnText.TextID = StringId.time;
@@ -59,9 +58,9 @@
            {
                viewLayout.AddChidren(shiwaiView.FLayoutView());
            }
            #endregion
            #region  所有点击事件
            //时间
            timeView.btnClick.MouseUpEventHandler += (sen, e) => {
HDL_ON/UI/UI2/3-Intelligence/Automation/AddTarget.cs
@@ -46,7 +46,7 @@
            LogicView.SelectTypeView delayView = new LogicView.SelectTypeView();
            delayView.frameLayout.Y = sceneView.frameLayout.Bottom;
            delayView.btnText.TextID = StringId.delayLogic;
            delayView.btnIcon.UnSelectedImagePath = "LogicIcon/time.png";
            delayView.btnIcon.UnSelectedImagePath = "LogicIcon/delayed.png";
            //viewLayout.AddChidren(delayView.FLayoutView());
            #endregion
HDL_ON/UI/UI2/3-Intelligence/Automation/ConditionDeviceFunList.cs
@@ -175,21 +175,6 @@
                        }
                    }
                    break;
                case SPK.SenesorMegahealth:
                    {
                        LogicView.FunTypeView view = new LogicView.FunTypeView();
                        view.btnText.TextID = StringId.mubiaozhuangtai ;//目标状态
                        fLayout.AddChidren(view.FLayoutView());
                        view.btnClick.MouseUpEventHandler += (sender, e) =>
                        {
                            DeviceView(device, view.btnState, StringId.wuren, StringId.diedao);
                        };
                        if (edit)
                        {
                            GetEditState(device, index, view.btnState, null, null, null);
                        }
                    }
                    break;
            }
            #region  保存
@@ -283,11 +268,6 @@
                            keyVlaue = "status";
                        }
                        break;
                    case SPK.SenesorMegahealth:
                        {
                            keyVlaue = "action_state";
                        }
                        break;
                }
                switch (intValue)
@@ -314,21 +294,12 @@
                            value = "off";
                        }
                        break;
                    case StringId.youren:
                        {
                    case StringId.youren: {
                            value = "true";
                        }
                        break;
                    case StringId.wuren:
                        {
                            if (device.spk == SPK.SenesorMegahealth)
                            {
                                value = "uninhabited";
                            }
                            else
                            {
                                value = "false";
                            }
                    case StringId.wuren: {
                            value = "false";
                        }
                        break;
                    case StringId.kaiqi:
@@ -341,19 +312,14 @@
                            value = "close";
                        }
                        break;
                    case StringId.zaixian:
                        {
                    case StringId.zaixian: {
                            keyVlaue = "dismantle";
                            value = "true";
                        }; break;
                        };break;
                    case StringId.buzaixian:
                        {
                            keyVlaue = "dismantle";
                            value = "false";
                        }; break;
                    case StringId.diedao:
                        {
                            value = "fall";
                        }; break;
                }
                //显示文本
HDL_ON/UI/UI2/3-Intelligence/Automation/InpOrOutLogicMethod.cs
@@ -297,22 +297,6 @@
                                        inputView.btnState.Text = str;
                                    }
                                    break;
                                case SPK.SenesorMegahealth:
                                    {
                                        foreach (var dic in dicList)
                                        {
                                            string value = dic["value"];
                                            if (value == "fall")
                                            {
                                                inputView.btnState.Text = Language.StringByID(StringId.diedao);
                                            }
                                            else
                                            {
                                                inputView.btnState.Text = Language.StringByID(StringId.wuren);
                                            }
                                        }
                                    }
                                    break;
                            }
                        }
@@ -942,7 +926,7 @@
                        break;
                    case "3":
                        {
                            targetView.btnIcon.UnSelectedImagePath = "LogicIcon/time.png";
                            targetView.btnIcon.UnSelectedImagePath = "LogicIcon/delayed.png";
                            foreach (var dic in dicList)
                            {
                                string value = dic["value"];
@@ -1384,22 +1368,6 @@
                            }
                        }
                    }
                    break;
                case SPK.SenesorMegahealth:
                    {
                        foreach (var dic in dicList)
                        {
                            string value = dic["value"];
                            if (value == "fall")
                            {
                                button1.Text = Language.StringByID(StringId.diedao);
                            }
                            else
                            {
                                button1.Text = Language.StringByID(StringId.wuren);
                            }
                        }
                    }
                    break;
HDL_ON/UI/UI2/3-Intelligence/Automation/LogicMethod.cs
@@ -308,7 +308,6 @@
                case SPK.SensorPir:
                case SPK.SensorDoorWindow:
                case SPK.SensoruUtrasonic:
                case SPK.SenesorMegahealth:
                    {
                        strPath = "LogicIcon/sensor.png";
                    }
@@ -326,21 +325,13 @@
        {
            List<string> deviceStrTypeList = new List<string>();
            deviceStrTypeList.Clear();
            var lightjosn = deviceList.Find((device) =>
            device.spk == SPK.LightSwitch
            || device.spk == SPK.LightDimming
            || device.spk == SPK.LightCCT
            || device.spk == SPK.LightRGB
            || device.spk == SPK.LightRGBW);
            var lightjosn = deviceList.Find((device) => device.spk == SPK.LightSwitch || device.spk == SPK.LightDimming || device.spk == SPK.LightCCT || device.spk == SPK.LightRGB || device.spk == SPK.LightRGBW);
            if (lightjosn != null)
            {
                deviceStrTypeList.Add(Language.StringByID(StringId.Lights));
            }
            var curtainjosn = deviceList.Find((device) =>
            device.spk == SPK.CurtainSwitch
            || device.spk == SPK.CurtainTrietex
            || device.spk == SPK.CurtainRoller);
            var curtainjosn = deviceList.Find((device) => device.spk == SPK.CurtainSwitch || device.spk == SPK.CurtainTrietex || device.spk == SPK.CurtainRoller);
            if (curtainjosn != null)
            {
                deviceStrTypeList.Add(Language.StringByID(StringId.Curtain));
@@ -366,7 +357,6 @@
            || device.spk == SPK.SensorPir
            || device.spk == SPK.SensorDoorWindow
            || device.spk == SPK.SensoruUtrasonic
            || device.spk == SPK.SenesorMegahealth
            );
            if (sensor != null)
            {
@@ -416,8 +406,7 @@
                functionTypeList.Add(SPK.SensorPir);
                functionTypeList.Add(SPK.SensorDoorWindow);
                functionTypeList.Add(SPK.SensoruUtrasonic);
                functionTypeList.Add(SPK.SenesorMegahealth);
            }
            return functionTypeList;
@@ -452,7 +441,6 @@
                        deviceTypeList.Add(SPK.SensorPir);
                        deviceTypeList.Add(SPK.SensorDoorWindow);
                        deviceTypeList.Add(SPK.SensoruUtrasonic);
                        deviceTypeList.Add(SPK.SenesorMegahealth);
                    }
                    break;
                case target_if:
HDL_ON/UI/UI2/3-Intelligence/Automation/LogicView/LogicTypeTitleView.cs
@@ -28,7 +28,7 @@
            //Y = Application.GetRealHeight(12),
            X = Application.GetRealWidth(12),
            Gravity = Gravity.CenterVertical,
           // IsMoreLines = true,
            IsMoreLines = true,
        };
        /// <summary>
        /// 图标
HDL_ON/UI/UI2/3-Intelligence/Automation/LogicView/TimeView.cs
@@ -203,7 +203,7 @@
        {
            //初始化列表
            var hList = new List<string>();
            for (int i = 0; i < 24; i++)
            for (int i = 0; i < 23; i++)
            {
                if (i < 10)
                {
HDL_ON/UI/UI2/3-Intelligence/Automation/MainView.cs
@@ -279,6 +279,7 @@
                    var jay = jArray[a];
                    //数据返序列化为Logic对象
                    var str = Newtonsoft.Json.JsonConvert.SerializeObject(jay);
                    Console.WriteLine("获取逻辑==="+str);
                    var logic = Newtonsoft.Json.JsonConvert.DeserializeObject<Logic>(str);
                    if (logic != null)
                    {
@@ -287,39 +288,38 @@
                        if (if_logic == null)
                        {
                            Logic newlogic = new Logic();
                            newlogic.name = logic.name;
                            newlogic.userLogicId = logic.userLogicId;
                            newlogic.sid = logic.sid;
                            newlogic.relation = logic.relation;
                            newlogic.enable = logic.enable;
                            newlogic.cycle = logic.cycle;
                            for (int i = 0; i < logic.input.Count; i++)
                            {
                                if (logic.input[i] == null || string.IsNullOrEmpty(logic.input[i].condition_type))
                                {
                                    //防止调试软件乱传东西上来;
                                    //防止有空对象;
                                    //正常情况下不会出现的现象;
                                    continue;
                                }
                                newlogic.input.Add(logic.input[i]);
                            }
                            for (int i = 0; i < logic.output.Count; i++)
                            {
                                if (logic.output[i] == null || string.IsNullOrEmpty(logic.output[i].target_type))
                                {
                                    //防止调试软件乱传东西上来;
                                    //防止有空对象;
                                    //正常情况下不会该现象;
                                    continue;
                                }
                                newlogic.output.Add(logic.output[i]);
                            }
                            newlogic.noticeConfig = logic.noticeConfig;
                            newlogic.pushConfigs = logic.pushConfigs;
                            //Logic newlogic = new Logic();
                            //newlogic.name = logic.name;
                            //newlogic.userLogicId = logic.userLogicId;
                            //newlogic.sid = logic.sid;
                            //newlogic.relation = logic.relation;
                            //newlogic.enable = logic.enable;
                            //newlogic.cycle = logic.cycle;
                            //for (int i = 0; i < logic.input.Count; i++)
                            //{
                            //    if (logic.input[i] == null || string.IsNullOrEmpty(logic.input[i].condition_type))
                            //    {
                            //        //防止调试软件乱传东西上来;
                            //        //防止有空对象;
                            //        //正常情况下不会出现的现象;
                            //        continue;
                            //    }
                            //    newlogic.input.Add(logic.input[i]);
                            //}
                            //for (int i = 0; i < logic.output.Count; i++)
                            //{
                            //    if (logic.output[i] == null || string.IsNullOrEmpty(logic.output[i].target_type))
                            //    {
                            //        //防止调试软件乱传东西上来;
                            //        //防止有空对象;
                            //        //正常情况下不会该现象;
                            //        continue;
                            //    }
                            //    newlogic.output.Add(logic.output[i]);
                            //}
                            //添加逻辑
                            Logic.LogicList.Add(newlogic);
                            Logic.LogicList.Add(logic);
                        }
                    }
@@ -511,7 +511,7 @@
            }
        }
        /// <summary>
        /// 判断网关类型(0:bus网关;1:A协议网关)
        /// 判断网关类型
        /// </summary>
        /// <returns></returns>
        public static bool IsGatewayType
@@ -522,7 +522,11 @@
                {
                    return true;
                }
                return false;
                else
                {
                    return false;
                }
            }
        }
    }
HDL_ON/UI/UI2/3-Intelligence/Automation/Send.cs
@@ -164,13 +164,14 @@
                logicIfon.Add("pushConfigs", pushConfigsArray);
                logicjArray.Add(logicIfon);
                var jObject = new JObject { { "homeId", LogicMethod.HomeId }, { "logics", logicjArray } };
                responsePackNew = RequestServerhomeId(jObject, NewAPI.API_POST_Logic_Add,5);
                responsePackNew = RequestServerhomeId(jObject, NewAPI.API_POST_Logic_Add);
                //如果是token过期则刷新token
                if (responsePackNew.Code == StateCode.TOKEN_EXPIRED)
                {
                    RefreshToken();
                    AddLogic(logic);
                }
                Console.WriteLine("添加逻辑===" + logicjArray);
            }
            catch (Exception e)
            {
@@ -274,7 +275,7 @@
                logicjArray.Add(logicIfon);
                var jObject = new JObject { { "homeId", LogicMethod.HomeId }, { "logics", logicjArray } };
                responsePackNew = RequestServerhomeId(jObject, NewAPI.API_POST_Logic_Update,5);
                responsePackNew = RequestServerhomeId(jObject, NewAPI.API_POST_Logic_Update);
                //如果是token过期则刷新token
                if (responsePackNew.Code == StateCode.TOKEN_EXPIRED)
                {
HDL_ON/UI/UI2/3-Intelligence/Automation/Weather.cs
@@ -45,6 +45,7 @@
            weatherView.btnLine.Width = Application.GetRealWidth(375 - 16 - 16);
            weatherView.btnText.TextID = StringId.tianqibianhua;
            viewLayout.AddChidren(weatherView.FLayoutView());
            //空气质量
            LogicView.SelectTypeView kongqiViewk = new LogicView.SelectTypeView(); 
            kongqiViewk.frameLayout.Y = weatherView.frameLayout.Bottom;
@@ -55,6 +56,7 @@
            kongqiViewk.btnText.TextID = StringId.kongqizhiliang;
            viewLayout.AddChidren(kongqiViewk.FLayoutView());
            #endregion
            #region  所有点击事件
            //室外温、湿度、PM2.5变化
            airqualityView.btnClick.MouseUpEventHandler += (sen, e) => {
HDL_ON/UI/UI2/3-Intelligence/IntelligencePage.cs
@@ -412,12 +412,12 @@
                    SelectedImagePath = "Collection/CollectionIcon.png",
                    IsSelected = scene.collect,
                };
                view.AddChidren(btnCollection);
                //view.AddChidren(btnCollection);
                //2020-12-16 如果是成员隐藏收藏功能
                //if (!DB_ResidenceData.Instance.CurrentRegion.isOtherShare)
                //{
                //    view.AddChidren(btnCollection);
                //}
                if (!DB_ResidenceData.Instance.CurrentRegion.isOtherShare)
                {
                    view.AddChidren(btnCollection);
                }
                btnCollection.MouseUpEventHandler = (sender, e) => {
                    scene.collect = btnCollection.IsSelected = !btnCollection.IsSelected;
                    scene.CollectScene();
HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/AddMiniRemoteControlDirection1Page.cs
HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/AddMiniRemoteControlDirection2Page.cs
HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/AddMiniRemoteControlDirection3Page.cs
HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/AddMiniRemoteControlDirection4Page.cs
HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/AddThirdPartyDeviceMenuListPage.cs
HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/SenesorMegahealth/AddSenesorMegahealthDirection1Page.cs
File was deleted
HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/SenesorMegahealth/SenesorMegahealthManagerPage.cs
File was deleted
HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/AddDevciePage.cs
@@ -49,9 +49,10 @@
            new System.Threading.Thread(() => {
                try
                {
                    var pm = new HttpServerRequest();
                    var pm = new DAL.Server.HttpServerRequest();
                    //var result = pm.Get3tyBindBrandList
                    var pack = pm.Get3TyBrandDeviceList(brand.productPlatform, brand.productBrand);
                    if (pack.Code == StateCode.SUCCESS)
                    if (pack.Code == DAL.Server.StateCode.SUCCESS)
                    {
                        var revData = Newtonsoft.Json.JsonConvert.DeserializeObject<List<IntegratedBrandDevice>>(pack.Data.ToString());
                        Application.RunOnMainThread(() =>
@@ -145,14 +146,6 @@
                            form.AddDeviceEvent = (functionObj) => {
                                refreshView.BeginHeaderRefreshing();
                            }; 
                            break;
                        case SPK.SenesorMegahealth:
                            var form1 = new AddSenesorMegahealthDirection1Page();
                            form1.AddForm(device);
                            form1.AddDeviceEvent = (functionObj) => {
                                refreshView.BeginHeaderRefreshing();
                                this.RemoveFromParent();
                            };
                            break;
                    }
                };
HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/DeviceListPage.cs
@@ -62,22 +62,9 @@
                    if (pack.Code == DAL.Server.StateCode.SUCCESS)
                    {
                        var revData = Newtonsoft.Json.JsonConvert.DeserializeObject<Function3tyBrandObj>(pack.Data.ToString());
                        Application.RunOnMainThread(() =>
                        {
                            contentView.RemoveAll();
                            if (revData.list.Count > 0)
                            {
                                LoadRow(revData.list);
                            }
                            else
                            {
                                var tipView = new EmptyTipView(Language.StringByID(StringId.NotAddedAnyDevices),160)
                                {
                                    Gravity = Gravity.CenterHorizontal,
                                };
                                contentView.AddChidren(tipView);
                            }
                            LoadRow(revData.list);
                        });
                    }
                    else
@@ -99,6 +86,7 @@
        void LoadRow(List<Function> deviceList)
        {
            contentView.RemoveAll();
            bool isFrist = true;
            foreach (var device in deviceList)
            {
@@ -164,15 +152,7 @@
                    switch (device.spk)
                    {
                        case SPK.IrModule:
                            new UI2.PersonalCenter.PirDevice.PirMethod().MainView(this, device,()=> {});
                            break;
                        case SPK.SenesorMegahealth:
                            var smPage = new SenesorMegahealthManagerPage();
                            smPage.AddForm(device);
                            smPage.DelDeviceEvent = () =>
                            {
                                contentView.BeginHeaderRefreshing();
                            };
                            new UI2.PersonalCenter.PirDevice.Method().MainView(this, device,()=> {});
                            break;
                    }
                };
HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/AddButton.cs
@@ -151,7 +151,7 @@
                        //移除添加按钮界面
                        this.RemoveFromParent();
                        //移除之前可能存在的界面
                        PirMethod.RemoveView("AddControl");
                        Method.RemoveView("AddControl");
                        //加载数据界面
                        AddControl addControl = new AddControl();
                        MainPage.BasePageView.AddChidren(addControl);
@@ -161,7 +161,7 @@
                    else
                    {
                        replication.RemView();
                        PirMethod method = new PirMethod();
                        Method method = new Method();
                        method.ErrorShow(null,"添加失败");
                    }
@@ -176,7 +176,7 @@
        public override void RemoveFromParent()
        {
            //刷新指定界面
            PirMethod.RefreshView("PirMain");
            Method.RefreshView("PirMain");
            base.RemoveFromParent();
        }
    }
HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/AddControl.cs
@@ -143,7 +143,7 @@
                //移除当前界面
                this.RemoveFromParent();
                //可能之前已经存在该界面
                PirMethod.RemoveView("AddControlComplete");
                Method.RemoveView("AddControlComplete");
                AddControlComplete addControlComplete = new AddControlComplete();
                MainPage.BasePageView.AddChidren(addControlComplete);
                addControlComplete.Show(control, false);
@@ -162,7 +162,7 @@
            View.Buttons buttons = new View.Buttons();
            buttons.AddButton2(vv, control.status, (obj) =>
            {
                PirMethod.ThreadSend(control, (responsePackNew) =>
                Method.ThreadSend(control, (responsePackNew) =>
                {
                    var buttonObj = control.status.Find((c) => c.value == obj.value);
                    if (buttonObj != null)
HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/AddControlComplete.cs
@@ -113,11 +113,11 @@
                    //添加所有遥控名称列表
                    list.Add(Pir.currPir.FunctioList[i].name);
                }
                PirMethod method = new PirMethod();
                Method method = new Method();
                method.EditControlName(StringId.editName, list, control.name, (name, dialog) =>
                {
                    //发送更新名称命令
                    PirMethod.ThreadSend(new Control { deviceId = control.deviceId, name = name }, (responsePackNew) =>
                    Method.ThreadSend(new Control { deviceId = control.deviceId, name = name }, (responsePackNew) =>
                    {
                        //关闭窗口
                        dialog.Close();
@@ -133,7 +133,7 @@
            //所属区域点击事件
            quyuPatchView.btnClick.MouseUpEventHandler += (sender, e) =>
            {
                PirMethod method = new PirMethod();
                Method method = new Method();
                method.ManagementPosition(GetFunction(control.deviceId), () =>
                {
                    //更新区域
@@ -145,12 +145,12 @@
            {
                if (bool_library)
                {//继续添加库的遥控器
                    PirMethod.RefreshView("PirMain");//刷新指点界面
                    Method.RefreshView("PirMain");//刷新指点界面
                    this.RemoveFromParent();
                }
                else
                {//继续添加自定义的遥控器
                    PirMethod method = new PirMethod();
                    Method method = new Method();
                    method.AddControl(this, (controlDevice) =>
                    {
                        AddButton addButton = new AddButton();
@@ -164,7 +164,7 @@
            saveView.btnClick.MouseUpEventHandler += (sender, e) =>
            {
                //刷新指点界面
                PirMethod.RefreshView("PirMain");
                Method.RefreshView("PirMain");
                //移除所有界面
                MainPage.BasePageView.RemoveViewByTag("PirView");
            };
@@ -191,7 +191,7 @@
        public override void RemoveFromParent()
        {
            //刷新指定界面
            PirMethod.RefreshView("PirMain");
            Method.RefreshView("PirMain");
            base.RemoveFromParent();
        }
    }
HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/BrandList.cs
@@ -18,8 +18,7 @@
                string s = brandList[str].brandName;
                strList.Add(s);
            }
            var dicList = GetDateList(strList);
            JLCountrycode.CountryCodeView.Current.ShowSortSelection(Language.StringByID(StringId.xuanzehongwaipinpai), dicList, (countryName) =>
            JLCountrycode.CountryCodeView.Current.ShowSortSelection("选择红外品牌", GetDateList(strList), (countryName) =>
            {
                var brandObj = brandList.Find((c) => c.brandName == countryName);
@@ -61,7 +60,6 @@
                        {
                            if (libraryList.Count < 40)
                            {
                                //限制40个库;
                                libraryList.Add(library);
                            }
                        }
@@ -70,7 +68,7 @@
                }
                else
                {
                    PirMethod method = new PirMethod();
                    Method method = new Method();
                    method.ErrorShow(responsePackNew, "");
                }
            }, id, "品牌红外码库列表");
HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/EditControl.cs
@@ -57,10 +57,10 @@
                {
                    list.Add(Pir.currPir.FunctioList[i].name);
                }
                PirMethod method = new PirMethod();
                Method method = new Method();
                method.EditControlName(StringId.editName,list, control.name, (name, dialog) =>
                {
                    PirMethod.ThreadSend(new Control { deviceId = control.deviceId, name = name }, (responsePackNew) =>
                    Method.ThreadSend(new Control { deviceId = control.deviceId, name = name }, (responsePackNew) =>
                    {
                        dialog.Close();
                        editNameFLayout.btnEditText.Text = name;
@@ -73,7 +73,7 @@
            //遥控器所属区域选中事件
            areaFLayout.btnClick.MouseUpEventHandler += (sender, e) =>
            {
                PirMethod method = new PirMethod();
                Method method = new Method();
                method.ManagementPosition(control, () =>
                {
                    //更新区域
HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/Matching.cs
@@ -148,7 +148,6 @@
            };
            fLayout.AddChidren(succeedBtn);
            #endregion
            #region 点击事件
            //表示库列表索引值(目前只20个库)
            int index = 1; 
@@ -177,13 +176,14 @@
                code = 1;
                GetBtnText(testBtn, code, spk);
            };
            //测试Text
            testBtn.MouseUpEventHandler += (sender, e) =>
            {
                var library = libraryList[index - 1];
                var control = GetControl(spk, testBtn.TextID, library);
                //发送测试码命令
                PirMethod.ThreadSend(control, (responsePackNew) => { }, "库码测试", "frame", this, null);
                Method.ThreadSend(control, (responsePackNew) => { }, "库码测试", "frame", this, null);
                if (code == 3) {
                    //标记最后那个码
                    if_bool = true;
@@ -216,20 +216,7 @@
                {
                    var library = libraryList[index-1];
                    var control = GetControl(spk, testBtn.TextID, library);
                    if (spk == SPK.TvIr)
                    {
                        //备注:伟南要求小米电视换掉spk=ir.tvxm(听说是临时解决方案)
                        var brand = brandList.Find((c) => c.id == library.brandId);
                        if (brand != null)
                        {
                            if (brand.brandName.Contains("小米") || brand.brandName.Contains("Xiaomi"))
                            {
                                //更换spk
                                control.spk = "ir.tvxm";
                            }
                        }
                    }
                    PirMethod method = new PirMethod();
                    Method method = new Method();
                    //发送库添加遥控器命令
                    method.ThreadAddControl(control, this, (device) =>  
                    {
@@ -308,136 +295,6 @@
                        }
                    }
                    break;
                case SPK.FanIr:
                    {
                        switch (textInt)
                        {
                            case StringId.dianyuan:
                                {
                                    key = "on_off";
                                    value = "on";
                                }
                                break;
                            case StringId.zhongsu:
                                {
                                    key = "middle";
                                    value = "";
                                }
                                break;
                            case StringId.yaotou:
                                {
                                    key = "swing";
                                    value = "";
                                }
                                break;
                        }
                    }
                    break;
                case SPK.PjtIr:
                    {
                        switch (textInt)
                        {
                            case StringId.dianyuan:
                                {
                                    key = "on_off";
                                    value = "on";
                                }
                                break;
                            case StringId.yinliangjia:
                                {
                                    key = "volume+";
                                    value = "";
                                }
                                break;
                            case StringId.yinliangjian:
                                {
                                    key = "volume-";
                                    value = "";
                                }
                                break;
                        }
                    }
                    break;
                case SPK.StbIr:
                    {
                        switch (textInt)
                        {
                            case StringId.dianyuan:
                                {
                                    key = "on_off";
                                    value = "on";
                                }
                                break;
                            case StringId.yinliangjia:
                                {
                                    key = "volume+";
                                    value = "";
                                }
                                break;
                            case StringId.yinliangjian:
                                {
                                    key = "volume-";
                                    value = "";
                                }
                                break;
                        }
                    }
                    break;
                case SPK.DvDIr:
                    {
                    }
                    break;
                case SPK.PurifierIr:
                    {
                        switch (textInt)
                        {
                            case StringId.dianyuan:
                                {
                                    key = "on_off";
                                    value = "on";
                                }
                                break;
                            case StringId.zidong:
                                {
                                    key = "auto";
                                    value = "";
                                }
                                break;
                            case StringId.jingyin:
                                {
                                    key = "mute";
                                    value = "0";
                                }
                                break;
                        }
                    }
                    break;
                case SPK.HeaterIr:
                    {
                        switch (textInt)
                        {
                            case StringId.dianyuan:
                                {
                                    key = "on_off";
                                    value = "on";
                                }
                                break;
                            case StringId.wendujia:
                                {
                                    key = "temp+";
                                    value = "";
                                }
                                break;
                            case StringId.wendujian:
                                {
                                    key = "temp-";
                                    value = "";
                                }
                                break;
                        }
                    }
                    break;
            }
            AttributesStatus buttonObj = new AttributesStatus();
            buttonObj.key = key;
@@ -511,121 +368,6 @@
                            case 3:
                                {
                                    textValue = StringId.jingyin;
                                }
                                break;
                        }
                    }
                    break;
                case SPK.FanIr:
                    {
                        switch (code)
                        {
                            case 1:
                                {
                                    textValue = StringId.dianyuan;
                                }
                                break;
                            case 2:
                                {
                                    textValue = StringId.zhongsu;
                                }
                                break;
                            case 3:
                                {
                                    textValue = StringId.yaotou;
                                }
                                break;
                        }
                    }
                    break;
                case SPK.PjtIr:
                    {
                        switch (code)
                        {
                            case 1:
                                {
                                    textValue = StringId.dianyuan;
                                }
                                break;
                            case 2:
                                {
                                    textValue = StringId.yinliangjia;
                                }
                                break;
                            case 3:
                                {
                                    textValue = StringId.yinliangjian;
                                }
                                break;
                        }
                    }
                    break;
                case SPK.StbIr:
                    {
                        switch (code)
                        {
                            case 1:
                                {
                                    textValue = StringId.dianyuan;
                                }
                                break;
                            case 2:
                                {
                                    textValue = StringId.yinliangjia;
                                }
                                break;
                            case 3:
                                {
                                    textValue = StringId.yinliangjian;
                                }
                                break;
                        }
                    }
                    break;
                case SPK.DvDIr:
                    {
                    }
                    break;
                case SPK.PurifierIr:
                    {
                        switch (code)
                        {
                            case 1:
                                {
                                    textValue = StringId.dianyuan;
                                }
                                break;
                            case 2:
                                {
                                    textValue = StringId.zidong;
                                }
                                break;
                            case 3:
                                {
                                    textValue = StringId.jingyin;
                                }
                                break;
                        }
                    }
                    break;
                case SPK.HeaterIr:
                    {
                        switch (code)
                        {
                            case 1:
                                {
                                    textValue = StringId.dianyuan;
                                }
                                break;
                            case 2:
                                {
                                    textValue = StringId.wendujia;
                                }
                                break;
                            case 3:
                                {
                                    textValue = StringId.wendujian;
                                }
                                break;
                        }
HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/Method.cs
File was renamed from HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/PirMethod.cs
@@ -6,7 +6,7 @@
namespace HDL_ON.UI.UI2.PersonalCenter.PirDevice
{
    public class PirMethod
    public class Method
    {
        /// <summary>
@@ -79,22 +79,22 @@
        {
            View.TipView tipView = new View.TipView();
            tipView.InputBox(frameLayout, "", (name, frame) =>
            {
                if (Pir.currPir != null && Pir.currPir.FunctioList.Count < 10)
                {
                    Control control = new Control();
                    control.name = name;
                    control.type = "learn";
                    control.spk = "ir.learn";
                    control.deviceId = Pir.currPir.deviceId;
                    ThreadAddControl(control, frame, action);
                }
                else
                {
                    View.TipView tt = new View.TipView();
                    tt.TipBox(StringId.tip, StringId.bunengchaoguo10);
                }
            }, false);
             {
                 if (Pir.currPir != null && Pir.currPir.FunctioList.Count < 10)
                 {
                     Control control = new Control();
                     control.name = name;
                     control.type = "learn";
                     control.spk = "ir.learn";
                     control.deviceId = Pir.currPir.deviceId;
                     ThreadAddControl(control, frame, action);
                 }
                 else
                 {
                     View.TipView tt = new View.TipView();
                     tt.TipBox(StringId.tip, StringId.bunengchaoguo10);
                 }
             }, false);
        }
        /// <summary>
@@ -223,7 +223,7 @@
                                {
                                    if (null == PirDevice.Pir.pirDeviceList.Find((c) => c.deviceId == pirJosn.deviceId))
                                    {
                                    {
                                        PirDevice.Pir.pirDeviceList.Add(pirJosn);
                                    }
                                }
@@ -252,7 +252,7 @@
                            else
                            {
                                loading.Hide();
                                PirMethod method = new PirMethod();
                                Method method = new Method();
                                method.ErrorShow(null, "读取红外宝列表失败");
                            }
                        }
@@ -329,24 +329,24 @@
        public static void GetControlList(FrameLayout frame, Action action, Pir pirDevice)
        {
            ThreadSend(new Control { deviceId = pirDevice.deviceId }, (responsePackNew) =>
            {
                var jArray = JArray.Parse(responsePackNew.Data.ToString());
                for (int a = 0; a < jArray.Count; a++)
                {
                    var jay = jArray[a];
                    //数据返序列化为Logic对象
                    var str = Newtonsoft.Json.JsonConvert.SerializeObject(jay);
                    var pirJosn = Newtonsoft.Json.JsonConvert.DeserializeObject<Entity.Function>(str);
                    if (pirJosn != null)
                    {
                        if (null == pirDevice.FunctioList.Find((c) => c.deviceId == pirJosn.deviceId))
                        {
                            pirDevice.FunctioList.Add(pirJosn);
                        }
                    }
                }
                action();
            }, "获取遥控器列表", "frame", frame, null);
             {
                 var jArray = JArray.Parse(responsePackNew.Data.ToString());
                 for (int a = 0; a < jArray.Count; a++)
                 {
                     var jay = jArray[a];
                     //数据返序列化为Logic对象
                     var str = Newtonsoft.Json.JsonConvert.SerializeObject(jay);
                     var pirJosn = Newtonsoft.Json.JsonConvert.DeserializeObject<Entity.Function>(str);
                     if (pirJosn != null)
                     {
                         if (null == pirDevice.FunctioList.Find((c) => c.deviceId == pirJosn.deviceId))
                         {
                             pirDevice.FunctioList.Add(pirJosn);
                         }
                     }
                 }
                 action();
             }, "获取遥控器列表", "frame", frame, null);
        }
        /// <summary>
@@ -373,7 +373,7 @@
        /// <param name="frame">log父控件</param>
        /// <param name="dialog">log父控件</param>
        /// <param name="attributesStatus">学习按键</param>
        public static void ThreadSend(Control control, Action<ResponsePackNew> action, string str, string view, FrameLayout frame, Dialog dialog, Entity.AttributesStatus attributesStatus = null)
        public static void ThreadSend(Control control, Action<ResponsePackNew> action, string str, string view, FrameLayout frame, Dialog dialog, Entity.AttributesStatus attributesStatus=null)
        {
            //加载log
@@ -434,7 +434,7 @@
                        }
                        else
                        {
                            PirMethod method = new PirMethod();
                            Method method = new Method();
                            //自定义错误提示文本
                            string eorroText = "";
                            if (str == "删除")
@@ -565,26 +565,6 @@
                            }
                            break;
                        case "14002":
                            {
                                str = Language.StringByID(StringId.bucunzaichanpin);
                            }
                            break;
                        case "10805":
                            {
                                str = Language.StringByID(StringId.shebeibucunzai);
                            }
                            break;
                        case "14006":
                            {
                                str = Language.StringByID(StringId.shebeibuzaixian);
                            }
                            break;
                        case "9":
                            {
                                str = Language.StringByID(StringId.wangguanshebeibuzaixian);
                            }
                            break;
                        case "2":
                            {
                                str = Language.StringByID(StringId.xitongweihuzhong);
@@ -691,10 +671,13 @@
        public string id = "";
        public List<Objects> objects = new List<Objects>();
        public string time_stamp = string.Empty;
    }
    [Serializable]
    public class Objects
    {
        public string sid = string.Empty;
        public string spk = string.Empty;
        public List<Attributes> attributes = new List<Attributes>();
HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/PirMain.cs
@@ -61,7 +61,12 @@
            };
            middFLayout.AddChidren(addDevice);
            if (Pir.currPir.FunctioList.Count < 10)
            {
                //10个遥控器就会隐藏添加图标
                // middFLayout.AddChidren(addDevice);
                addDevice.Visible = true;
            }
            #endregion
            #region 界面点击事件
@@ -71,7 +76,7 @@
                    ////关闭刷新View;
                    vv.EndHeaderRefreshing();
                    PirMethod.GetControlList(this, () =>
                    Method.GetControlList(this, () =>
                    {
                        Application.RunOnMainThread(() =>
                        {
@@ -103,7 +108,7 @@
                    //1=空调;2=电视;3=风扇;4=机顶盒;5=DVD/EVD/VCD;6=投影仪;7=自定义;
                    if (if_value == 7)
                    {
                        PirMethod method = new PirMethod();
                        Method method = new Method();
                        method.AddControl(this, (control) =>
                        {
                            //成功后移除;
@@ -116,7 +121,7 @@
                    }
                    else
                    {
                        if (if_value == 6)
                        if (if_value == 3 || if_value == 4 || if_value == 5 || if_value == 6)
                        {
                            new TipPopView().FlashingBox(Language.StringByID(StringId.zanshibuzhichigaigongneng));
                            return;
@@ -143,18 +148,13 @@
            ///初始化界面
            UIView(vv);
        }
        /// <summary>
        /// 加载UI界面
        /// </summary>
        /// <param name="vv">上下滑控件</param>
        private void UIView(VerticalRefreshLayout vv)
        {
            if (Pir.currPir.FunctioList.Count < 10)
            {
                //10个遥控器就会隐藏添加图标
                // middFLayout.AddChidren(addDevice);
                addDevice.Visible = true;
            }
            vv.RemoveAll();
            #region 红外宝图标 版本号 名称 状态
            FrameLayout fLayout = new FrameLayout
@@ -208,7 +208,7 @@
                    TipPopView tipPopView = new TipPopView();
                    tipPopView.TipBox(StringId.tip, text, (dialog) =>
                    {
                        PirMethod.ThreadSend(new Control { deviceId=control.deviceId}, (responsePackNew) =>
                        Method.ThreadSend(new Control { deviceId=control.deviceId}, (responsePackNew) =>
                        {
                            dialog.Close();
                            var function = Pir.currPir.FunctioList.Find((c) => c.sid == Function.sid);
@@ -313,7 +313,7 @@
                {
                    if (tag)
                    {
                        PirMethod method = new PirMethod();
                        Method method = new Method();
                        method.ErrorShow(responsePackNew, "");
                    }
                }
@@ -360,7 +360,7 @@
                }
                else
                {
                    PirMethod method = new PirMethod();
                    Method method = new Method();
                    method.ErrorShow(responsePackNew, "");
                }
            }, id, "品牌列表");
HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/PirSend.cs
@@ -171,13 +171,13 @@
                    var responsePackNew = RequestServerhomeId(jObject, NewAPI.API_POST_Ir_CodeStudy);
                    if (responsePackNew != null && responsePackNew.Code == "0" && responsePackNew.Data.ToString() != "")
                    {
                        PirMethod method = new PirMethod();
                        PirMethod.buttondata = "";
                        Method method = new Method();
                        Method.buttondata = "";
                        cloud = method.MqttDate("按键", control.sid, 25);
                    }
                    else
                    {
                        PirMethod method = new PirMethod();
                        Method method = new Method();
                        method.ErrorShow(responsePackNew, "");
                    }
                }
HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/SetPir.cs
@@ -81,10 +81,10 @@
            editNameFLayout.btnClick.MouseUpEventHandler += (sender, e) =>
            {
                List<string> list = new List<string>();
                PirMethod method = new PirMethod();
                Method method = new Method();
                method.EditControlName(StringId.editName, list, Pir.currPir.name, (name, dialog) =>
                {
                    PirMethod.ThreadSend(new Control { deviceId = Pir.currPir.deviceId, name = name }, (responsePackNew) =>
                    Method.ThreadSend(new Control { deviceId = Pir.currPir.deviceId, name = name }, (responsePackNew) =>
                    {
                        dialog.Close();
                        editNameFLayout.btnEditText.Text = name;
@@ -102,7 +102,7 @@
                tipPopView.TipBox(StringId.tip, text, (dialog) =>
                {
                    PirMethod.ThreadSend(new Control { deviceId = Pir.currPir.deviceId }, (responsePackNew) =>
                    Method.ThreadSend(new Control { deviceId = Pir.currPir.deviceId }, (responsePackNew) =>
                    {
                        var pir = Pir.pirDeviceList.Find((c) => c.deviceId == Pir.currPir.deviceId);
                        if (pir != null)
@@ -111,7 +111,7 @@
                        }
                        dialog.Close();
                        this.RemoveFromParent();
                        PirMethod.RemoveView("PirMain");
                        Method.RemoveView("PirMain");
                    }, "删除", "dialog", null, dialog);
                }, () =>
@@ -131,7 +131,7 @@
        public override void RemoveFromParent()
        {
            //刷新PirMain界面
            PirMethod.RefreshView("PirMain");
            Method.RefreshView("PirMain");
            base.RemoveFromParent();
          
        }
HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/View/Buttons.cs
@@ -265,14 +265,14 @@
                    break;
                case 5:
                    {
                        iconPath = "PirIcon/projector.png";
                        deviceNameIndex = StringId.touyingyi;
                        iconPath = "PirIcon/dvd.png";
                        deviceNameIndex = StringId.dvd;
                    }
                    break;
                case 6:
                    {
                        iconPath = "PirIcon/dvd.png";
                        deviceNameIndex = StringId.dvd;
                        iconPath = "PirIcon/projector.png";
                        deviceNameIndex = StringId.touyingyi;
                    }
                    break;
                case 7:
@@ -310,28 +310,29 @@
                case 3:
                    {
                        //风扇
                        type = "fan-" + SPK.FanIr;
                        // type = "fan-" + SPK.ElectricFan;
                    }
                    break;
                case 4:
                    {
                        //机顶盒
                        type = "set_top_box-" + SPK.StbIr;
                        //  type = "set_top_box-" + SPK.ElectricTV;
                    }
                    break;
                case 5:
                    {
                        //投影仪
                        type = "projector-" + SPK.PjtIr;
                        //影碟机
                        // type = "dvd-" + SPK.ElectricTV;
                    }
                    break;
                case 6:
                    {
                        //影碟机
                        type = "dvd-" + SPK.DvDIr;
                        //投影仪
                        //  type = "projector-" + SPK.ElectricTV;
                    }
                    break;
            }
            return type;
        }
HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/View/PirView.cs
@@ -38,7 +38,7 @@
        {
            Y = Application.GetRealHeight(16),
            X = Application.GetRealWidth(72),
            Width = Application.GetRealWidth(120+80),
            Width = Application.GetRealWidth(120),
            Height = Application.GetRealHeight(20),
            //Text = pirDevice.name,
            TextAlignment = TextAlignment.CenterLeft,
HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/AcControlPage.cs
@@ -472,7 +472,6 @@
                };
            }
        }
        /// <summary>
        /// 加载额外对红外按钮界面
        /// </summary>
HDL_ON/UI/UI2/FuntionControlView/ArmSensor/SenesorMegahealthPage.cs
File was deleted
HDL_ON/UI/UI2/FuntionControlView/ArmSensor/SensorDoorWinwsPage.cs
@@ -29,7 +29,7 @@
        /// </summary>
        public override void InitFrameWhiteContent()
        {
            base.SetTitleText(Language.StringByID(StringId.Sensor));
            base.SetTitleText(device.name);
            //添加第二索引页
            this.AddSecondPage();
HDL_ON/UI/UI2/FuntionControlView/ArmSensor/SensorPirPage.cs
@@ -28,7 +28,7 @@
        public override void InitFrameWhiteContent()
        {
            base.ShowColltionButton = false;
            base.SetTitleText(Language.StringByID(StringId.Sensor));
            base.SetTitleText(device.name);
            //添加第二索引页
            this.AddSecondPage();
HDL_ON/UI/UI2/FuntionControlView/ArmSensor/SensorSmokePage.cs
@@ -27,7 +27,7 @@
        /// </summary>
        public override void InitFrameWhiteContent()
        {
            base.SetTitleText(Language.StringByID(StringId.Sensor));
            base.SetTitleText(device.name);
            //添加第二索引页
            this.AddSecondPage();
HDL_ON/UI/UI2/FuntionControlView/ArmSensor/SensorWaterImmersionPage.cs
@@ -27,7 +27,7 @@
        /// </summary>
        public override void InitFrameWhiteContent()
        {
            base.SetTitleText(Language.StringByID(StringId.Sensor));
            base.SetTitleText(device.name);
            //添加第二索引页
            this.AddSecondPage();
HDL_ON/UI/UI2/FuntionControlView/Electrical/IrFanPage.cs
File was deleted
HDL_ON/UI/UI2/FuntionControlView/Electrical/PjtPage.cs
File was deleted
HDL_ON/UI/UI2/FuntionControlView/Electrical/StbPage.cs
File was deleted
HDL_ON/UI/UI2/FuntionControlView/Electrical/TVPageBLL.cs
@@ -163,24 +163,7 @@
                }
            };
            btnTopMenuUp.MouseDownEventHandler = (sender, e) => {
                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIconUp.png";
            };
            btnTopMenuDown.MouseDownEventHandler = (sender, e) => {
                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIconDown.png";
            };
            btnTopMenuLeft.MouseDownEventHandler = (sender, e) => {
                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIconLeft.png";
            };
            btnTopMenuRight.MouseDownEventHandler = (sender, e) => {
                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIconRight.png";
            };
            btnOk.MouseDownEventHandler = (sender, e) => {
                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIconOk.png";
            };
            btnTopMenuUp.MouseUpEventHandler = (sender, e) => {
                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIcon.png";
                if (DB_ResidenceData.Instance.GatewayType == 1)
                {
                    Dictionary<string, string> d = new Dictionary<string, string>();
@@ -193,7 +176,6 @@
                }
            };
            btnTopMenuLeft.MouseUpEventHandler = (sender, e) => {
                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIcon.png";
                if (DB_ResidenceData.Instance.GatewayType == 1)
                {
                    Dictionary<string, string> d = new Dictionary<string, string>();
@@ -206,7 +188,6 @@
                }
            };
            btnTopMenuRight.MouseUpEventHandler = (sender, e) => {
                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIcon.png";
                if (DB_ResidenceData.Instance.GatewayType == 1)
                {
                    Dictionary<string, string> d = new Dictionary<string, string>();
@@ -219,7 +200,6 @@
                }
            };
            btnTopMenuDown.MouseUpEventHandler = (sender, e) => {
                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIcon.png";
                if (DB_ResidenceData.Instance.GatewayType == 1)
                {
                    Dictionary<string, string> d = new Dictionary<string, string>();
@@ -232,7 +212,6 @@
                }
            };
            btnOk.MouseUpEventHandler = (sender, e) => {
                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIcon.png";
                if (DB_ResidenceData.Instance.GatewayType == 1)
                {
                    Dictionary<string, string> d = new Dictionary<string, string>();
HDL_ON/UI/UI2/FuntionControlView/Energy/EchartsOption_Energy.cs
New file
@@ -0,0 +1,150 @@
using System;
using System.Collections.Generic;
namespace HDL_ON.UI.UI2.EchartsOption_Energy
{
    public class EchartsOption_Energy
    {
        ///// <summary>
        /////
        ///// </summary>
        public EchartTitle title  = new EchartTitle();
        /// <summary>
        ///
        /// </summary>
        public EchartTooltip tooltip;
        /// <summary>
        ///
        /// </summary>
        public EchartGrid grid = new EchartGrid();
        /// <summary>
        ///
        /// </summary>
        public Echart_xAxis xAxis = new Echart_xAxis();
        /// <summary>
        ///
        /// </summary>
        public Echart_yAxis yAxis = new Echart_yAxis();
        /// <summary>
        ///
        /// </summary>
        public List<EchartSeriesItem> series =new List<EchartSeriesItem>();
        public EchartsOption_Energy()
        {
            tooltip = new EchartTooltip
            {
                trigger = "axis",
            };
        }
    }
    public class EchartTitle
    {
        public string text;
    }
    /// <summary>
    /// 线条属性
    /// </summary>
    public class EchartLineStyle
    {
        /// <summary>
        /// 坐标轴刻度线宽
        /// type   |   string
        /// 可选:
        /// 'solid'
        /// 'dashed'
        /// 'dotted'
        /// </summary>
        public string type = "solid";
        /// <summary>
        ///
        /// </summary>
        public int width = 1;
        /// <summary>
        /// 刻度线的颜色
        /// </summary>
        public string color = "#333";
    }
    public class EchartTooltip
    {
        /// <summary>
        ///
        /// </summary>
        public string trigger ="axis";
    }
    public class EchartGrid
    {
        /// <summary>
        ///
        /// </summary>
        public string left = "3%";
        /// <summary>
        ///
        /// </summary>
        public string right = "4%";
        /// <summary>
        ///
        /// </summary>
        public string bottom = "3%";
        /// <summary>
        ///
        /// </summary>
        public bool containLabel = true;
    }
    /// <summary>
    /// 坐标轴属性
    /// </summary>
    public class Echart_xAxis
    {
        public string type = "category";
        public List<string> data = new List<string>();
        public int offset = 5;
        public bool boundaryGap = false;
    }
    /// <summary>
    /// 坐标轴属性
    /// </summary>
    public class Echart_yAxis
    {
        public string type = "value";
    }
    public class EchartSeriesItem
    {
        /// <summary>
        /// 客厅
        /// </summary>
        public string name = "";
        /// <summary>
        ///
        /// </summary>
        public string type = "line";
        /// <summary>
        ///
        /// </summary>
        public bool smooth = true;
        /// <summary>
        ///
        /// </summary>
        public List<int> data;
        /// <summary>
        /// none 去掉拐点
        /// </summary>
        public string symbol = "none";
        /// <summary>
        /// 线条样式
        /// </summary>
        public EchartLineStyle lineStyle;
    }
}
HDL_ON/UI/UI2/FuntionControlView/Energy/EnergyMainPage.cs
@@ -1,89 +1,25 @@
using System;
using System.Collections.Generic;
using HDL_ON.DAL.Server;
using HDL_ON.DriverLayer;
using HDL_ON.Entity;
using HDL_ON.UI.CSS;
using HDL_ON.UI.UI2.EchartsOption_Energy;
using Shared;
namespace HDL_ON.UI
{
    public class EnergyMainPage : FrameLayout
    {
        static EnergyMainPage bodyView;
        /// <summary>
        /// 顶部区域
        /// </summary>
        FrameLayout generalTableView;
        /// <summary>
        /// 实时功耗
        /// </summary>
        Button btnRealTimeData;
        /// <summary>
        /// 实时功耗单位
        /// </summary>
        Button btnTotalValueUint;
        /// <summary>
        /// 总功耗
        /// </summary>
        TextButton btnTotalValue;
        /// <summary>
        /// 总功耗-饼图
        /// </summary>
        MyEchartsViewOn myEchartsView_Pie;
        /// <summary>
        /// 历史数据区域
        /// </summary>
        FrameLayout diagramView;
        /// <summary>
        /// 曲线图数据string
        /// </summary>
        EchartsOption_BrokenLine brokenLine;
        /// <summary>
        /// 曲线图下拉按钮
        /// </summary>
        Button btnDrodDown;
        /// <summary>
        /// 插查询的能源列表
        /// </summary>
        List<Function> queryList = new List<Function>();
        /// <summary>
        /// 查询条件
        /// hour、week、month
        /// </summary>
        string curQueryType = "hour";
        /// <summary>
        /// 能源列表区域
        /// </summary>
        FrameLayout energyListView;
        /// <summary>
        /// 历史数据图表
        /// </summary>
        MyEchartsViewOn myEchartsView_Line;
        /// <summary>
        /// 曲线图是否展开
        /// </summary>
        bool isUnfoldOrStow = false;
        List<Function> energyList = new List<Function>();
        FrameLayout bodyView;
        List<uint> colorList = new List<uint>(){0xFF80AEFF, 0xFFFFD154, 0xFFFF9D54, 0xFFFE6A6A, 0xFFB183C3, 0xFFADE764,
                                        0xFFD7504B, 0xFFC6E579, 0xFFF4E001, 0xFFF0805A, 0xFF26C0C0};
        List<string> colorList2 = new List<string>() {
                                        "#80AEFF", "#FFD154", "#FF9D54", "#FE6A6A", "#B183C3", "#ADE764",
                                        "#D7504B", "#C6E579", "#F4E001", "#F0805A", "#26C0C0"};
        /// <summary>
        /// 主页
        /// </summary>
        public EnergyMainPage()
        {
            bodyView = this;
            energyList = FunctionList.List.GetEnergyList();
        }
        /// <summary>
@@ -102,18 +38,18 @@
            bodyView.AddChidren(contentView);
            #region 顶部view
            generalTableView = new FrameLayout()
            var generalTableView = new FrameLayout()
            {
                Gravity = Gravity.CenterHorizontal,
                Y = Application.GetRealWidth(16),
                Y = Application.GetRealHeight(16),
                Width = Application.GetRealWidth(343),
                Height = Application.GetRealWidth(148),//419//148
                Height = Application.GetRealWidth(148),
                Radius = (uint)Application.GetRealWidth(5),
                BackgroundColor = CSS_Color.MainBackgroundColor,
            };
            contentView.AddChidren(generalTableView);
            btnTotalValue = new TextButton()
            TextButton btnTotalValue = new TextButton()
            {
                X = Application.GetRealWidth(18),
                Y = Application.GetRealWidth(24),
@@ -127,7 +63,9 @@
            };
            generalTableView.AddChidren(btnTotalValue);
            btnTotalValueUint = new Button()
            btnTotalValue.Width = btnTotalValue.GetTextWidth();
            var btnTotalValueUint = new Button()
            {
                X = btnTotalValue.Right,
                Y = Application.GetRealWidth(24),
@@ -141,7 +79,7 @@
            };
            generalTableView.AddChidren(btnTotalValueUint);
            btnRealTimeData = new Button()
            var btnRealTimeData = new Button()
            {
                X = Application.GetRealWidth(18),
                Y = btnTotalValue.Bottom,
@@ -153,7 +91,7 @@
                TextID = StringId.RealTimePowerConsumption,
            };
            generalTableView.AddChidren(btnRealTimeData);
            btnRealTimeData.Text = Language.StringByID(StringId.RealTimePowerConsumption).Replace("{0}", "0");
            var echartsView = new FrameLayout()
            {
@@ -163,46 +101,42 @@
                //Y = Application.GetRealWidth(16),
            };
            generalTableView.AddChidren(echartsView);
            myEchartsView_Pie = new MyEchartsViewOn()
            MyEchartsViewOn myEchartsView = new MyEchartsViewOn()
            {
                Width = Application.GetRealWidth(118),
                Height = Application.GetRealWidth(118),
            };
            echartsView.AddChidren(myEchartsView_Pie);
            echartsView.AddChidren(myEchartsView);
            Dictionary<string, string> list = new Dictionary<string, string>();
            foreach(var ene in energyList)
            {
                double tt = 0;
                double.TryParse(ene.GetAttrState(FunctionAttributeKey.TotalElectricity), out tt);
                tt *= 100;//乘以100,小于1无法加载echart
                list.Add(ene.name, tt.ToString());
            }
            myEchartsView_Pie.ShowWithOption(new EchartsOption_Pie().InitDateJson(list));
            list.Add("电冰箱", "12");
            list.Add("电风扇", "2");
            list.Add("空调", "9");
            list.Add("洗衣机", "3");
            list.Add("电脑", "33");
            var echartsPie = new EchartsOption_Pie();
            var echartRootJson = echartsPie.InitDateJson(list);
            //var echartRootJsonString = Newtonsoft.Json.JsonConvert.SerializeObject(echartRootJson);
            myEchartsView.ShowWithOption(echartRootJson);
            btnDrodDown = new Button()
            var btnDrodDown = new Button()
            {
                Y = Application.GetRealWidth(118),
                Width = Application.GetRealWidth(343),
                Height = Application.GetRealWidth(30),
                UnSelectedImagePath = "FunctionIcon/Energy/EnergyDrodDownIcon.png",
                SelectedImagePath = "FunctionIcon/Energy/EnergyDrodUpIcon.png",
            };
            initDiagramView();
            generalTableView.AddChidren(btnDrodDown);
            btnDrodDown.MouseUpEventHandler = (sender, e) => {
                isUnfoldOrStow = btnDrodDown.IsSelected = !btnDrodDown.IsSelected;
                showDiagramView();
            };
            UpdataValue();
            #endregion
            energyListView = new FrameLayout()
            var energyList = FunctionList.List.GetEnergyList();
            var energyListView = new FrameLayout()
            {
                Y = generalTableView.Bottom + Application.GetRealWidth(8),
                Height = Application.GetRealWidth(116 * energyList.Count + 50),
                Height = Application.GetRealWidth(116 * energyList.Count),
            };
            contentView.AddChidren(energyListView);
            int index = 0;
@@ -210,58 +144,25 @@
            {
                EnergyRow(energy, energyListView, index);
                index++;
                new System.Threading.Thread(() =>
                {
                    Control.Ins.SendReadCommand(energy);
                })
                { IsBackground = true }.Start();
            }
        }
        FrameLayout diagramView;
        List<Function> queryList = new List<Function>();
        string curQueryType = "hour";
        /// <summary>
        ///
        /// </summary>
        void showDiagramView()
        void d1(FrameLayout contentView)
        {
            if (isUnfoldOrStow)//展开
            {
                generalTableView.Height = Application.GetRealWidth(419);
                btnDrodDown.Y = Application.GetRealWidth(389);
                btnDrodDown.IsSelected = true;
            }
            else
            {
                generalTableView.Height = Application.GetRealWidth(148);
                btnDrodDown.Y = Application.GetRealWidth(118);
                btnDrodDown.IsSelected = false;
            }
            energyListView.Y = generalTableView.Bottom + Application.GetRealWidth(8);
        }
        /// <summary>
        /// 加载曲线图
        /// </summary>
        /// <param name="contentView"></param>
        void initDiagramView()
        {
            brokenLine = new EchartsOption_BrokenLine();
            diagramView = new FrameLayout()
            {
                Y = Application.GetRealWidth(136),
                Gravity = Gravity.CenterHorizontal,
                Width = Application.GetRealWidth(343),
                Height = Application.GetRealWidth(281),
                Height = Application.GetRealWidth(420),
                BackgroundColor = CSS_Color.MainBackgroundColor,
                Radius = (uint)Application.GetRealWidth(12),
                BorderColor = 0x00000000,
                BorderWidth = 0,
            };
            generalTableView.AddChidren(diagramView);
            contentView.AddChidren(diagramView);
            #region 选择数据日期范围
            var showDataTypeView = new FrameLayout()
@@ -318,38 +219,26 @@
                btnShowHistroyData_Month.IsSelected = false;
                btnShowHistroyData_Week.IsSelected = false;
                curQueryType = "hour";
                brokenLine.YvalueText = "";
                foreach (var enery in queryList)
                {
                    LoadMothed_GetHistoryData(enery,false);
                }
                d2();
            };
            btnShowHistroyData_Week.MouseUpEventHandler = (sender, e) =>
            {
                showDataTypeView.BackgroundImagePath = "FunctionIcon/EnvironmentalScience/SensorHistoryBg2.png";
                btnShowHistroyData_Day.IsSelected = false;
                btnShowHistroyData_Month.IsSelected = false;
                btnShowHistroyData_Week.IsSelected = true;
                curQueryType = "week";
                brokenLine.YvalueText = "";
                foreach (var enery in queryList)
                {
                    LoadMothed_GetHistoryData(enery, false);
                }
            };
            btnShowHistroyData_Month.MouseUpEventHandler = (sender, e) =>
            {
                showDataTypeView.BackgroundImagePath = "FunctionIcon/EnvironmentalScience/SensorHistoryBg3.png";
                btnShowHistroyData_Day.IsSelected = false;
                btnShowHistroyData_Month.IsSelected = true;
                btnShowHistroyData_Week.IsSelected = false;
                curQueryType = "week";
                d2();
            };
            btnShowHistroyData_Week.MouseUpEventHandler = (sender, e) =>
            {
                showDataTypeView.BackgroundImagePath = "FunctionIcon/EnvironmentalScience/SensorHistoryBg2.png";
                btnShowHistroyData_Day.IsSelected = false;
                btnShowHistroyData_Month.IsSelected = false;
                btnShowHistroyData_Week.IsSelected = true;
                curQueryType = "month";
                brokenLine.YvalueText = "";
                foreach (var enery in queryList)
                {
                    LoadMothed_GetHistoryData(enery, false);
                }
                d2();
            };
            #endregion
@@ -357,107 +246,117 @@
            var historyDataView = new FrameLayout()
            {
                Gravity = Gravity.CenterHorizontal,
                Y = Application.GetRealWidth(52),
                Height = Application.GetRealWidth(190),
                Y = Application.GetRealHeight(52),
                Width = Application.GetRealWidth(343 - 32),
                Height = Application.GetRealHeight(270),
            };
            diagramView.AddChidren(historyDataView);
            myEchartsView_Line = new MyEchartsViewOn()
            {
                Y = Application.GetRealWidth(10),
                Height = Application.GetRealWidth(180),
            };
            historyDataView.AddChidren(myEchartsView_Line);
            var myEchartsView = new MyEchartsViewOn();
            historyDataView.AddChidren(myEchartsView);
        }
        /// <summary>
        /// 读取历史数据
        /// </summary>
        void LoadMothed_GetHistoryData(Function sr,bool isDel)
        void d2()
        {
            if(isDel)//删除数据现实
            int index = 0;
            var echartRootJson = new EchartsOption_Energy();
            var seriesList = new List<EchartSeriesItem>();
            foreach (var function in queryList)
            {
                brokenLine.YvalueText = "";
                foreach (var ene in queryList)
                {
                    brokenLine.YvalueText += ene.GetAttrState("ydata");
                }
                var opString = brokenLine.InitOption();
                Application.RunOnMainThread(() =>
                {
                    myEchartsView_Line.ShowWithOption(opString);
                });
                return;
                var seriesItem = d3(function, index, echartRootJson.xAxis.data);
                seriesList.Add(seriesItem);
            }
        }
        /// <summary>
        /// 查询列表
        /// </summary>
        /// <summary>
        /// 读取传感器历史数据
        /// </summary>
        EchartSeriesItem d3(Function function, int index, List<string> xAxisData)
        {
            EchartSeriesItem sItem = null;
            List<string> data = new List<string>();
            var loadPage = new Loading()
            {
                LodingBackgroundColor = 0x88888888,
            };
            diagramView.AddChidren(loadPage);
            new System.Threading.Thread(() =>
            try
            {
                try
                Application.RunOnMainThread(() =>
                {
                    Application.RunOnMainThread(() =>
                    {
                        loadPage.Start(Language.StringByID(StringId.PleaseWait));
                    });
                    loadPage.Start(Language.StringByID(StringId.PleaseWait));
                });
                var sensorType = function.spk.Split(".")[1];
                var revertObj = new HttpServerRequest().GetSensorHistory(curQueryType, function.deviceId, sensorType);
                    var sensorType = sr.spk.Split(".")[1];
                    var revertObj = new HttpServerRequest().GetSensorHistory(curQueryType, sr.deviceId, "total_electricity");
                    if (revertObj != null)
                if (revertObj != null)
                {
                    if (revertObj.Code == StateCode.SUCCESS)
                    {
                        if (revertObj.Code == StateCode.SUCCESS)
                        var revertData = Newtonsoft.Json.JsonConvert.DeserializeObject<List<EnvironmentalSensorHistor>>(revertObj.Data.ToString());
                         sItem = new EchartSeriesItem
                        {
                            var revertData = Newtonsoft.Json.JsonConvert.DeserializeObject<List<EnvironmentalSensorHistor>>(revertObj.Data.ToString());
                            data = new List<int>(),
                            lineStyle = new EchartLineStyle()
                            {
                                color = colorList2[index],
#if __IOS__
                                width = 5,
#elif __ANDROID__
                                        width = 2,
#endif
                            },
                        };
                            List<string> vs = new List<string>();
                            if (brokenLine.YvalueText == "")
                        try
                        {
                            foreach (var d in revertData)
                            {
                                foreach (var data in revertData)
                                if (xAxisData.Count == 0)
                                {
                                    vs.Add(data.fieldName);
                                    data.Add(d.fieldName);
                                }
                                brokenLine.InitXdataText(vs);
                                sItem.data.Add(Convert.ToInt32(d.fieldValue));
                            }
                            if (sr.GetAttribute("ydata") == null)
                            {
                                sr.attributes.Add(new FunctionAttributes() { key = "ydata" });
                            }
                            sr.SetAttrState("ydata", brokenLine.InitYdataText(sr.name, revertData, sr.GetAttrState("color")) + ",");
                            xAxisData.AddRange(data);
                        }
                        catch (Exception ex)
                        {
                            MainPage.Log($"revertData:{ex.Message}");
                        }
                    }
                    brokenLine.yTitle = Language.StringByID(StringId.EnergyConsumption) + "(kW)";
                    brokenLine.xTitle = Language.StringByID(StringId.timeMode);
                    if(curQueryType != "hour")
                    else
                    {
                        brokenLine.xTitle = Language.StringByID(StringId.Date);
                        Application.RunOnMainThread(() =>
                        {
                            IMessageCommon.Current.ShowErrorInfoAlter("", true, 2, Language.StringByID(StringId.GetSensorHistoryFailed), false);
                        });
                    }
                    var opString = brokenLine.InitOption();
                }
            }
            catch (Exception ex)
            {
                MainPage.Log($"sensor history error : {ex.Message}");
            }
            finally
            {
                Application.RunOnMainThread(() =>
                {
                    loadPage.Hide();
                });
            }
            return sItem;
                    Application.RunOnMainThread(() =>
                    {
                        myEchartsView_Line.ShowWithOption(opString);
                    });
                }
                catch (Exception ex)
                {
                    MainPage.Log($"sensor history error : {ex.Message}");
                }
                finally
                {
                    Application.RunOnMainThread(() =>
                    {
                        loadPage.Hide();
                    });
                }
            })
            { IsBackground = true }.Start();
            //var echartRootJsonString = Newtonsoft.Json.JsonConvert.SerializeObject(echartRootJson);
            //myEchartsView.ShowWithOptionJsonString(echartRootJsonString);
        }
        /// <summary>
        /// 
@@ -471,128 +370,16 @@
            };
            view.AddChidren(btnLine);
            //定义代表色
            energy.attributes.Add(new FunctionAttributes() { key = "color", state = colorList2[index] });
            var row = new EnergyRow(energy, colorList[index]);
            row.SetHistory_Action = (isAdd) =>
            var row = new FrameLayout()
            {
                if (isAdd)
                {
                    if(!isUnfoldOrStow)//如果曲线图没有加载出来,则自动加载出来
                    {
                        isUnfoldOrStow = true;
                        showDiagramView();
                    }
                    queryList.Add(row.function);
                    LoadMothed_GetHistoryData(row.function, false);
                }
                else
                {
                    queryList.Remove(row.function);
                    LoadMothed_GetHistoryData(row.function, true);
                    if (queryList.Count == 0)//如果查询列表为0,自动收起曲线图
                    {
                        isUnfoldOrStow = false;
                        showDiagramView();
                    }
                }
                Y = btnLine.Bottom,
                Gravity = Gravity.CenterHorizontal,
                Width = Application.GetRealWidth(343),
                Height = Application.GetRealWidth(100),
                Radius = (uint)Application.GetRealWidth(12),
                BackgroundColor = CSS_Color.MainBackgroundColor,
            };
            row.Y = btnLine.Bottom;
            view.AddChidren(row);
            listButton_value.Add(row.btnValue);
        }
        public List<Button> listButton_value = new List<Button>();
        /// <summary>
        /// 更新功能状态
        /// </summary>
        public static void UpdataStatus(Function updataTemp)
        {
            Application.RunOnMainThread(() =>
            {
                try
                {
                    if (bodyView == null)
                        return;
                    foreach (var btn in bodyView.listButton_value)
                    {
                        if (btn.Tag.ToString() == updataTemp.sid)
                        {
                            var newValue = updataTemp.GetAttrState(FunctionAttributeKey.Power);
                            //if (newValue != btn.Text)
                            {
                                btn.Text = newValue;
                                UpdataValue();
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    MainPage.Log($"{bodyView.GetType().Name } UpdataStates error : {ex.Message}");
                }
            });
        }
        /// <summary>
        /// 更新数据
        /// </summary>
        static void UpdataValue()
        {
            double totalValue = 0;
            double realtimeValue = 0;
            Dictionary<string, string> list = new Dictionary<string, string>();//饼图数据
            foreach (var ene in bodyView.energyList)
            {
                double power = 0;
                double.TryParse(ene.GetAttrState(FunctionAttributeKey.TotalElectricity), out power);
                totalValue += power;
                int realTimePower = 0;
                int.TryParse(ene.GetAttrState(FunctionAttributeKey.Power), out realTimePower);
                realtimeValue += realTimePower;
                #region 饼图数据
                double tt = 0;
                double.TryParse(ene.GetAttrState(FunctionAttributeKey.TotalElectricity), out tt);
                tt *= 100;//乘以100,小于1无法加载echart
                list.Add(ene.name, tt.ToString());
                #endregion
            }
            bodyView.btnTotalValue.Text = totalValue.ToString();
            realtimeValue /= 1000;
            bodyView.btnRealTimeData.Text = Language.StringByID(StringId.RealTimePowerConsumption).Replace("{0}", realtimeValue.ToString());
            ///动态获取文本宽度
            bodyView.btnTotalValue.Width = bodyView.btnTotalValue.GetTextWidth() + Application.GetRealWidth(5);
            bodyView.btnTotalValueUint.X = bodyView.btnTotalValue.Right;
            //刷新饼图
            bodyView.myEchartsView_Pie.ShowWithOption(new EchartsOption_Pie().InitDateJson(list));
        }
    }
    public class EnergyRow : FrameLayout
    {
        public Button btnValue;
        Button btnShowData;
        public Function function;
        public Action<bool> SetHistory_Action;
        public EnergyRow(Function energy, uint color)
        {
            function = energy;
            Gravity = Gravity.CenterHorizontal;
            Width = Application.GetRealWidth(343);
            Height = Application.GetRealWidth(100);
            Radius = (uint)Application.GetRealWidth(12);
            BackgroundColor = CSS_Color.MainBackgroundColor;
            Tag = energy.sid;
            var btnColorTip = new Button()
            {
@@ -600,13 +387,13 @@
                Y = Application.GetRealWidth(16),
                Width = Application.GetRealWidth(12),
                Height = Application.GetRealWidth(12),
                BackgroundColor = color
                BackgroundColor = colorList[index],
            };
            AddChidren(btnColorTip);
            row.AddChidren(btnColorTip);
            var btnName = new Button()
            {
                X = Application.GetRealWidth(28),
                X = Application.GetRealWidth(8 + 10 + 32),
                Y = Application.GetRealHeight(10),
                Width = Application.GetRealWidth(200),
                Height = Application.GetRealHeight(24),
@@ -615,11 +402,11 @@
                TextColor = CSS_Color.FirstLevelTitleColor,
                TextSize = CSS_FontSize.TextFontSize,
            };
            AddChidren(btnName);
            row.AddChidren(btnName);
            var btnFromFloor = new Button()
            {
                X = Application.GetRealWidth(28),
                X = Application.GetRealWidth(8 + 10 + 32),
                Y = Application.GetRealHeight(10 + 24),
                Width = Application.GetRealWidth(200),
                Height = Application.GetRealHeight(18),
@@ -628,9 +415,9 @@
                TextColor = CSS_Color.PromptingColor1,
                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
            };
            AddChidren(btnFromFloor);
            row.AddChidren(btnFromFloor);
            btnValue = new Button()
            var btnValue = new Button()
            {
                X = Application.GetRealWidth(28),
                Y = Application.GetRealWidth(57),
@@ -639,11 +426,9 @@
                TextAlignment = TextAlignment.CenterLeft,
                TextSize = CSS_FontSize.HeadlineFontSize,
                TextColor = CSS_Color.FirstLevelTitleColor,
                Text = energy.GetAttrState(FunctionAttributeKey.Power),
                Tag = energy.sid,
                IsBold = true,
                Text = "---"
            };
            AddChidren(btnValue);
            row.AddChidren(btnValue);
            var btnSetting = new Button()
@@ -654,9 +439,9 @@
                Height = Application.GetMinRealAverage(32),
                UnSelectedImagePath = "Public/FuncInfoSetIcon.png",
            };
            AddChidren(btnSetting);
            row.AddChidren(btnSetting);
            var btnSeltSensorValue = new Button()
            Button btnSeltSensorValue = new Button()
            {
                X = Application.GetRealWidth(16),
                Y = Application.GetRealWidth(47),
@@ -667,8 +452,9 @@
                IsBold = true,
                TextSize = CSS_FontSize.HeadlineFontSize,
            };
            AddChidren(btnSeltSensorValue);
            row.AddChidren(btnSeltSensorValue);
            Button btnShowData;
            btnShowData = new Button()
            {
                X = Application.GetRealWidth(291),
@@ -677,16 +463,15 @@
                Height = Application.GetMinRealAverage(32),
                UnSelectedImagePath = "FunctionIcon/EnvironmentalScience/DiagramIcon.png",
                SelectedImagePath = "FunctionIcon/EnvironmentalScience/DiagramIconOn.png",
                IsSelected = false,
                IsSelected = true,
            };
            AddChidren(btnShowData);
            row.AddChidren(btnShowData);
            btnSetting.MouseUpEventHandler = (sender, e) =>
            {
                Action backAction = () =>
                {
                    btnName.Text = energy.name;
                    btnFromFloor.Text = energy.GetRoomListName();
                };
                var infoView = new FunctionBaseInfoSetPage(energy, backAction);
                MainPage.BasePageView.AddChidren(infoView);
@@ -694,11 +479,6 @@
                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
            };
            btnShowData.MouseUpEventHandler = (sender, e) => {
                btnShowData.IsSelected = !btnShowData.IsSelected;
                SetHistory_Action(btnShowData.IsSelected);
            };
        }
    }
}
HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EchartsOption_BrokenLine.cs
@@ -4,140 +4,71 @@
namespace HDL_ON.UI
{
    /// <summary>
    /// 曲线图
    /// 饼图
    /// </summary>
    public class EchartsOption_BrokenLine
    {
        /// <summary>
        /// x轴数据
        /// </summary>
        public string XvalueText = "";
        /// <summary>
        /// Y轴数据
        /// </summary>
        public string YvalueText = "";
        /// <summary>
        /// x轴标题
        /// </summary>
        public string xTitle = "";
        /// <summary>
        /// y轴标题
        /// </summary>
        public string yTitle = "";
        /// <summary>
        /// 组装Option数据
        /// </summary>
        /// <returns></returns>
        public string InitOption()
        {
            //组装Value
            var newstring = optionString.Replace("{0}", XvalueText);
            newstring = newstring.Replace("{1}", YvalueText);
            newstring = newstring.Replace("{10}", xTitle);
            newstring = newstring.Replace("{20}", yTitle);
            newstring = newstring.Replace(",,",",");
            return newstring;
        }
        /// <summary>
        /// 组装x轴文本
        ///
        /// </summary>
        /// <param name="xData"></param>
        public void InitXdataText(List<string> xData)
        {
            XvalueText = "";
            foreach (var data in xData)
            {
                XvalueText += "'" + data + "',";
            }
        }
        /// <summary>
        /// 组装y轴文本
        /// </summary>
        /// <param name="yData"></param>
        public string InitYdataText(string name, List<EnvironmentalSensorHistor> yData, string color)
        public void InitXdata (List<string> xData)
        {
            //组装Value
            string valueText = string.Empty;
            var YvalueTextItem = @"{name:'{0}',
            foreach (var data in xData)
            {
                valueText += "'" + data + "',";
            }
            optionString = optionString.Replace("{0}", valueText);
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="yData"></param>
        public string GetYdata(string name, List<EnvironmentalSensorHistor> yData, string color)
        {
            //组装Value
            string valueText = string.Empty;
            var yAxisValue = @"{name:'{0}',
                            data:[{1}],
                            type:'line',
                            smooth:0.6,
                            symbol:'none',
                            color:'{2}'}
            ";
            YvalueTextItem = YvalueTextItem.Replace("{0}", name);
            yAxisValue = yAxisValue.Replace("{0}", name);
            foreach (var data in yData)
            {
                valueText += "'" + data.fieldValue + "',";
            }
            YvalueTextItem = YvalueTextItem.Replace("{1}", valueText);
            YvalueTextItem = YvalueTextItem.Replace("{2}", color);
            yAxisValue = yAxisValue.Replace("{1}", valueText);
            yAxisValue = yAxisValue.Replace("{2}", color);
            return yAxisValue;
        }
            if (YvalueText == "")
            {
                YvalueText = YvalueTextItem;
            }
            else
            {
                YvalueText += "," + YvalueTextItem;
            }
            return YvalueTextItem;
        public void InitYdataString(string yData)
        {
            //组装Value
            optionString = optionString.Replace("{1}", yData);
        }
#if __IOS__
        public string optionString = @"{
        public string optionString =  @"{
                 tooltip: {
                    trigger: 'axis'
                    },
                    grid: {
                         top: '10%',
                        left: '10%',
                        right: '10%',
                        bottom: '10%',
                    },
                    xAxis: {
                        name: '{10}',
                        type: 'category',
                        boundaryGap: false,
                        data: [{0}],
                        axisLabel : {
                            fontSize:30,
                        },
                    },
                    yAxis: {
                        name: '{20}',
                        type: 'value',
                        axisLabel : {
                            fontSize:30,
                        },
                    },
                    series: [
                        {1}
                    ]
            }";
#else
 public string optionString = @"{
                 tooltip: {
                    trigger: 'axis'
                    },
                    grid: {
                         top: '10%',
                        left: '10%',
                        right: '10%',
                        bottom: '15%',
                        left: '3%',
                        right: '4%',
                        bottom: '3%',
                    },
                    xAxis: {
                        type: 'category',
                        boundaryGap: false,
                        data: [{0}],
                        data: [{0}]
                    },
                    yAxis: {
                        type: 'value',
@@ -146,17 +77,18 @@
                        {1}
                    ]
            }";
#endif
        /// <summary>
        /// 颜色列表
        /// </summary>
        /// <returns></returns>
        public List<string> ColorList()
        public List<string> ColorList ()
        {
            var list = new List<string>();
            return list;
        }
    }
}
HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EnvironmentalPage.cs
@@ -153,7 +153,7 @@
                TextColor = CSS_Color.TextualColor,
                TextAlignment = TextAlignment.CenterLeft,
                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
                Text = $"{MainPage.cityInfo.highestTemperature}°C",
                Text = "--°C",
            };
            topWeatherView.AddChidren(btnTempUpperLimitText);
@@ -176,7 +176,7 @@
                TextColor = CSS_Color.TextualColor,
                TextAlignment = TextAlignment.CenterLeft,
                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
                Text = $"{MainPage.cityInfo.lowestTemperature}°C",
                Text = "--°C",
            };
            topWeatherView.AddChidren(btnTempLowerLimitText);
@@ -706,52 +706,46 @@
        {
            Application.RunOnMainThread(() =>
            {
                try
                if (bodyView != null)
                {
                    if (bodyView != null)
                    for (int i = 0; i < bodyView.sensorListView.ChildrenCount; i++)
                    {
                        for (int i = 0; i < bodyView.sensorListView.ChildrenCount; i++)
                        var sensorTag = updateTemp.sid;
                        var view = bodyView.sensorListView.GetChildren(i);
                        if (view.GetType() == typeof(FrameLayout))
                        {
                            var sensorTag = updateTemp.sid;
                            var view = bodyView.sensorListView.GetChildren(i);
                            if (view.GetType() == typeof(FrameLayout))
                            if (view.Tag.ToString() != sensorTag)
                            {
                                if (view.Tag.ToString() != sensorTag)
                                continue;
                            }
                            for (int j = 0; j < (view as FrameLayout).ChildrenCount; j++)
                            {
                                var btn = (view as FrameLayout).GetChildren(j);
                                if (btn.GetType() == typeof(Button))
                                {
                                    continue;
                                }
                                for (int j = 0; j < (view as FrameLayout).ChildrenCount; j++)
                                {
                                    var btn = (view as FrameLayout).GetChildren(j);
                                    if (btn.GetType() == typeof(Button))
                                    if (btn.Tag != null)
                                    {
                                        if (btn.Tag != null)
                                        var tag = btn.Tag.ToString();
                                        if (tag == "SensorValues")
                                        {
                                            var tag = btn.Tag.ToString();
                                            if (tag == "SensorValues")
                                            {
                                                (btn as Button).Text = updateTemp.GetAttrState(FunctionAttributeKey.Value);
                                            }
                                            else if (tag == "SensorLevel")
                                            {
                                                (btn as Button).TextID = bodyView.sensorTemp.GetLevelTextList(updateTemp.spk)[bodyView.sensorTemp.GetCurLevel(updateTemp) - 1];
                                                (btn as Button).TextColor = bodyView.sensorTemp.GetLevelColorList(updateTemp.spk)[bodyView.sensorTemp.GetCurLevel(updateTemp) - 1];
                                            }
                                            (btn as Button).Text = updateTemp.GetAttrState(FunctionAttributeKey.Value);
                                        }
                                        else if (tag == "SensorLevel")
                                        {
                                            (btn as Button).TextID = bodyView.sensorTemp.GetLevelTextList(updateTemp.spk)[bodyView.sensorTemp.GetCurLevel(updateTemp) - 1];
                                            (btn as Button).TextColor = bodyView.sensorTemp.GetLevelColorList(updateTemp.spk)[bodyView.sensorTemp.GetCurLevel(updateTemp) - 1];
                                        }
                                    }
                                    else if (btn.GetType() == typeof(ArcSeekBar))
                                    {
                                        (btn as ArcSeekBar).ProgressBarColor = bodyView.sensorTemp.GetLevelColorList(updateTemp.spk)[bodyView.sensorTemp.GetCurLevel(updateTemp) - 1];
                                }
                                else if (btn.GetType() == typeof(ArcSeekBar))
                                {
                                    (btn as ArcSeekBar).ProgressBarColor = bodyView.sensorTemp.GetLevelColorList(updateTemp.spk)[bodyView.sensorTemp.GetCurLevel(updateTemp) - 1];
                                        (btn as ArcSeekBar).Progress = (96 / bodyView.sensorTemp.GetLevelColorList(updateTemp.spk).Count) * bodyView.sensorTemp.GetCurLevel(updateTemp);
                                    }
                                    (btn as ArcSeekBar).Progress = (96 / bodyView.sensorTemp.GetLevelColorList(updateTemp.spk).Count) * bodyView.sensorTemp.GetCurLevel(updateTemp);
                                }
                            }
                        }
                    }
                }catch(Exception ex )
                {
                    MainPage.Log($"更新环境传感器界面异常:{ex.Message}");
                }
            });
        }
HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EnvironmentalSensorPage.cs
@@ -128,7 +128,7 @@
                Gravity = Gravity.CenterHorizontal,
                Y = Application.GetRealHeight(52),
                Width = Application.GetRealWidth(343 - 32),
                Height = Application.GetRealWidth(270),
                Height = Application.GetRealHeight(270),
            };
            diagramView.AddChidren(historyDataView);
@@ -360,7 +360,7 @@
                    tipTextView.AddChidren(new Button()
                    {
                        Width = Application.GetRealWidth(43),
                        TextID = StringId.SlightlyCold,
                        TextID = StringId.ExtremelyCold,
                        TextAlignment = TextAlignment.Center,
                        TextColor = CSS_Color.FirstLevelTitleColor,
                        TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
@@ -475,7 +475,7 @@
                    tipValuesView.AddChidren(new Button()
                    {
                        Width = Application.GetRealWidth(151),
                        Text = "40%",
                        Text = "70",
                        TextAlignment = TextAlignment.Center,
                        TextColor = CSS_Color.FirstLevelTitleColor,
                        TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
@@ -483,7 +483,7 @@
                    tipValuesView.AddChidren(new Button()
                    {
                        Width = Application.GetRealWidth(151),
                        Text = "70%",
                        Text = "40",
                        TextAlignment = TextAlignment.Center,
                        TextColor = CSS_Color.FirstLevelTitleColor,
                        TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
@@ -491,7 +491,7 @@
                    tipTextView.AddChidren(new Button()
                    {
                        Width = Application.GetRealWidth(101),
                        TextID = StringId.SensorReferenceHumidityTipLevel1,
                        TextID = StringId.SensorReferenceTVOCTipLevel1,
                        TextAlignment = TextAlignment.Center,
                        TextColor = CSS_Color.FirstLevelTitleColor,
                        TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
@@ -499,7 +499,7 @@
                    tipTextView.AddChidren(new Button()
                    {
                        Width = Application.GetRealWidth(101),
                        TextID = StringId.SensorReferenceHumidityTipLevel2,
                        TextID = StringId.SensorReferenceTVOCTipLevel2,
                        TextAlignment = TextAlignment.Center,
                        TextColor = CSS_Color.FirstLevelTitleColor,
                        TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
@@ -507,7 +507,7 @@
                    tipTextView.AddChidren(new Button()
                    {
                        Width = Application.GetRealWidth(101),
                        TextID = StringId.SensorReferenceHumidityTipLevel3,
                        TextID = StringId.SensorReferenceTVOCTipLevel3,
                        TextAlignment = TextAlignment.Center,
                        TextColor = CSS_Color.FirstLevelTitleColor,
                        TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
@@ -839,7 +839,7 @@
                        }
                        var sensorType = sr.spk.Split(".")[1];
                        var revertObj = new HttpServerRequest().GetSensorHistory(curQueryType, sr.deviceId,"value");
                        var revertObj = new HttpServerRequest().GetSensorHistory(curQueryType, sr.deviceId,sensorType);
                        if (revertObj != null)
                        {
                            if (revertObj.Code == StateCode.SUCCESS)
@@ -853,18 +853,19 @@
                                    {
                                        vs.Add(data.fieldName);
                                    }
                                    ebl.InitXdataText(vs);
                                    ebl.InitXdata(vs);
                                }
                                yDataString += ebl.InitYdataText(sr.name, revertData, tipColorStringList[i]);
                                yDataString += ebl.GetYdata(sr.name, revertData, tipColorStringList[i]);
                            }
                        }
                        i++;
                    }
                    ebl.InitYdataString(yDataString);
                    Application.RunOnMainThread(() =>
                    {
                        myEchartsView.ShowWithOption(ebl.InitOption());
                        myEchartsView.ShowWithOption(ebl.optionString);
                    });
                }
HDL_ON/UI/UI2/FuntionControlView/FoolHeating/FloorHeatingPage.cs
@@ -138,11 +138,6 @@
            //    controlView.AddChidren(btnCollection);
            //}
            var minValue = function.GetAttribute(FunctionAttributeKey.SetTemp).min;
            var maxValue = function.GetAttribute(FunctionAttributeKey.SetTemp).max;
            var progress = (int)Convert.ToDouble(function.GetAttrState(FunctionAttributeKey.SetTemp));
            arcBar = new DiyArcSeekBar()
            {
                Gravity = Gravity.CenterHorizontal,
@@ -152,10 +147,10 @@
                ProgressBarColor = CSS_Color.AuxiliaryColor1, // 0xFFFC9C04,
                OfflineProgressBarColor = CSS_Color.PromptingColor2,
                IsOffline = function.trait_on_off.curValue.ToString() == "off",
                MinValue = minValue,//function.GetAttribute(FunctionAttributeKey.SetTemp).min,
                MaxValue = maxValue,// function.GetAttribute(FunctionAttributeKey.SetTemp).max,
                MinValue = function.GetAttribute(FunctionAttributeKey.SetTemp).min,
                MaxValue = function.GetAttribute(FunctionAttributeKey.SetTemp).max,
                ArcColor = CSS_Color.BackgroundColor,
                Progress = progress,
                Progress = Convert.ToInt32(function.GetAttrState(FunctionAttributeKey.SetTemp)),
#if __IOS__
                Y = Application.GetRealHeight(120+25),
                Width = Application.GetRealWidth(260-40),
@@ -180,7 +175,7 @@
                TextColor = CSS_Color.FirstLevelTitleColor,
                TextSize = 56,
                IsBold = true,
                Text = progress.ToString(),
                Text = function.GetAttrState(FunctionAttributeKey.SetTemp),
                TextAlignment = TextAlignment.Center,
            };
            controlView.AddChidren(btnTemp);
HDL_ON/UI/UI2/FuntionControlView/FunctionBaseInfoSetPage.cs
@@ -1,8 +1,6 @@
using System;
using HDL_ON.DAL.Server;
using HDL_ON.Entity;
using HDL_ON.UI.CSS;
using Newtonsoft.Json.Linq;
using Shared;
namespace HDL_ON.UI
@@ -52,21 +50,14 @@
            bodyView.BackgroundColor = CSS_Color.BackgroundColor;
            new TopViewDiv(bodyView, Language.StringByID(StringId.Setting)).LoadTopView(actionRefresh);
            var contentView = new VerticalScrolViewLayout()
            {
                Y = Application.GetRealHeight(64),
                Height = Application.GetRealHeight(600),
                ScrollEnabled = false,
            };
            bodyView.AddChidren(contentView);
            #region name view
            var nameView = new FrameLayout()
            {
                Y = Application.GetRealHeight(64),
                Height = Application.GetRealHeight(50),
                BackgroundColor = CSS_Color.MainBackgroundColor,
            };
            contentView.AddChidren(nameView);
            bodyView.AddChidren(nameView);
            var btnNameText = new Button()
            {
@@ -115,10 +106,11 @@
            #region 位置管理
            var locationMagtView = new FrameLayout()
            {
                Y = nameView.Bottom,
                Height = Application.GetRealHeight(55),
                BackgroundColor = CSS_Color.MainBackgroundColor,
            };
            contentView.AddChidren(locationMagtView);
            bodyView.AddChidren(locationMagtView);
            var btnLocationMagtTitle = new Button()
            {
@@ -166,10 +158,11 @@
            #region 共享
            //var sharedView = new FrameLayout()
            //{
            //    Y = locationMagtView.Bottom,
            //    Height = Application.GetRealHeight(55),
            //    BackgroundColor = CSS_Color.MainBackgroundColor,
            //};
            //contentView.AddChidren(sharedView);
            //bodyView.AddChidren(sharedView);
            //var btnSharedText = new Button()
            //{
@@ -207,10 +200,11 @@
            #region 添加到桌面
            var addToDesktopView = new FrameLayout()
            {
                Y = locationMagtView.Bottom,
                Height = Application.GetRealHeight(55),
                BackgroundColor = CSS_Color.MainBackgroundColor,
            };
            contentView.AddChidren(addToDesktopView);
            bodyView.AddChidren(addToDesktopView);
            var btnAddToDesktopText = new Button()
            {
@@ -235,128 +229,6 @@
            #endregion
#endif
            if (function.spk == SPK.ElectricEnergy)
            {
                #region 能源数据
                var energyView1 = new FrameLayout()
                {
                    Height = Application.GetRealHeight(55),
                    BackgroundColor = CSS_Color.MainBackgroundColor,
                };
                contentView.AddChidren(energyView1);
                var btnEnergyText1 = new Button()
                {
                    X = Application.GetRealWidth(16),
                    Width = Application.GetRealWidth(160),
                    TextAlignment = TextAlignment.CenterLeft,
                    TextColor = CSS_Color.FirstLevelTitleColor,
                    TextSize = CSS_FontSize.SubheadingFontSize,
                    TextID = StringId.RealTimeEnergyConsumption,
                };
                energyView1.AddChidren(btnEnergyText1);
                double realTimePower = 0;
                double.TryParse(function.GetAttrState(FunctionAttributeKey.Power), out realTimePower);
                realTimePower /= 1000;
                var energyValue1 = new Button()
                {
                    Width = Application.GetRealWidth(355),
                    TextAlignment = TextAlignment.CenterRight,
                    TextSize = CSS_FontSize.TextFontSize,
                    TextColor = CSS_Color.PromptingColor1,
                    Text = realTimePower + "kW",
                };
                energyView1.AddChidren(energyValue1);
                energyView1.AddChidren(
                    new Button()
                    {
                        Gravity = Gravity.CenterHorizontal,
                        Y = Application.GetRealHeight(54),
                        BackgroundColor = CSS_Color.DividingLineColor,
                        Width = Application.GetRealWidth(343),
                        Height = Application.GetRealHeight(1)
                    });
                //-----------------
                var energyView2 = new FrameLayout()
                {
                    Height = Application.GetRealHeight(55),
                    BackgroundColor = CSS_Color.MainBackgroundColor,
                };
                contentView.AddChidren(energyView2);
                var btnEnergyText2 = new Button()
                {
                    X = Application.GetRealWidth(16),
                    Width = Application.GetRealWidth(160),
                    TextAlignment = TextAlignment.CenterLeft,
                    TextColor = CSS_Color.FirstLevelTitleColor,
                    TextSize = CSS_FontSize.SubheadingFontSize,
                    TextID = StringId.EnergyConsumptionOfThisMonth,
                };
                energyView2.AddChidren(btnEnergyText2);
                var btnEnergyValue2 = new Button()
                {
                    Width = Application.GetRealWidth(355),
                    TextAlignment = TextAlignment.CenterRight,
                    TextSize = CSS_FontSize.TextFontSize,
                    TextColor = CSS_Color.PromptingColor1,
                    Text = "--kW",
                };
                energyView2.AddChidren(btnEnergyValue2);
                energyView2.AddChidren(
                    new Button()
                    {
                        Gravity = Gravity.CenterHorizontal,
                        Y = Application.GetRealHeight(54),
                        BackgroundColor = CSS_Color.DividingLineColor,
                        Width = Application.GetRealWidth(343),
                        Height = Application.GetRealHeight(1)
                    });
                new System.Threading.Thread(() =>
                {
                    var pm = new HttpServerRequest();
                    var data = pm.GetLastMonthHistory(function.deviceId, FunctionAttributeKey.TotalElectricity);
                    if (data != null)
                    {
                        if (data.Code == StateCode.SUCCESS)
                        {
                            var dataPack = Newtonsoft.Json.JsonConvert.DeserializeObject<JObject>(data.Data.ToString());
                            if (dataPack != null)
                            {
                                try
                                {
                                    var dataValue = dataPack.GetValue("monthDiff").ToString();
                                    if (!string.IsNullOrEmpty(dataValue))
                                    {
                                        Application.RunOnMainThread(() =>
                                        {
                                            btnEnergyValue2.Text = dataValue + "kW‧h";
                                        });
                                    }
                                }
                                catch
                                {
                                }
                            }
                        }
                    }
                })
                { IsBackground = true }.Start();
                #endregion
            }
            LoadEventList();
        }
HDL_ON/UI/UI2/FuntionControlView/Video/VideoMainView.cs
@@ -35,8 +35,8 @@
            pageView.AddChidren(view1);
            var view2 = new FrameLayout();
            pageView.AddChidren(view2);
            ViewFrameLayout1(view1, listVideo, video);
            ViewFrameLayout2(view2, listCall, video);
            View1(view1, listVideo, video);
            View2(view2, listCall, video);
            Button btn11 = new Button
            {
                X = Application.GetRealWidth(170),
@@ -113,10 +113,8 @@
        /// <param name="view1">父控件</param>
        /// <param name="list">门口机列表</param>
        /// <param name="videoClouds">当前的可视对讲</param>
        void ViewFrameLayout1(FrameLayout view1, List<FlVideo> list, VideoClouds videoClouds)
        void View1(FrameLayout view1, List<FlVideo> list, VideoClouds videoClouds)
        {
            #region 布局界面
            var bjFl = new FrameLayout
            {
@@ -222,16 +220,17 @@
                #region
                var fLayout = new FrameLayout
                {
                    Width = Application.GetRealWidth(96),
                    Width = Application.GetRealWidth(50),
                    Height = Application.GetRealWidth(48),
                    X = Application.GetRealWidth(20 + (26 + 28 + 42) * j),
                    X = Application.GetRealWidth(31 + (58 + 50) * j),
                    Y = Application.GetRealHeight(20 + (48 + 24) * line),
                };
                fL.AddChidren(fLayout);
                var iconBtn = new Button
                {
                    Gravity=Gravity.CenterHorizontal,
                    X = Application.GetRealWidth(11),
                    Width = Application.GetRealWidth(28),
                    Height = Application.GetRealWidth(28),
                    UnSelectedImagePath = "VideoIcon/weiqiangji.png",
@@ -241,8 +240,7 @@
                var deviceNameBtn = new Button
                {
                    Y = iconBtn.Bottom + Application.GetRealHeight(6),
                    X = Application.GetRealWidth(6),
                    Width = Application.GetRealWidth(96-12),
                    Width = Application.GetRealWidth(50),
                    Height = Application.GetRealHeight(14),
                    TextSize = TextSize.Text10,
                    TextColor = CSS.CSS_Color.TextualColor,
@@ -308,7 +306,7 @@
        /// <param name="view2">父控件</param>
        /// <param name="listCall">通话记录列表</param>
        /// <param name="video">当前的可视对讲</param>
        void ViewFrameLayout2(FrameLayout view2, List<CallView> listCall, VideoClouds video)
        void View2(FrameLayout view2, List<CallView> listCall, VideoClouds video)
        {
            var bjFl = new FrameLayout
HDL_ON/UI/UI2/FuntionControlView/Video/VideoMethod.cs
@@ -189,7 +189,7 @@
                        }
                        else
                        {
                            PirMethod method = new PirMethod();
                            Method method = new Method();
                            //自定义错误提示文本
                            string eorroText = "";
                            if (str == "获取可视对讲")
HDL_ON/UI/UI2/FuntionControlView/Video/View/ShowDialog.cs
@@ -130,7 +130,7 @@
                Height = Application.GetRealHeight(32),
                Width = Application.GetRealWidth(82+5),
                TextColor = MusicColor.SelectedColor,
                TextSize =18,//24
                TextSize =20,//24
                TextAlignment = TextAlignment.Center,
                IsBold = true,
                Text = str1,