Merge branch 'wxr4' into temp-wxr
30个文件已添加
35个文件已修改
5 文件已重命名
| | |
| | | <Properties StartupConfiguration="{09712674-2A38-407B-B1E2-560B2C352F9A}|Default"> |
| | | <Properties StartupConfiguration="{D998E133-F0DD-4760-BE3C-461632F54DA4}|Default"> |
| | | <MonoDevelop.Ide.ItemProperties.HDL-ON__iOS automaticSigning="False" PreferredExecutionTarget="MonoDevelop.IPhone.IPhoneDeviceTarget.6242be7109c740c6cb8999a8904b6e0ea8d45192" /> |
| | | <MonoDevelop.Ide.Workbench ActiveDocument="HDL_ON/DAL/Server/NewAPI.cs"> |
| | | <MonoDevelop.Ide.Workbench ActiveDocument="HDL_ON/DAL/DriverLayer/Control.cs"> |
| | | <Files> |
| | | <File FileName="HDL_ON/UI/UI2/2-Classification/RoomPage.cs" Line="72" Column="11" /> |
| | | <File FileName="HDL_ON/UI/UI2/2-Classification/FunctionControlZone.cs" Line="9" Column="45" /> |
| | | <File FileName="HDL_ON/UI/UI2/FuntionControlView/Energy/EnergyMainPage.cs" Line="692" Column="21" /> |
| | | <File FileName="HDL_ON/DAL/Mqtt/MqttClient.cs" Line="693" Column="36" /> |
| | | <File FileName="HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EnvironmentalSensorPage.cs" Line="363" Column="55" /> |
| | | <File FileName="HDL_ON/UI/UI2/4-PersonalCenter/PersonalCenterPage.cs" Line="531" Column="80" /> |
| | | <File FileName="HDL_ON/UI/UI2/4-PersonalCenter/PersonalCenterPageBLL.cs" Line="265" Column="45" /> |
| | | <File FileName="HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/BrandListPage.cs" Line="157" Column="50" /> |
| | | <File FileName="HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/DeviceListPage.cs" Line="127" Column="74" /> |
| | | <File FileName="HDL_ON/UI/UI1-Login/LoginPage.cs" Line="203" Column="52" /> |
| | | <File FileName="HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EnvironmentalSciencePage.cs" Line="1" Column="1" /> |
| | | <File FileName="HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EnvironmentalPage.cs" Line="179" Column="46" /> |
| | | <File FileName="HDL_ON/Entity/ResponseEntity/CityInfo.cs" Line="34" Column="16" /> |
| | | <File FileName="HDL_ON/DAL/Server/HttpServerRequest.cs" Line="1841" Column="90" /> |
| | | <File FileName="HDL_ON/DAL/Server/NewAPI.cs" Line="324" Column="23" /> |
| | | <File FileName="HDL_ON/Common/R.cs" Line="9" Column="19" /> |
| | | <File FileName="HDL-ON_iOS/Resources/Language.ini" /> |
| | | <File FileName="HDL-ON_Android/Assets/Language.ini" /> |
| | | <File FileName="HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/AddDevciePage.cs" /> |
| | | <File FileName="HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/DeviceListPage.cs" /> |
| | | <File FileName="HDL_ON/UI/MainPage.cs" /> |
| | | <File FileName="HDL-ON_iOS/Info.plist" /> |
| | | <File FileName="HDL_ON/DAL/Server/HttpUtil.cs" /> |
| | | <File FileName="HDL_ON/UI/UI0-Stan/Form/Base/EditorCommonForm.cs" /> |
| | | <File FileName="HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/SenesorMegahealth/SenesorMegahealthManagerPage.cs" /> |
| | | <File FileName="HDL_ON/UI/UI0-Public/PublicAssmeblyBLL.cs" /> |
| | | <File FileName="HDL_ON/UI/UI2/2-Classification/FunctionControlZoneBLL.cs" /> |
| | | <File FileName="HDL_ON/UI/UI2/2-Classification/FunctionControlZone.cs" /> |
| | | <File FileName="HDL_ON/UI/UI2/FuntionControlView/ArmSensor/ArmSensorHistroyPaging.cs" /> |
| | | <File FileName="HDL_ON/UI/UI0-Stan/Form/DeviceFunctionCardCommonForm.cs" /> |
| | | <File FileName="HDL_ON/UI/UI2/FuntionControlView/ArmSensor/SenesorMegahealthPage.cs" /> |
| | | <File FileName="HDL_ON/DAL/DriverLayer/Control.cs" Line="675" Column="34" /> |
| | | <File FileName="HDL_ON/DAL/Server/NewApiRes.cs" /> |
| | | <File FileName="HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/PirSend.cs" /> |
| | | <File FileName="HDL_ON/UI/UI2/1-HomePage/HomePageBLL.cs" /> |
| | | <File FileName="HDL_ON/DAL/Server/HttpServerRequest.cs" /> |
| | | <File FileName="HDL_ON/DAL/Server/NewAPI.cs" /> |
| | | <File FileName="HDL_ON/DAL/Mqtt/MqttClient.cs" Line="424" Column="69" /> |
| | | </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="DAL" expanded="True"> |
| | | <Node name="DriverLayer" expanded="True"> |
| | | <Node name="Control.cs" selected="True" /> |
| | | </Node> |
| | | <Node name="Mqtt" expanded="True" /> |
| | | <Node name="Server" expanded="True" /> |
| | | </Node> |
| | | <Node name="Entity" expanded="True"> |
| | | <Node name="Function" expanded="True" /> |
| | | </Node> |
| | | <Node name="UI" expanded="True" /> |
| | | </Node> |
| | | </Node> |
| | | </State> |
| | | </Pad> |
| | |
| | | <String>Shared.Droid.TouchID/Shared.Droid.TouchID.csproj</String> |
| | | <String>Shared.IOS/Shared.IOS.csproj</String> |
| | | </DisabledProjects> |
| | | <MonoDevelop.Ide.Workspace ActiveConfiguration="Release|iPhone" /> |
| | | <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/DAL/Server/HttpServerRequest.cs" relfile="HDL_ON/DAL/Server/HttpServerRequest.cs" line="1841" column="1" /> |
| | | <Breakpoint file="/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/BindingResidence/BindingResidencePage.cs" relfile="HDL_ON/UI/BindingResidence/BindingResidencePage.cs" line="121" column="1" /> |
| | | <Breakpoint file="/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/DAL/Server/HttpServerRequest.cs" relfile="HDL_ON/DAL/Server/HttpServerRequest.cs" line="1857" column="1" /> |
| | | <Breakpoint file="/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/SenesorMegahealth/AddSenesorMegahealthDirection1Page.cs" relfile="HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/SenesorMegahealth/AddSenesorMegahealthDirection1Page.cs" line="119" column="1" /> |
| | | <Breakpoint file="/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/DAL/Mqtt/MqttClient.cs" relfile="HDL_ON/DAL/Mqtt/MqttClient.cs" line="678" column="1" /> |
| | | <Breakpoint file="/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/DAL/DriverLayer/Control.cs" relfile="HDL_ON/DAL/DriverLayer/Control.cs" line="673" column="1" /> |
| | | </BreakpointStore> |
| | | </MonoDevelop.Ide.DebuggingService.Breakpoints> |
| | | <MultiItemStartupConfigurations /> |
| | |
| | | 187=Fan |
| | | 188=Socket |
| | | 189=Level |
| | | 190=Channel |
| | | 191=Volume |
| | | 190=Chl |
| | | 191=Vol |
| | | 192=TV |
| | | 193=The room has existed, fail to change. |
| | | 194=Environment |
| | |
| | | 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 |
| | |
| | | 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 |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | 5000=Music |
| | | 5001=Group |
| | | 5002=Setting |
| | |
| | | 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 |
| | |
| | | 459=实时能耗 |
| | | 460=本月能耗 |
| | | 461=室外/室内 |
| | | 462=您当前还未添加任何设备 |
| | | 463=请输入设备机上的sn码 |
| | | 464=可以开始使用兆观毫米波了 |
| | | 465=删除设备 |
| | | 466=机顶盒 |
| | | 467=投影仪 |
| | | 468=有人跌倒 |
| | | 469=有人进入 |
| | | 470=防护中 |
| | | 471=毫米波传感器 |
| | | |
| | | |
| | | 1000=室内湿度 |
| | | 1001=童锁 |
| | |
| | | <DefineConstants>DEBUG;TRACE;__Android__</DefineConstants> |
| | | <ErrorReport>prompt</ErrorReport> |
| | | <WarningLevel>4</WarningLevel> |
| | | <EmbedAssembliesIntoApk>False</EmbedAssembliesIntoApk> |
| | | <EmbedAssembliesIntoApk>true</EmbedAssembliesIntoApk> |
| | | <MandroidI18n>cjk</MandroidI18n> |
| | | <AndroidDexTool>d8</AndroidDexTool> |
| | | <AndroidEnableSGenConcurrent>false</AndroidEnableSGenConcurrent> |
| | |
| | | <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" /> |
| | |
| | | <?xml version="1.0" encoding="utf-8"?> |
| | | <manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="202105252" android:versionName="1.2.202105252" package="com.hdl.onpro"> |
| | | <manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="202105255" android:versionName="1.2.202105255" package="com.hdl.onpro"> |
| | | <uses-sdk android:minSdkVersion="26" android:targetSdkVersion="29" /> |
| | | <!-- 可视对讲权限--> |
| | | <uses-permission android:name="android.permission.CAMERA" /> |
| | |
| | | <MtouchExtraArgs>-gcc_flags="-dead_strip -ObjC"</MtouchExtraArgs> |
| | | <MtouchEnableSGenConc>false</MtouchEnableSGenConc> |
| | | <CodesignEntitlements>Entitlements.plist</CodesignEntitlements> |
| | | <CodesignProvision>On+Dev-20210519-1</CodesignProvision> |
| | | <CodesignProvision>On+Dev-20210604-1</CodesignProvision> |
| | | </PropertyGroup> |
| | | <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|iPhone' "> |
| | | <DebugType>none</DebugType> |
| | |
| | | <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" /> |
| | | </ItemGroup> |
| | | <ItemGroup> |
| | | <ITunesArtwork Include="iTunesArtwork" /> |
| | |
| | | <key>UIStatusBarStyle</key> |
| | | <string>UIStatusBarStyleLightContent</string> |
| | | <key>CFBundleShortVersionString</key> |
| | | <string>1.2.202105252</string> |
| | | <string>1.2.202105255</string> |
| | | <key>CFBundleVersion</key> |
| | | <string>1.2.05252</string> |
| | | <string>1.2.05255</string> |
| | | <key>NSLocationWhenInUseUsageDescription</key> |
| | | <string>Use geographic location to provide services such as weather</string> |
| | | <key>NSAppleMusicUsageDescription</key> |
| | |
| | | 187=Fan |
| | | 188=Socket |
| | | 189=Level |
| | | 190=Channel |
| | | 191=Volume |
| | | 190=Chl |
| | | 191=Vol |
| | | 192=TV |
| | | 193=The room has existed, fail to change. |
| | | 194=Environment |
| | |
| | | 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 |
| | |
| | | 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 |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | 5000=Music |
| | | 5001=Group |
| | | 5002=Setting |
| | |
| | | 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 |
| | |
| | | 459=实时能耗 |
| | | 460=本月能耗 |
| | | 461=室外/室内 |
| | | 462=您当前还未添加任何设备 |
| | | 463=请输入设备机上的sn码 |
| | | 464=可以开始使用兆观毫米波了 |
| | | 465=删除设备 |
| | | 466=机顶盒 |
| | | 467=投影仪 |
| | | 468=有人跌倒 |
| | | 469=有人进入 |
| | | 470=防护中 |
| | | 471=毫米波传感器 |
| | | |
| | | |
| | | 1000=室内湿度 |
| | | 1001=童锁 |
| | |
| | | { |
| | | 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> |
| | |
| | | /// 发送读取命令 |
| | | /// 自动判断是否为A协议设备 |
| | | /// </summary> |
| | | public void SendReadCommand(Function function) |
| | | public void SendReadCommand(Function function ,bool forceRemote = false) |
| | | { |
| | | function.refreshTime = DateTime.Now; |
| | | if (Ins.GatewayOnline_Local) |
| | | if (forceRemote) |
| | | { |
| | | |
| | | if (DB_ResidenceData.Instance.GatewayType == 0) |
| | | var pm = new DAL.Server.HttpServerRequest(); |
| | | var pack = pm.RefreshDeviceStatus(new List<string>() { function.deviceId }); |
| | | } |
| | | else |
| | | { |
| | | if (Ins.GatewayOnline_Local) |
| | | { |
| | | try |
| | | |
| | | if (DB_ResidenceData.Instance.GatewayType == 0) |
| | | { |
| | | new Control_Udp().ReadBusData(function); |
| | | try |
| | | { |
| | | new Control_Udp().ReadBusData(function); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | MainPage.Log($"发送数据异常: {ex.Message}"); |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | else |
| | | { |
| | | MainPage.Log($"发送数据异常: {ex.Message}"); |
| | | 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 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); |
| | | var pm = new DAL.Server.HttpServerRequest(); |
| | | var pack = pm.RefreshDeviceStatus(new List<string>() { function.deviceId }); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | var pm = new DAL.Server.HttpServerRequest(); |
| | | var pack = pm.RefreshDeviceStatus(new List<string>() { function.deviceId }); |
| | | } |
| | | } |
| | | |
| | |
| | | /// <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) |
| | | { |
| | |
| | | { |
| | | 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) |
| | | { |
| | |
| | | case SPK.SensorWater: |
| | | case SPK.ClothesHanger: |
| | | case SPK.AcIr: |
| | | case SPK.SenesorMegahealth: |
| | | //设备状态推送 |
| | | //状态更新 |
| | | Stan.HdlDeviceStatuPushLogic.Current.UpdateDeviceStatu(updateTemp.sid, updateTemp.status); |
| | | break; |
| | | } |
| | |
| | | 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) |
| | |
| | | d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.id); |
| | | d.Add("productPlatform", productPlatform); |
| | | d.Add("productBrand", productBrand); |
| | | d.Add("networkConfig", true); |
| | | if (productBrand != "MegaHealth") |
| | | { |
| | | d.Add("networkConfig", true); |
| | | } |
| | | |
| | | var requestJson = HttpUtil.GetSignRequestJson(d); |
| | | return HttpUtil.RequestHttpsPostFroHome(NewAPI.Api_Post_GetDevcieList, requestJson); |
| | |
| | | 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) |
| | | { |
| | | Dictionary<string, object> d = new Dictionary<string, object>(); |
| | | d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.id); |
| | | d.Add("spk", spk); |
| | | d.Add("extDevId", extDevId); |
| | | |
| | | var requestJson = HttpUtil.GetSignRequestJson(d); |
| | | return HttpUtil.RequestHttpsPostFroHome(NewAPI.Api_Post_IndependentRegister3TyDevcie, requestJson); |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | /// <summary> |
| | | /// 获取设备详情 |
| | |
| | | /// </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"; |
| | |
| | | /// </summary> |
| | | public const string Status = "status"; |
| | | /// <summary> |
| | | /// 毫米波传感器,动作状态 |
| | | /// </summary> |
| | | public const string ActionStatus = "action_state"; |
| | | /// <summary> |
| | | /// 电量状态 |
| | | /// </summary> |
| | | public const string BatteryState = "battery_state"; |
| | |
| | | |
| | | public static class SPK |
| | | { |
| | | |
| | | |
| | | |
| | | #region 灯光 |
| | | /// <summary> |
| | |
| | | /// </summary> |
| | | public const string TvIr = "ir.tv"; |
| | | /// <summary> |
| | | /// 红外、小米电视 |
| | | /// </summary> |
| | | public const string TvXmIr = "ir.tvxm"; |
| | | /// <summary> |
| | | /// 家电、风扇 |
| | | /// </summary> |
| | | public const string ElectricFan = "electrical.fan"; |
| | |
| | | spkList.Add(ElectricSocket); |
| | | spkList.Add(ElectricTV); |
| | | spkList.Add(TvIr); |
| | | spkList.Add(TvXmIr); |
| | | spkList.Add(ElectricFan); |
| | | spkList.Add(ClothesHanger); |
| | | spkList.Add(IrLearn); |
| | |
| | | } |
| | | #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> |
| | |
| | | |
| | | 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> |
| | |
| | | All = 0, |
| | | Hdl = 1, |
| | | Tuya = 2, |
| | | /// <summary> |
| | | /// 兆观 |
| | | /// </summary> |
| | | Megahealth = 3, |
| | | |
| | | |
| | | All3tyBrand = 999, |
| | |
| | | { |
| | | return Language.StringByID(StringId.NoDelay); |
| | | } |
| | | string text = (delayInt / 60)+Language.StringByID(StringId.m)+(delayInt % 60)+Language.StringByID(StringId.s); |
| | | 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); |
| | | } |
| | | return text; |
| | | switch (delay) |
| | | { |
| | |
| | | /// </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> |
| | |
| | | return Functions; |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | /// <summary> |
| | | /// 清空设备功能列表 |
| | | /// </summary> |
| | |
| | | <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" />
|
| | |
| | | <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\" />
|
| | |
| | | <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> |
| | |
| | | { |
| | | Dialog dialog; |
| | | FrameLayout bodyView; |
| | | |
| | | /// <summary> |
| | | /// 回掉函数 |
| | | /// </summary> |
| | | public Action rebackAction = null; |
| | | |
| | | public OperationResultDisPalyPage() |
| | | { |
| | | dialog = this; |
| | |
| | | /// <param name="title">页面标题</param> |
| | | /// <param name="tipTitle">提示标题</param> |
| | | /// <param name="tipMsg">提示信息</param> |
| | | public void LoadPage(bool result,string title,string tipTitle,string tipMsg) |
| | | /// <param name="confirmText">按钮文本</param> |
| | | public void LoadPage(bool result,string title,string tipTitle,string tipMsg,string confirmText = "") |
| | | { |
| | | bodyView.BackgroundColor = CSS_Color.BackgroundColor; |
| | | dialog.AddChidren(bodyView); |
| | |
| | | TextSize = CSS_FontSize.SubheadingFontSize, |
| | | }; |
| | | bodyView.AddChidren(btnConfirm); |
| | | if(confirmText != "") |
| | | { |
| | | btnConfirm.Text = confirmText; |
| | | } |
| | | |
| | | btnConfirm.MouseUpEventHandler = (sender, e) => { |
| | | this.Close(); |
| | | rebackAction?.Invoke(); |
| | | }; |
| | | |
| | | } |
| | |
| | | break; |
| | | case SPK.ElectricTV: |
| | | case SPK.TvIr: |
| | | case SPK.TvXmIr: |
| | | var tvView = new TVPage(function); |
| | | MainPage.BasePageView.AddChidren(tvView); |
| | | tvView.LoadPage(btnCollectionIcon, btnName, btnFromFloor); |
| | |
| | | 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(); |
| | | clothesHangerpage.AddForm(function, btnCollectionIcon, btnName, btnFromFloor); |
| | |
| | | /// <summary> |
| | | /// |
| | | /// </summary> |
| | | public EmptyTipView(string tipMsg ="") |
| | | public EmptyTipView(string tipMsg ="",int btnTipNotY=0) |
| | | { |
| | | if(tipMsg == "") |
| | | { |
| | | tipMsg = Language.StringByID(StringId.ContentIsEmpty); |
| | | } |
| | | int tipHeight = Application.GetRealWidth(180); |
| | | int tipHeight = Application.GetRealWidth(180 + btnTipNotY); |
| | | |
| | | this.Height = tipHeight + Application.GetRealHeight(17); |
| | | this.Height = tipHeight + Application.GetRealHeight(17 ); |
| | | |
| | | BtnTipNot = new Button() |
| | | { |
| | | Gravity = Gravity.CenterHorizontal, |
| | | Width = tipHeight, |
| | | Height = tipHeight, |
| | | Width = Application.GetRealWidth(180), |
| | | Height = Application.GetRealWidth(180), |
| | | 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, |
| | |
| | | btnRoomName.Text = device.GetRoomListName();
|
| | | btnRoomName.Width = btnRoomName.GetRealWidthByText();
|
| | | FrameWhiteCentet1.AddChidren(btnRoomName);
|
| | | //成员没有收藏功能
|
| | | //if (DB_ResidenceData.Instance.CurrentRegion.isOtherShare == false && ShowColltionButton)
|
| | | if (ShowColltionButton)
|
| | | {
|
| | | var btnCollection = new IconViewControl(40);
|
| | | btnCollection.X = Application.GetRealWidth(273);
|
| | |
| | | LoadEvent_ControlCurtain(function, btnCurtainClose, btnCurtainOpen); |
| | | } |
| | | |
| | | else if (function.spk == SPK.ElectricTV || function.spk == SPK.TvIr |
| | | ||function.spk == SPK.StbIr || function.spk == SPK.PjtIr) |
| | | else if (function.spk == SPK.ElectricTV || function.spk == SPK.TvIr || function.spk == SPK.TvXmIr |
| | | || function.spk == SPK.StbIr || function.spk == SPK.PjtIr) |
| | | { |
| | | |
| | | //btnIcon.UnSelectedImagePath = $"FunctionIcon/Icon/HomeIcon/{function.IconName}_blue.png"; |
| | | //btnIcon.SelectedImagePath = $"FunctionIcon/Icon/HomeIcon/{function.IconName}_white.png"; |
| | | |
| | |
| | | /// </summary> |
| | | public static void LoadEvent_RefreshEnvirIndoorHumi() |
| | | { |
| | | if (bodyView != null) |
| | | Application.RunOnMainThread(() => |
| | | { |
| | | var humiSensorList = FunctionList.List.GetEnvirSensorsList().FindAll((obj) => obj.spk == SPK.SensorHumidity); |
| | | double humiTotalValues = 0; |
| | | foreach (var temp in humiSensorList) |
| | | if (bodyView != null) |
| | | { |
| | | double humiValue = 0; |
| | | double.TryParse(temp.GetAttrState(FunctionAttributeKey.Value), out humiValue); |
| | | humiTotalValues += humiValue; |
| | | 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(); |
| | | } |
| | | if (humiTotalValues > 0) |
| | | { |
| | | bodyView.btnIndoorHumiValues.Text = "/" + humiTotalValues + "%"; |
| | | } |
| | | bodyView.btnIndoorHumiValues.Width = bodyView.btnIndoorHumiValues.GetTextWidth(); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 更新室内传感器数据-晚点 |
| | | /// </summary> |
| | | public static void LoadEvent_RefreshEnvirIndoorTemp() |
| | | { |
| | | if (bodyView != null) |
| | | { |
| | | Application.RunOnMainThread(() => |
| | | { |
| | | var tempSensorList = FunctionList.List.GetEnvirSensorsList().FindAll((obj) => obj.spk == SPK.SensorTemperature); |
| | | double tempTotalValues = 0; |
| | | foreach (var temp in tempSensorList) |
| | | if (bodyView != null) |
| | | { |
| | | double tempValue = 0; |
| | | double.TryParse(temp.GetAttrState(FunctionAttributeKey.Value), out tempValue); |
| | | tempTotalValues += tempValue; |
| | | 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(); |
| | | } |
| | | if (tempTotalValues > 0) |
| | | { |
| | | bodyView.btnIndoorTempValues.Text = "/" + tempTotalValues + "°"; |
| | | } |
| | | bodyView.btnIndoorTempValues.Width = bodyView.btnIndoorTempValues.GetTextWidth(); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | { |
| | | X = Application.GetRealWidth(16), |
| | | Y = Application.GetRealHeight(14), |
| | | Width = Application.GetRealWidth(120), |
| | | Width = Application.GetRealWidth(140), |
| | | Height = Application.GetRealHeight(24), |
| | | TextColor = CSS_Color.FirstLevelTitleColor, |
| | | TextSize = CSS_FontSize.TextFontSize, |
| | | TextAlignment = TextAlignment.CenterLeft, |
| | | IsMoreLines = true, |
| | | }; |
| | | functionView.AddChidren(btnName); |
| | | |
| | |
| | | { |
| | | btnSwitch.IsSelected = !btnSwitch.IsSelected; |
| | | |
| | | if(function.spk == SPK.IrLearn || function.spk == SPK.TvIr) |
| | | if(function.spk == SPK.IrLearn || function.spk == SPK.TvIr || function.spk == SPK.TvXmIr) |
| | | { |
| | | new System.Threading.Thread(() => { |
| | | System.Threading.Thread.Sleep(2000); |
New file |
| | |
| | | using HDL_ON.DAL.Server;
|
| | | using HDL_ON.Entity;
|
| | | using HDL_ON.Stan; |
| | | using Shared; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Text; |
| | | |
| | | namespace HDL_ON.UI |
| | | { |
| | | /// <summary> |
| | | /// 添加毫米波步骤1界面 |
| | | /// </summary> |
| | | public class AddSenesorMegahealthDirection1Page : EditorCommonForm |
| | | { |
| | | #region ■ 变量声明___________________________ |
| | | |
| | | /// <summary> |
| | | /// 添加设备完成之后的回调事件 |
| | | /// </summary> |
| | | public Action<Function> AddDeviceEvent = null; |
| | | |
| | | #endregion |
| | | |
| | | #region ■ 初始化_____________________________ |
| | | /// <summary> |
| | | /// 画面显示(底层会固定调用此方法,借以完成画面创建) |
| | | /// </summary> |
| | | public void ShowForm(IntegratedBrandDevice device) |
| | | { |
| | | if (Language.CurrentLanguage == "Chinese") |
| | | { |
| | | //设置头部信息 |
| | | base.SetTitleText(Language.StringByID(StringId.Add) + device.productName); |
| | | } |
| | | else |
| | | { |
| | | base.SetTitleText(Language.StringByID(StringId.Add) + " " + device.productName); |
| | | } |
| | | //这个界面的背景需要白色 |
| | | bodyFrameLayout.BackgroundColor = UI.CSS.CSS_Color.MainBackgroundColor; |
| | | |
| | | //初始化中部信息 |
| | | this.InitMiddleFrame(); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 初始化中部信息 |
| | | /// </summary> |
| | | private void InitMiddleFrame() |
| | | { |
| | | //图片 |
| | | var btnPic = new PicViewControl(132, 132); |
| | | btnPic.Y = Application.GetRealHeight(69); |
| | | btnPic.Gravity = Gravity.CenterHorizontal; |
| | | btnPic.UnSelectedImagePath = "PersonalCenter/AddDevice/SenesorMegahealthBg.png"; |
| | | bodyFrameLayout.AddChidren(btnPic); |
| | | |
| | | //请输入设备机上的sn码 |
| | | var textView = new FrameLayout() |
| | | { |
| | | Y = Application.GetRealHeight(309-64), |
| | | Gravity = Gravity.CenterHorizontal, |
| | | Width = Application.GetRealWidth(319), |
| | | Height = Application.GetRealHeight(44), |
| | | }; |
| | | bodyFrameLayout.AddChidren(textView); |
| | | textView.AddChidren(new Button() { Y = Application.GetRealHeight(43), Height = 1, BackgroundColor = CSS.CSS_Color.DividingLineColor }); |
| | | |
| | | EditText editText = new EditText() |
| | | { |
| | | TextAlignment = TextAlignment.Center, |
| | | TextColor = CSS.CSS_Color.FirstLevelTitleColor, |
| | | PlaceholderText = Language.StringByID(StringId.PlsEntrySNCode), |
| | | PlaceholderTextColor = CSS.CSS_Color.PromptingColor1, |
| | | TextSize = CSS.CSS_FontSize.TextFontSize, |
| | | }; |
| | | textView.AddChidren(editText); |
| | | |
| | | Button btnScan = new Button() |
| | | { |
| | | Width = Application.GetRealWidth(32), |
| | | Height = Application.GetRealWidth(32), |
| | | Gravity = Gravity.CenterVertical, |
| | | X = Application.GetRealWidth(275), |
| | | UnSelectedImagePath = "Public/Scan.png" |
| | | }; |
| | | textView.AddChidren(btnScan); |
| | | btnScan.MouseUpEventHandler = (sender, e) => |
| | | { |
| | | Scan.OpenScan((scanString) => |
| | | { |
| | | editText.Text = scanString; |
| | | }); |
| | | }; |
| | | |
| | | |
| | | |
| | | |
| | | //下一步 |
| | | var btnNext = this.AddBottomClickButton(Language.StringByID(StringId.Next)); |
| | | btnNext.ButtonClickEvent += (sender, e) => |
| | | { |
| | | var snCode = editText.Text.Trim(); |
| | | if(string.IsNullOrEmpty(snCode)) |
| | | { |
| | | editText.PlaceholderTextColor = CSS.CSS_Color.WarningColor; |
| | | } |
| | | else |
| | | { |
| | | |
| | | var waitPage = new Loading(); |
| | | waitPage.Start(); |
| | | new System.Threading.Thread(() => { |
| | | try |
| | | { |
| | | var pm = new HttpServerRequest(); |
| | | var pack = pm.IndependentRegister3TyDevcie(SPK.SenesorMegahealth, snCode); |
| | | if (pack.Code == StateCode.SUCCESS) |
| | | { |
| | | var revData = Newtonsoft.Json.JsonConvert.DeserializeObject<List<IntegratedBrandDevice>>(pack.Data.ToString()); |
| | | Application.RunOnMainThread(() => |
| | | { |
| | | waitPage.Hide(); |
| | | var tipDialog = new OperationResultDisPalyPage(); |
| | | tipDialog.LoadPage(true, Language.StringByID(StringId.AddSuccess), "", Language.StringByID(StringId.CanStartUsingZhaoguanMillimeterWave), Language.StringByID(StringId.Next)); |
| | | tipDialog.Show(); |
| | | this.CloseForm(); |
| | | }); |
| | | } |
| | | else |
| | | { |
| | | IMessageCommon.Current.ShowErrorInfoAlter(pack.Code); |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | MainPage.Log("2--::" + ex.Message); |
| | | } |
| | | finally |
| | | { |
| | | Application.RunOnMainThread(() => { waitPage.Hide(); }); |
| | | } |
| | | }) |
| | | { IsBackground = true }.Start(); |
| | | } |
| | | }; |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | #region ■ 关闭界面___________________________ |
| | | |
| | | /// <summary> |
| | | /// 关闭界面 |
| | | /// </summary> |
| | | public override void CloseFormBefore() |
| | | { |
| | | this.AddDeviceEvent = null; |
| | | base.CloseFormBefore(); |
| | | } |
| | | |
| | | #endregion |
| | | } |
| | | } |
New file |
| | |
| | | using HDL_ON.DAL.Server; |
| | | using HDL_ON.Entity; |
| | | using HDL_ON.Stan; |
| | | using HDL_ON.UI.UI2.PersonalCenter.PirDevice; |
| | | using Shared; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Text; |
| | | |
| | | namespace HDL_ON.UI |
| | | { |
| | | /// <summary> |
| | | /// 添加毫米波步骤1界面 |
| | | /// </summary> |
| | | public class SenesorMegahealthManagerPage : EditorCommonForm |
| | | { |
| | | #region ■ 变量声明___________________________ |
| | | |
| | | /// <summary> |
| | | /// 添加设备完成之后的回调事件 |
| | | /// </summary> |
| | | public Action DelDeviceEvent = null; |
| | | |
| | | Function function = null; |
| | | #endregion |
| | | |
| | | #region ■ 初始化_____________________________ |
| | | /// <summary> |
| | | /// 画面显示(底层会固定调用此方法,借以完成画面创建) |
| | | /// </summary> |
| | | public void ShowForm(Function device) |
| | | { |
| | | function = device; |
| | | //设置头部信息 |
| | | base.SetTitleText(Language.StringByID(StringId.Add) + device.name); |
| | | //这个界面的背景需要白色 |
| | | bodyFrameLayout.BackgroundColor = CSS.CSS_Color.BackgroundColor; |
| | | |
| | | //初始化中部信息 |
| | | this.InitMiddleFrame(); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 初始化中部信息 |
| | | /// </summary> |
| | | private void InitMiddleFrame() |
| | | { |
| | | //图片 |
| | | var btnPic = new PicViewControl(132, 132); |
| | | btnPic.Y = Application.GetRealHeight(69); |
| | | btnPic.Gravity = Gravity.CenterHorizontal; |
| | | btnPic.UnSelectedImagePath = "PersonalCenter/AddDevice/SenesorMegahealthBg.png"; |
| | | bodyFrameLayout.AddChidren(btnPic); |
| | | |
| | | var btnTip = new Button() |
| | | { |
| | | Y = Application.GetRealHeight(309 - 44), |
| | | Gravity = Gravity.CenterHorizontal, |
| | | Width = Application.GetRealWidth(319), |
| | | Height = Application.GetRealHeight(84), |
| | | IsMoreLines = true, |
| | | TextAlignment = TextAlignment.Center, |
| | | TextColor = CSS.CSS_Color.FirstLevelTitleColor, |
| | | TextSize = CSS.CSS_FontSize.SubheadingFontSize, |
| | | }; |
| | | bodyFrameLayout.AddChidren(btnTip); |
| | | |
| | | if (Language.CurrentLanguage == "Chinese") |
| | | { |
| | | btnTip.Text = "该设备已物拟到安防传感器类别可到对应类别查看使用"; |
| | | } |
| | | else |
| | | { |
| | | btnTip.Text = "The device is planned to be used in the corresponding category for security sensor."; |
| | | } |
| | | |
| | | var btnDel = new Button() { |
| | | Y= Application.GetRealHeight(617-64), |
| | | Height = Application.GetRealHeight(50), |
| | | TextAlignment = TextAlignment.Center, |
| | | TextColor = CSS.CSS_Color.WarningColor, |
| | | TextSize = CSS.CSS_FontSize.SubheadingFontSize, |
| | | TextID = StringId.DeleteDevice, |
| | | BackgroundColor = CSS.CSS_Color.MainBackgroundColor, |
| | | }; |
| | | bodyFrameLayout.AddChidren(btnDel); |
| | | |
| | | btnDel.MouseUpEventHandler = (sender, e) => { |
| | | var pack = PirSend.DeleteDevice(function.deviceId); |
| | | if(pack.Code == StateCode.SUCCESS) |
| | | { |
| | | DelDeviceEvent?.Invoke(); |
| | | this.CloseForm(); |
| | | }else |
| | | { |
| | | IMessageCommon.Current.ShowErrorInfoAlter(pack.Code); |
| | | } |
| | | }; |
| | | |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | #region ■ 关闭界面___________________________ |
| | | |
| | | /// <summary> |
| | | /// 关闭界面 |
| | | /// </summary> |
| | | public override void CloseFormBefore() |
| | | { |
| | | this.DelDeviceEvent = null; |
| | | base.CloseFormBefore(); |
| | | } |
| | | |
| | | #endregion |
| | | } |
| | | } |
| | |
| | | new System.Threading.Thread(() => { |
| | | try |
| | | { |
| | | var pm = new DAL.Server.HttpServerRequest(); |
| | | //var result = pm.Get3tyBindBrandList |
| | | var pm = new HttpServerRequest(); |
| | | var pack = pm.Get3TyBrandDeviceList(brand.productPlatform, brand.productBrand); |
| | | if (pack.Code == DAL.Server.StateCode.SUCCESS) |
| | | if (pack.Code == StateCode.SUCCESS) |
| | | { |
| | | var revData = Newtonsoft.Json.JsonConvert.DeserializeObject<List<IntegratedBrandDevice>>(pack.Data.ToString()); |
| | | Application.RunOnMainThread(() => |
| | |
| | | refreshView.BeginHeaderRefreshing(); |
| | | }; |
| | | break; |
| | | case SPK.SenesorMegahealth: |
| | | var form1 = new AddSenesorMegahealthDirection1Page(); |
| | | form1.AddForm(device); |
| | | form1.AddDeviceEvent = (functionObj) => { |
| | | refreshView.BeginHeaderRefreshing(); |
| | | }; |
| | | break; |
| | | } |
| | | }; |
| | | } |
| | |
| | | if (pack.Code == DAL.Server.StateCode.SUCCESS) |
| | | { |
| | | var revData = Newtonsoft.Json.JsonConvert.DeserializeObject<Function3tyBrandObj>(pack.Data.ToString()); |
| | | |
| | | Application.RunOnMainThread(() => |
| | | { |
| | | LoadRow(revData.list); |
| | | 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); |
| | | } |
| | | }); |
| | | } |
| | | else |
| | |
| | | |
| | | void LoadRow(List<Function> deviceList) |
| | | { |
| | | contentView.RemoveAll(); |
| | | bool isFrist = true; |
| | | foreach (var device in deviceList) |
| | | { |
| | |
| | | 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(); |
| | | }; |
| | | break; |
| | | } |
| | | }; |
| | | } |
| | |
| | | { |
| | | 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.ThreadAddControl(control, this, (device) => |
New file |
| | |
| | | using Shared; |
| | | using HDL_ON.Stan; |
| | | using HDL_ON.UI.CSS; |
| | | using HDL_ON.Entity; |
| | | using System.Collections.Generic; |
| | | using System; |
| | | |
| | | namespace HDL_ON.UI |
| | | { |
| | | public class SenesorMegahealthPage : DeviceFunctionCardCommonForm |
| | | { |
| | | #region ■ 变量声明___________________________ |
| | | |
| | | /// <summary> |
| | | /// 图标 |
| | | /// </summary> |
| | | private IconViewControl btnIcon = null; |
| | | /// <summary> |
| | | /// 文本控件 |
| | | /// </summary> |
| | | private NormalViewControl btnSuctionView = null; |
| | | |
| | | #endregion |
| | | |
| | | #region ■ 初始化_____________________________ |
| | | |
| | | /// <summary> |
| | | /// 初始化白色区域的内容 |
| | | /// </summary> |
| | | public override void InitFrameWhiteContent() |
| | | { |
| | | base.SetTitleText(Language.StringByID(StringId.SenesorMillimeterWave)); |
| | | |
| | | //添加第二索引页 |
| | | this.AddSecondPage(); |
| | | //初始化第一个索引页的内容 |
| | | this.InitFrameWhiteContent1(); |
| | | //初始化第二个索引页的内容 |
| | | this.InitFrameWhiteContent2(); |
| | | |
| | | //刷新当前设备的状态缓存 |
| | | this.RefreshNowDeviceStatuMemory(this.device); |
| | | //刷新界面状态 |
| | | this.RefreshFormStatu(); |
| | | //读取状态 |
| | | new System.Threading.Thread(() => |
| | | { |
| | | if (device.spk == SPK.SenesorMegahealth) |
| | | { |
| | | DriverLayer.Control.Ins.SendReadCommand(device, true); |
| | | } |
| | | }) |
| | | { IsBackground = true }.Start(); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 初始化第一个索引页的内容 |
| | | /// </summary> |
| | | private void InitFrameWhiteContent1() |
| | | { |
| | | btnIcon = new IconViewControl(198) |
| | | { |
| | | Gravity = Gravity.CenterHorizontal, |
| | | Y = Application.GetRealWidth(146), |
| | | UnSelectedImagePath = "FunctionIcon/ArmSensor/UnderProtectionBgIcon.png", |
| | | }; |
| | | FrameWhiteCentet1.AddChidren(btnIcon); |
| | | |
| | | btnSuctionView = new NormalViewControl(300, 84, true) |
| | | { |
| | | Gravity = Gravity.CenterHorizontal, |
| | | Y = btnIcon.Bottom, |
| | | TextAlignment = TextAlignment.Center, |
| | | TextSize = CSS_FontSize.TextFontSize, |
| | | TextColor = CSS_Color.TextualColor, |
| | | SelectedTextColor = CSS_Color.MainColor, |
| | | }; |
| | | FrameWhiteCentet1.AddChidren(btnSuctionView); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 初始化第二个索引页的内容 |
| | | /// </summary> |
| | | private void InitFrameWhiteContent2() |
| | | { |
| | | var paging = new ArmSensorHistroyPaging(device); |
| | | paging.InitFrame(FrameWhiteCentet2); |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | #region ■ 设备状态反馈_______________________ |
| | | |
| | | /// <summary> |
| | | /// 设备状态反馈 |
| | | /// </summary> |
| | | /// <param name="i_LocalDevice"></param> |
| | | public override void DeviceStatuPush(Function i_LocalDevice) |
| | | { |
| | | //不是同一个东西 |
| | | if (this.device.sid != i_LocalDevice.sid) { return; } |
| | | |
| | | //刷新当前设备的状态缓存 |
| | | this.RefreshNowDeviceStatuMemory(i_LocalDevice); |
| | | //刷新界面状态 |
| | | this.RefreshFormStatu(); |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | #region ■ 发送各种命令_______________________ |
| | | |
| | | #endregion |
| | | |
| | | #region ■ 刷新界面状态_______________________ |
| | | |
| | | /// <summary> |
| | | /// 刷新界面状态 |
| | | /// </summary> |
| | | private void RefreshFormStatu() |
| | | { |
| | | Application.RunOnMainThread(() => { |
| | | var temp = device.attributes.Find((sta) => sta.key == FunctionAttributeKey.ActionStatus); |
| | | if (temp != null) |
| | | { |
| | | if (temp.state == "fall") //跌倒 |
| | | { |
| | | btnIcon.UnSelectedImagePath = "FunctionIcon/ArmSensor/SomeoneFellBgIcon.png"; |
| | | btnSuctionView.TextID = StringId.SomeoneFell; |
| | | btnSuctionView.IsSelected = true; |
| | | } |
| | | else if (temp.state == "uninhabited")//无人 |
| | | { |
| | | btnIcon.UnSelectedImagePath = "FunctionIcon/ArmSensor/UnderProtectionBgIcon.png"; |
| | | btnSuctionView.TextID = StringId.UnderProtection; |
| | | btnSuctionView.IsSelected = false; |
| | | } |
| | | else//有人 |
| | | { |
| | | btnIcon.UnSelectedImagePath = "FunctionIcon/ArmSensor/SomeoneInBgIcon.png"; |
| | | btnSuctionView.TextID = StringId.SomeoneIn; |
| | | btnSuctionView.IsSelected = true; |
| | | } |
| | | } |
| | | }); |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | #region ■ 一般方法___________________________ |
| | | |
| | | /// <summary> |
| | | /// 刷新当前设备的状态缓存 |
| | | /// </summary> |
| | | private void RefreshNowDeviceStatuMemory(Function i_LocalDevice) |
| | | { |
| | | //foreach (var data in i_LocalDevice.status) |
| | | //{ |
| | | // if (data.key == FunctionAttributeKey.Status) |
| | | // { |
| | | // Application.RunOnMainThread(() => |
| | | // { |
| | | // if (data.value.ToLower() == "open") |
| | | // { |
| | | // this.btnIcon.IsSelected = true; |
| | | // this.btnSuctionView.IsSelected = true; |
| | | // this.btnSuctionView.TextID = StringId.Open; |
| | | // } |
| | | // else |
| | | // { |
| | | // this.btnIcon.IsSelected = false; |
| | | // this.btnSuctionView.IsSelected = false; |
| | | // this.btnSuctionView.TextID = StringId.Close; |
| | | // } |
| | | // }); |
| | | // } |
| | | //} |
| | | } |
| | | |
| | | #endregion |
| | | } |
| | | |
| | | } |
| | |
| | | /// </summary> |
| | | public override void InitFrameWhiteContent() |
| | | { |
| | | base.SetTitleText(device.name); |
| | | base.SetTitleText(Language.StringByID(StringId.Sensor)); |
| | | |
| | | //添加第二索引页 |
| | | this.AddSecondPage(); |
| | |
| | | public override void InitFrameWhiteContent() |
| | | { |
| | | base.ShowColltionButton = false; |
| | | base.SetTitleText(device.name); |
| | | base.SetTitleText(Language.StringByID(StringId.Sensor)); |
| | | |
| | | //添加第二索引页 |
| | | this.AddSecondPage(); |
| | |
| | | /// </summary> |
| | | public override void InitFrameWhiteContent() |
| | | { |
| | | base.SetTitleText(device.name); |
| | | base.SetTitleText(Language.StringByID(StringId.Sensor)); |
| | | |
| | | //添加第二索引页 |
| | | this.AddSecondPage(); |
| | |
| | | /// </summary> |
| | | public override void InitFrameWhiteContent() |
| | | { |
| | | base.SetTitleText(device.name); |
| | | base.SetTitleText(Language.StringByID(StringId.Sensor)); |
| | | |
| | | //添加第二索引页 |
| | | this.AddSecondPage(); |
New file |
| | |
| | | using System; |
| | | namespace HDL_ON.UI.UI2.FuntionControlView.Electrical |
| | | { |
| | | public class IrFanPage |
| | | { |
| | | public IrFanPage() |
| | | { |
| | | } |
| | | } |
| | | } |
| | |
| | | |
| | | #endregion |
| | | |
| | | new TopViewDiv(bodyView, Language.StringByID(StringId.TV)).LoadTopView_FunctionTop(device, actionRefresh); |
| | | new TopViewDiv(bodyView, Language.StringByID(StringId.PJT)).LoadTopView_FunctionTop(device, actionRefresh); |
| | | DriverLayer.Control.Ins.SendReadCommand(device); |
| | | |
| | | LoadEventList(); |
| | |
| | | if (DB_ResidenceData.Instance.GatewayType == 1) |
| | | { |
| | | Dictionary<string, string> d = new Dictionary<string, string>(); |
| | | d.Add("ch+", ""); |
| | | d.Add("zoom+", ""); |
| | | Control.Ins.SendWriteCommand(device, d); |
| | | } |
| | | }; |
| | |
| | | if (DB_ResidenceData.Instance.GatewayType == 1) |
| | | { |
| | | Dictionary<string, string> d = new Dictionary<string, string>(); |
| | | d.Add("ch-", ""); |
| | | d.Add("zoom-", ""); |
| | | Control.Ins.SendWriteCommand(device, d); |
| | | } |
| | | }; |
| | |
| | | Control.Ins.SendWriteCommand(device, d); |
| | | } |
| | | }; |
| | | |
| | | btnMenu.MouseUpEventHandler = (sender, e) => |
| | | { |
| | | if (DB_ResidenceData.Instance.GatewayType == 1) |
| | | { |
| | | Dictionary<string, string> d = new Dictionary<string, string>(); |
| | | d.Add("menu", ""); |
| | | Control.Ins.SendWriteCommand(device, d); |
| | | } |
| | | }; |
| | | btnPower.MouseUpEventHandler = (sender, e) => |
| | | { |
| | | if (DB_ResidenceData.Instance.GatewayType == 1) |
| | |
| | | } |
| | | }; |
| | | |
| | | |
| | | 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"; |
| | | }; |
| | | btnMenu.MouseUpEventHandler = (sender, e) => |
| | | { |
| | | topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIcon.png"; |
| | | if (DB_ResidenceData.Instance.GatewayType == 1) |
| | | { |
| | | Dictionary<string, string> d = new Dictionary<string, string>(); |
| | | d.Add("menu", ""); |
| | | Control.Ins.SendWriteCommand(device, d); |
| | | } |
| | | }; |
| | | 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>(); |
| | |
| | | } |
| | | }; |
| | | 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>(); |
| | |
| | | } |
| | | }; |
| | | 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>(); |
| | |
| | | } |
| | | }; |
| | | 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>(); |
| | |
| | | } |
| | | }; |
| | | 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>(); |
| | |
| | | |
| | | LoadEventList(); |
| | | |
| | | new TopViewDiv(bodyView, Language.StringByID(StringId.TV)).LoadTopView_FunctionTop(function, actionRefresh); |
| | | new TopViewDiv(bodyView, Language.StringByID(StringId.STB)).LoadTopView_FunctionTop(function, actionRefresh); |
| | | DriverLayer.Control.Ins.SendReadCommand(function); |
| | | |
| | | } |
| | |
| | | } |
| | | }; |
| | | |
| | | |
| | | 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"; |
| | | }; |
| | | btnMenu.MouseUpEventHandler = (sender, e) => |
| | | { |
| | | topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIcon.png"; |
| | | if (DB_ResidenceData.Instance.GatewayType == 1) |
| | | { |
| | | Dictionary<string, string> d = new Dictionary<string, string>(); |
| | | d.Add("menu", ""); |
| | | Control.Ins.SendWriteCommand(function, d); |
| | | } |
| | | }; |
| | | 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>(); |
| | |
| | | } |
| | | }; |
| | | 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>(); |
| | |
| | | } |
| | | }; |
| | | 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>(); |
| | |
| | | } |
| | | }; |
| | | 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>(); |
| | |
| | | } |
| | | }; |
| | | 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>(); |
| | |
| | | Control.Ins.SendWriteCommand(function, d); |
| | | } |
| | | }; |
| | | |
| | | |
| | | } |
| | | |
| | | } |
| | |
| | | } |
| | | }; |
| | | |
| | | 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>(); |
| | |
| | | } |
| | | }; |
| | | 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>(); |
| | |
| | | } |
| | | }; |
| | | 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>(); |
| | |
| | | } |
| | | }; |
| | | 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>(); |
| | |
| | | } |
| | | }; |
| | | 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>(); |
| | |
| | | brokenLine.YvalueText = ""; |
| | | foreach (var ene in queryList) |
| | | { |
| | | brokenLine.YvalueText += ene.GetAttrState("ydata") + ","; |
| | | brokenLine.YvalueText += ene.GetAttrState("ydata"); |
| | | } |
| | | var opString = brokenLine.InitOption(); |
| | | |
| | | Application.RunOnMainThread(() => |
| | | { |
| | | myEchartsView.ShowWithOption(brokenLine.InitOption()); |
| | | myEchartsView.ShowWithOption(opString); |
| | | }); |
| | | |
| | | return; |
| | | } |
| | | |
| | |
| | | vs.Add(data.fieldName); |
| | | } |
| | | brokenLine.InitXdataText(vs); |
| | | |
| | | if (sr.GetAttribute("ydata") == null) |
| | | { |
| | | sr.attributes.Add(new FunctionAttributes() { key = "ydata" }); |
| | | } |
| | | sr.SetAttrState("ydata", brokenLine.InitYdataText(sr.name, revertData, sr.GetAttrState("color")) + ","); |
| | | } |
| | | else |
| | | if (sr.GetAttribute("ydata") == null) |
| | | { |
| | | if (sr.GetAttribute("ydata") == null) |
| | | { |
| | | sr.attributes.Add(new FunctionAttributes() { key = "ydata" }); |
| | | } |
| | | sr.SetAttrState("ydata", brokenLine.InitYdataText(sr.name, revertData, sr.GetAttrState("color"))+","); |
| | | sr.attributes.Add(new FunctionAttributes() { key = "ydata" }); |
| | | } |
| | | sr.SetAttrState("ydata", brokenLine.InitYdataText(sr.name, revertData, sr.GetAttrState("color")) + ","); |
| | | //if (sr.GetAttribute("ydata") == null) |
| | | //{ |
| | | // sr.attributes.Add(new FunctionAttributes() { key = "ydata" }); |
| | | //} |
| | | //sr.SetAttrState("ydata", brokenLine.InitYdataText(sr.name, revertData, sr.GetAttrState("color")) + ","); |
| | | } |
| | | } |
| | | brokenLine.yTitle = Language.StringByID(StringId.EnergyConsumption) + "(kW)"; |
| | |
| | | newstring = newstring.Replace("{1}", YvalueText); |
| | | newstring = newstring.Replace("{10}", xTitle); |
| | | newstring = newstring.Replace("{20}", yTitle); |
| | | newstring = newstring.Replace(",,",","); |
| | | return newstring; |
| | | } |
| | | |