| | |
| | | <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/DriverLayer/Control.cs"> |
| | | <MonoDevelop.Ide.Workbench> |
| | | <Files> |
| | | <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/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/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" /> |
| | | <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" /> |
| | | </Files> |
| | | <Pads> |
| | | <Pad Id="ProjectPad"> |
| | | <State name="__root__"> |
| | | <Node name="HDL_APP_Project" expanded="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 name="HDL-ON_Android" selected="True" /> |
| | | </Node> |
| | | </State> |
| | | </Pad> |
| | |
| | | <Breakpoint file="/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/Method.cs" relfile="HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/Method.cs" line="34" column="1" /> |
| | | <Breakpoint file="/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/AcControlPage.cs" relfile="HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/AcControlPage.cs" line="313" column="1" /> |
| | | <Breakpoint file="/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/BindingResidence/BindingResidencePage.cs" relfile="HDL_ON/UI/BindingResidence/BindingResidencePage.cs" line="121" column="1" /> |
| | | <Breakpoint file="/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/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 /> |
| | |
| | | 69=All |
| | | 70=Curtain |
| | | 71=Name |
| | | 72=The address of the residence |
| | | 72=Address |
| | | 73=Floor Management |
| | | 74=Room Management |
| | | 75=Administrator migration |
| | |
| | | 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 |
| | |
| | | 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 |
| | |
| | | 436=Added Devices |
| | | 437=Device List |
| | | 438=humidity:{0}% air:{1} wind:{2} |
| | | 439=Real time power consumption: {0} kw |
| | | 439=Real time: {0} kw |
| | | 440=Next step |
| | | 441=Please select all areas of capture status |
| | | 442=Generate Scene |
| | |
| | | ' |
| | | 470=Under protection |
| | | 471=Millimeter wave sensor |
| | | |
| | | |
| | | 1000=Room Humidity |
| | | 1001=V-chip |
| | | 1002=Anion |
| | |
| | | 1084=1st Gear |
| | | 1085=2nd Gear |
| | | 1086=3rd Gear |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | 4000=Video intercom |
| | | 4001=Call record |
| | | 4002=*Cloud photos are only kept for 30 days |
| | |
| | | 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 |
| | |
| | | 7131=App push |
| | | 7132=Automation |
| | | 7133=Executed |
| | | |
| | | |
| | | |
| | | |
| | | 6000=Rename |
| | | 6001=Please enter a name |
| | | 6002=Xiaodu |
| | |
| | | 6013=Unbinding... |
| | | 6014=transfer to third-party APP |
| | | 6015=Add speakers |
| | | |
| | | |
| | | |
| | | |
| | | 7000=Create automation |
| | | 7001=Edit automation |
| | | 7002=If |
| | |
| | | 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. |
| | |
| | | 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. |
| | |
| | | 10031=The device should not be blank. |
| | | 10032=The user does not have permission. |
| | | 10033=The device does not exist. |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | [Chinese] |
| | | 1=登录 |
| | | 2=手机号登录 |
| | |
| | | 406=会客 |
| | | 407=阅读 |
| | | 408=确认添加 |
| | | |
| | | |
| | | 409=功能品牌 |
| | | 410=你当前还未添加任何平台设备 |
| | | 411=其他平台设备均由第三方服务商提供支持 |
| | |
| | | 469=有人进入 |
| | | 470=防护中 |
| | | 471=毫米波传感器 |
| | | |
| | | |
| | | |
| | | |
| | | 1000=室内湿度 |
| | | 1001=童锁 |
| | | 1002=负离子 |
| | |
| | | 1084=风速1档 |
| | | 1085=风速2档 |
| | | 1086=风速3档 |
| | | |
| | | |
| | | |
| | | |
| | | 4000=可视对讲 |
| | | 4001=通话记录 |
| | | 4002=*云端照片只保留30天 |
| | |
| | | 4012=配置参数有异常! |
| | | 4013=门禁二维码 |
| | | 4014=临时密码 |
| | | |
| | | |
| | | 5000=音乐 |
| | | 5001=组合 |
| | | 5002=设置 |
| | |
| | | 5045=总音量 |
| | | 5046=调节音量 |
| | | 5047=你手机暂未安装"QQ音乐"{\r\n}请前往手机商场安装 |
| | | |
| | | |
| | | |
| | | |
| | | 6000=正常 |
| | | 6001=设备状态 |
| | | 6002=个 |
| | |
| | | 6092=设备不存在 |
| | | 6093=设备不在线 |
| | | 6094=网关设备不存在 |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | 7000=新建自动化 |
| | | 7001=编辑自动化 |
| | | 7002=如果 |
| | |
| | | 7131=App推送 |
| | | 7132=自动化 |
| | | 7133=已执行 |
| | | |
| | | |
| | | 9000=请使用新的手机账号登录APP |
| | | 9001=请使用新的邮箱账号登录APP |
| | | 9002=登录手机修改完成 |
| | |
| | | 9066=备注 |
| | | 9067=备注不能为空 |
| | | 9068=是否解除绑定? |
| | | |
| | | |
| | | 10000=无效登录密钥,请重新登录! |
| | | 10001=请求服务器失败,请稍后再试! |
| | | 10002=系统维护中,请稍后再试! |
| | |
| | | 10030=没有远程控制权限 |
| | | 10031=设备不能为空 |
| | | 10032=用户没有设备的权限 |
| | | 10033=设备不存在 |
| | | 10033=设备不存在 |
| | |
| | | <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> |
| | | <Folder Include="Resources\drawable\" /> |
| | |
| | | <?xml version="1.0" encoding="utf-8"?> |
| | | <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" /> |
| | | <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" /> |
| | | <!-- 可视对讲权限--> |
| | | <uses-permission android:name="android.permission.CAMERA" /> |
| | | <uses-feature android:name="android.hardware.camera" /> |
| | |
| | | public const int ic_launcher_round = 2131558401; |
| | | |
| | | // aapt resource value: 0x7F0D0003 |
| | | public const int videogo_icon = 2131558403; |
| | | public const int Loading = 2131558403; |
| | | |
| | | // aapt resource value: 0x7F0D0004 |
| | | public const int videogo_icon = 2131558404; |
| | | |
| | | static Mipmap() |
| | | { |
| | |
| | | <key>UIStatusBarStyle</key> |
| | | <string>UIStatusBarStyleLightContent</string> |
| | | <key>CFBundleShortVersionString</key> |
| | | <string>1.2.202105255</string> |
| | | <string>1.2.202106081</string> |
| | | <key>CFBundleVersion</key> |
| | | <string>1.2.05255</string> |
| | | <string>1.2.06081</string> |
| | | <key>NSLocationWhenInUseUsageDescription</key> |
| | | <string>Use geographic location to provide services such as weather</string> |
| | | <key>NSAppleMusicUsageDescription</key> |
| | |
| | | 69=All |
| | | 70=Curtain |
| | | 71=Name |
| | | 72=The address of the residence |
| | | 72=Address |
| | | 73=Floor Management |
| | | 74=Room Management |
| | | 75=Administrator migration |
| | |
| | | 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 |
| | |
| | | 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 |
| | |
| | | 436=Added Devices |
| | | 437=Device List |
| | | 438=humidity:{0}% air:{1} wind:{2} |
| | | 439=Real time power consumption: {0} kw |
| | | 439=Real time: {0} kw |
| | | 440=Next step |
| | | 441=Please select all areas of capture status |
| | | 442=Generate Scene |
| | |
| | | ' |
| | | 470=Under protection |
| | | 471=Millimeter wave sensor |
| | | |
| | | |
| | | 1000=Room Humidity |
| | | 1001=V-chip |
| | | 1002=Anion |
| | |
| | | 1084=1st Gear |
| | | 1085=2nd Gear |
| | | 1086=3rd Gear |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | 4000=Video intercom |
| | | 4001=Call record |
| | | 4002=*Cloud photos are only kept for 30 days |
| | |
| | | 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 |
| | |
| | | 7131=App push |
| | | 7132=Automation |
| | | 7133=Executed |
| | | |
| | | |
| | | |
| | | |
| | | 6000=Rename |
| | | 6001=Please enter a name |
| | | 6002=Xiaodu |
| | |
| | | 6013=Unbinding... |
| | | 6014=transfer to third-party APP |
| | | 6015=Add speakers |
| | | |
| | | |
| | | |
| | | |
| | | 7000=Create automation |
| | | 7001=Edit automation |
| | | 7002=If |
| | |
| | | 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. |
| | |
| | | 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. |
| | |
| | | 10031=The device should not be blank. |
| | | 10032=The user does not have permission. |
| | | 10033=The device does not exist. |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | [Chinese] |
| | | 1=登录 |
| | | 2=手机号登录 |
| | |
| | | 406=会客 |
| | | 407=阅读 |
| | | 408=确认添加 |
| | | |
| | | |
| | | 409=功能品牌 |
| | | 410=你当前还未添加任何平台设备 |
| | | 411=其他平台设备均由第三方服务商提供支持 |
| | |
| | | 469=有人进入 |
| | | 470=防护中 |
| | | 471=毫米波传感器 |
| | | |
| | | |
| | | |
| | | |
| | | 1000=室内湿度 |
| | | 1001=童锁 |
| | | 1002=负离子 |
| | |
| | | 1084=风速1档 |
| | | 1085=风速2档 |
| | | 1086=风速3档 |
| | | |
| | | |
| | | |
| | | |
| | | 4000=可视对讲 |
| | | 4001=通话记录 |
| | | 4002=*云端照片只保留30天 |
| | |
| | | 4012=配置参数有异常! |
| | | 4013=门禁二维码 |
| | | 4014=临时密码 |
| | | |
| | | |
| | | 5000=音乐 |
| | | 5001=组合 |
| | | 5002=设置 |
| | |
| | | 5045=总音量 |
| | | 5046=调节音量 |
| | | 5047=你手机暂未安装"QQ音乐"{\r\n}请前往手机商场安装 |
| | | |
| | | |
| | | |
| | | |
| | | 6000=正常 |
| | | 6001=设备状态 |
| | | 6002=个 |
| | |
| | | 6092=设备不存在 |
| | | 6093=设备不在线 |
| | | 6094=网关设备不存在 |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | 7000=新建自动化 |
| | | 7001=编辑自动化 |
| | | 7002=如果 |
| | |
| | | 7131=App推送 |
| | | 7132=自动化 |
| | | 7133=已执行 |
| | | |
| | | |
| | | 9000=请使用新的手机账号登录APP |
| | | 9001=请使用新的邮箱账号登录APP |
| | | 9002=登录手机修改完成 |
| | |
| | | 9066=备注 |
| | | 9067=备注不能为空 |
| | | 9068=是否解除绑定? |
| | | |
| | | |
| | | 10000=无效登录密钥,请重新登录! |
| | | 10001=请求服务器失败,请稍后再试! |
| | | 10002=系统维护中,请稍后再试! |
| | |
| | | 10030=没有远程控制权限 |
| | | 10031=设备不能为空 |
| | | 10032=用户没有设备的权限 |
| | | 10033=设备不存在 |
| | | 10033=设备不存在 |
| | |
| | | case "13602944661": |
| | | case "18778381374": |
| | | case "18316672920": |
| | | case "15626203746": |
| | | case "551775569@qq.com": |
| | | return; |
| | | } |
| | | |
| | |
| | | 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> |
| | |
| | | /// </summary> |
| | | public void ControlScene(Scene scene) |
| | | { |
| | | //远程或者控制link网关场景 |
| | | if (!Ins.GatewayOnline_Local || DB_ResidenceData.Instance.GatewayType == 1) |
| | | { |
| | | new System.Threading.Thread(() => |
| | |
| | | Topic = $"/user/{DB_ResidenceData.Instance.CurrentRegion.id}/app/thing/event/irCodeStudyDone/up", |
| | | QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.AtMostOnce |
| | | }; |
| | | |
| | | #region 数据更新推送主题 |
| | | //appHomeRefresh:住宅数据刷新通知 |
| | | var appHomeRefresh = new MqttTopicFilter() |
| | |
| | | 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 |
| | | |
| | | |
| | |
| | | var result = await RemoteMqttClient.SubscribeAsync(new MqttTopicFilter[] { |
| | | pirStatus,pirStudy, |
| | | appDeviceRefresh,appHomeRefresh,appRoomRefresh, |
| | | topicFilterPush2, topicAlinkStatus }); |
| | | topicFilterPush2, topicAlinkStatus ,mqttkeyChange}); |
| | | if (result.Items[0].ResultCode == MQTTnet.Client.Subscribing.MqttClientSubscribeResultCode.GrantedQoS0) |
| | | { |
| | | isSubscribeSuccess = true; |
| | |
| | | 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") |
| | |
| | | { |
| | | if (mMes == PushSignStr) return;//是自己的登录推送不处理//或者当前不是远程链接状态 |
| | | //测试账号,不挤下线 |
| | | switch (UserInfo.Current.AccountString) |
| | | switch (UserInfo.Current.userMobileInfo) |
| | | { |
| | | case "13415629083": |
| | | case "18316120654": |
| | |
| | | case "18316672920": |
| | | case "15971583093": |
| | | case "15626203746": |
| | | case "551775569@qq.com": |
| | | return; |
| | | } |
| | | |
| | |
| | | /// <param name="productPlatform"></param> |
| | | /// <param name="productBrand"></param> |
| | | /// <returns></returns> |
| | | public ResponsePackNew IndependentRegister3TyDevcie(string spk,string extDevId) |
| | | 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> |
| | | //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> |
| | |
| | | { |
| | | urlHead = OnAppConfig.Instance.RequestHttpsHost; |
| | | } |
| | | //"https://test-gz.hdlcontrol.com"; |
| | | //"https://bahrain-gateway.hdlcontrol.com"; |
| | | //urlHead="https://china-gateway.hdlcontrol.com"; |
| | | |
| | | string requestFullUrl = urlHead + apiPath; |
| | | |
| | | |
| | |
| | | using System; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using HDL_ON.Common; |
| | | using HDL_ON.DAL.Server; |
| | |
| | | /// 毫米波传感器 |
| | | /// </summary> |
| | | public const string SenesorMegahealth = "sensor.megahealth"; |
| | | |
| | | |
| | | /// <summary> |
| | | /// 安防传感器spk列表 |
| | |
| | | /// <summary> |
| | | /// 版本号 |
| | | /// </summary> |
| | | public static string VersionString = "1.2.0525"; |
| | | public static string VersionString = "1.2.0608"; |
| | | ///// <summary> |
| | | ///// 客户端类型 |
| | | ///// </summary> |
| | |
| | | }; |
| | | contentView.AddChidren(btnBackIcon); |
| | | |
| | | btnBack = new Button() |
| | | { |
| | | Width = Application.GetRealWidth(100), |
| | | }; |
| | | contentView.AddChidren(btnBack); |
| | | |
| | | Button btnTilte = new Button() |
| | | { |
| | | Gravity = Gravity.CenterHorizontal, |
| | |
| | | contentView.AddChidren(btnTilte); |
| | | |
| | | |
| | | btnBack = new Button() |
| | | { |
| | | Width = Application.GetRealWidth(70), |
| | | }; |
| | | contentView.AddChidren(btnBack); |
| | | |
| | | LoadEventList(); |
| | | } |
| | | /// <summary> |
| | |
| | | TextSize = CSS_FontSize.TextFontSize, |
| | | PlaceholderTextColor = CSS_Color.PromptingColor1, |
| | | PlaceholderText = Language.StringByID(StringId.PlsEntryVerificationCode), |
| | | IsNumberKeyboardType = true |
| | | }; |
| | | verificationCodeView.AddChidren(etVerificationCode); |
| | | |
| | |
| | | //etAccount.Text = "BB01010101@evoyo.com";//可视对讲 |
| | | //etAccount.Text = "13168123446"; |
| | | //etAccount.Text = "13676202754";//巴林服务器 |
| | | etAccount.Text = "13602944661";//kx |
| | | //etAccount.Text = "13602944661";//kx |
| | | etAccount.Text = "551775569@qq.com";//wcf |
| | | //etAccount.Text = "18666455392";//13375012446//13602944661//tzy 18778381374 |
| | | //etAccount.Text = "15971583093";// gs//tzy 274116637@qq.com//Sumant.Bhatia@havells.com 国外服务器测试 |
| | | } |
| | |
| | | TextSize = CSS_FontSize.TextFontSize, |
| | | PlaceholderTextColor = CSS_Color.PromptingColor1, |
| | | PlaceholderText = Language.StringByID(StringId.PlsEntryVerificationCode), |
| | | IsNumberKeyboardType = true |
| | | }; |
| | | verificationCodeView.AddChidren(etVerificationCode); |
| | | |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using Shared; |
| | | namespace HDL_ON.UI.UI2.Intelligence.Automation |
| | | { |
| | |
| | | { |
| | | viewLayout.AddChidren(shiwaiView.FLayoutView()); |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | #region 所有点击事件 |
| | |
| | | } |
| | | } |
| | | 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 保存 |
| | |
| | | keyVlaue = "status"; |
| | | } |
| | | break; |
| | | case SPK.SenesorMegahealth: |
| | | { |
| | | keyVlaue = "action_state"; |
| | | } |
| | | break; |
| | | |
| | | } |
| | | switch (intValue) |
| | |
| | | value = "off"; |
| | | } |
| | | break; |
| | | case StringId.youren: { |
| | | case StringId.youren: |
| | | { |
| | | value = "true"; |
| | | } |
| | | break; |
| | | case StringId.wuren: { |
| | | value = "false"; |
| | | case StringId.wuren: |
| | | { |
| | | if (device.spk == SPK.SenesorMegahealth) |
| | | { |
| | | value = "uninhabited"; |
| | | } |
| | | else |
| | | { |
| | | value = "false"; |
| | | } |
| | | } |
| | | break; |
| | | case StringId.kaiqi: |
| | |
| | | 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; |
| | | } |
| | | //显示文本 |
| | | button.TextID = intValue; |
| | |
| | | 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; |
| | | |
| | | } |
| | | } |
| | |
| | | } |
| | | } |
| | | 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; |
| | | } |
| | | } |
| | | /// <summary> |
| | |
| | | case SPK.SensorPir: |
| | | case SPK.SensorDoorWindow: |
| | | case SPK.SensoruUtrasonic: |
| | | case SPK.SenesorMegahealth: |
| | | { |
| | | strPath = "LogicIcon/sensor.png"; |
| | | } |
| | |
| | | || device.spk == SPK.SensorPir |
| | | || device.spk == SPK.SensorDoorWindow |
| | | || device.spk == SPK.SensoruUtrasonic |
| | | || device.spk == SPK.SenesorMegahealth |
| | | ); |
| | | if (sensor != null) |
| | | { |
| | |
| | | functionTypeList.Add(SPK.SensorPir); |
| | | functionTypeList.Add(SPK.SensorDoorWindow); |
| | | functionTypeList.Add(SPK.SensoruUtrasonic); |
| | | |
| | | functionTypeList.Add(SPK.SenesorMegahealth); |
| | | |
| | | } |
| | | return functionTypeList; |
| | | |
| | |
| | | deviceTypeList.Add(SPK.SensorPir); |
| | | deviceTypeList.Add(SPK.SensorDoorWindow); |
| | | deviceTypeList.Add(SPK.SensoruUtrasonic); |
| | | deviceTypeList.Add(SPK.SenesorMegahealth); |
| | | } |
| | | break; |
| | | case target_if: |
| | |
| | | } |
| | | } |
| | | /// <summary> |
| | | /// 判断网关类型 |
| | | /// 判断网关类型(0:bus网关;1:A协议网关) |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | public static bool IsGatewayType |
| | |
| | | { |
| | | return true; |
| | | } |
| | | else |
| | | { |
| | | return false; |
| | | |
| | | } |
| | | return false; |
| | | } |
| | | } |
| | | } |
| | |
| | | logicIfon.Add("pushConfigs", pushConfigsArray); |
| | | logicjArray.Add(logicIfon); |
| | | var jObject = new JObject { { "homeId", LogicMethod.HomeId }, { "logics", logicjArray } }; |
| | | responsePackNew = RequestServerhomeId(jObject, NewAPI.API_POST_Logic_Add); |
| | | responsePackNew = RequestServerhomeId(jObject, NewAPI.API_POST_Logic_Add,5); |
| | | //如果是token过期则刷新token |
| | | if (responsePackNew.Code == StateCode.TOKEN_EXPIRED) |
| | | { |
| | | RefreshToken(); |
| | | AddLogic(logic); |
| | | } |
| | | Console.WriteLine("添加逻辑===" + logicjArray); |
| | | } |
| | | catch (Exception e) |
| | | { |
| | |
| | | |
| | | logicjArray.Add(logicIfon); |
| | | var jObject = new JObject { { "homeId", LogicMethod.HomeId }, { "logics", logicjArray } }; |
| | | responsePackNew = RequestServerhomeId(jObject, NewAPI.API_POST_Logic_Update); |
| | | responsePackNew = RequestServerhomeId(jObject, NewAPI.API_POST_Logic_Update,5); |
| | | //如果是token过期则刷新token |
| | | if (responsePackNew.Code == StateCode.TOKEN_EXPIRED) |
| | | { |
| | |
| | | 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; |
| | |
| | | kongqiViewk.btnText.TextID = StringId.kongqizhiliang; |
| | | viewLayout.AddChidren(kongqiViewk.FLayoutView()); |
| | | #endregion |
| | | |
| | | #region 所有点击事件 |
| | | //室外温、湿度、PM2.5变化 |
| | | airqualityView.btnClick.MouseUpEventHandler += (sen, e) => { |
| | |
| | | try |
| | | { |
| | | var pm = new HttpServerRequest(); |
| | | var pack = pm.IndependentRegister3TyDevcie(SPK.SenesorMegahealth, snCode); |
| | | var pack = pm.IndependentRegister3TyDevcie(SPK.SenesorMegahealth, snCode,Language.StringByID(StringId.SenesorMillimeterWave)); |
| | | if (pack.Code == StateCode.SUCCESS) |
| | | { |
| | | var revData = Newtonsoft.Json.JsonConvert.DeserializeObject<List<IntegratedBrandDevice>>(pack.Data.ToString()); |
| | | //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(); |
| | | AddDeviceEvent?.Invoke(new Function()); |
| | | this.CloseForm(); |
| | | }); |
| | | }else if(pack.Code == "10801") |
| | | { |
| | | var mes = ""; |
| | | if (Language.CurrentLanguage == "Chinese") |
| | | { |
| | | mes = "该设备已经被添加。"; |
| | | } |
| | | else |
| | | { |
| | | mes = "This device has been added."; |
| | | } |
| | | Application.RunOnMainThread(() => |
| | | { |
| | | var tip = new Tip() |
| | | { |
| | | Text = mes, |
| | | CloseTime = 2, |
| | | Direction = AMPopTipDirection.None |
| | | }; |
| | | tip.Show(MainPage.BaseView); |
| | | }); |
| | | } |
| | | else |
| | | { |
| | |
| | | |
| | | if (Language.CurrentLanguage == "Chinese") |
| | | { |
| | | btnTip.Text = "该设备已物拟到安防传感器类别可到对应类别查看使用"; |
| | | btnTip.Text = "该设备已添加到安防传感器类别,可到对应功能板块查看"; |
| | | } |
| | | else |
| | | { |
| | | btnTip.Text = "The device is planned to be used in the corresponding category for security sensor."; |
| | | btnTip.Text = "The device has been added to the security sensor category, which can be viewed in the corresponding function block."; |
| | | } |
| | | |
| | | var btnDel = new Button() { |
| | |
| | | |
| | | btnDel.MouseUpEventHandler = (sender, e) => { |
| | | var pack = PirSend.DeleteDevice(function.deviceId); |
| | | if(pack.Code == StateCode.SUCCESS) |
| | | if (pack.Code == StateCode.SUCCESS) |
| | | { |
| | | DelDeviceEvent?.Invoke(); |
| | | this.CloseForm(); |
| | | }else |
| | | var mes = ""; |
| | | if (Language.CurrentLanguage == "Chinese") |
| | | { |
| | | mes = "设备删除成功。"; |
| | | } |
| | | else |
| | | { |
| | | mes = "Device deleted successfully."; |
| | | } |
| | | var tip = new Tip() |
| | | { |
| | | Text = mes, |
| | | CloseTime = 2, |
| | | Direction = AMPopTipDirection.None |
| | | }; |
| | | tip.Show(MainPage.BaseView); |
| | | } |
| | | else |
| | | { |
| | | IMessageCommon.Current.ShowErrorInfoAlter(pack.Code); |
| | | } |
| | |
| | | form1.AddForm(device); |
| | | form1.AddDeviceEvent = (functionObj) => { |
| | | refreshView.BeginHeaderRefreshing(); |
| | | this.RemoveFromParent(); |
| | | }; |
| | | break; |
| | | } |
| | |
| | | }; |
| | | fLayout.AddChidren(succeedBtn); |
| | | #endregion |
| | | |
| | | #region 点击事件 |
| | | //表示库列表索引值(目前只20个库) |
| | | int index = 1; |
| | |
| | | { |
| | | var library = libraryList[index-1]; |
| | | var control = GetControl(spk, testBtn.TextID, library); |
| | | |
| | | if (spk == SPK.TvIr) |
| | | { |
| | | //备注:伟南要求小米电视换掉spk=ir.tvxm(听说是临时解决方案) |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | PirMethod method = new PirMethod(); |
| | | //发送库添加遥控器命令 |
| | | method.ThreadAddControl(control, this, (device) => |
| | |
| | | /// </summary> |
| | | TextButton btnTotalValue; |
| | | /// <summary> |
| | | /// 总功耗-饼图 |
| | | /// </summary> |
| | | MyEchartsViewOn myEchartsView_Pie; |
| | | /// <summary> |
| | | /// 历史数据区域 |
| | | /// </summary> |
| | | FrameLayout diagramView; |
| | | /// <summary> |
| | | /// 曲线图 |
| | | /// </summary> |
| | | MyEchartsViewOn myLineEchartsView; |
| | | /// <summary> |
| | | /// 曲线图数据string |
| | | /// </summary> |
| | |
| | | /// <summary> |
| | | /// 历史数据图表 |
| | | /// </summary> |
| | | MyEchartsViewOn myEchartsView; |
| | | MyEchartsViewOn myEchartsView_Line; |
| | | /// <summary> |
| | | /// 曲线图是否展开 |
| | | /// </summary> |
| | |
| | | generalTableView = new FrameLayout() |
| | | { |
| | | Gravity = Gravity.CenterHorizontal, |
| | | Y = Application.GetRealHeight(16), |
| | | Y = Application.GetRealWidth(16), |
| | | Width = Application.GetRealWidth(343), |
| | | Height = Application.GetRealWidth(148),//419//148 |
| | | Radius = (uint)Application.GetRealWidth(5), |
| | |
| | | }; |
| | | generalTableView.AddChidren(btnRealTimeData); |
| | | |
| | | UpdataValue(); |
| | | |
| | | |
| | | var echartsView = new FrameLayout() |
| | | { |
| | |
| | | //Y = Application.GetRealWidth(16), |
| | | }; |
| | | generalTableView.AddChidren(echartsView); |
| | | myEchartsView = new MyEchartsViewOn() |
| | | myEchartsView_Pie = 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()); |
| | | } |
| | | |
| | | var echartsPie = new EchartsOption_Pie(); |
| | | var echartRootJson = echartsPie.InitDateJson(list); |
| | | //var echartRootJsonString = Newtonsoft.Json.JsonConvert.SerializeObject(echartRootJson); |
| | | myEchartsView.ShowWithOption(echartRootJson); |
| | | |
| | | myEchartsView_Pie.ShowWithOption(new EchartsOption_Pie().InitDateJson(list)); |
| | | |
| | | btnDrodDown = new Button() |
| | | { |
| | |
| | | showDiagramView(); |
| | | }; |
| | | |
| | | UpdataValue(); |
| | | #endregion |
| | | |
| | | |
| | |
| | | { |
| | | EnergyRow(energy, energyListView, index); |
| | | index++; |
| | | Control.Ins.SendReadCommand(energy); |
| | | new System.Threading.Thread(() => |
| | | { |
| | | Control.Ins.SendReadCommand(energy); |
| | | }) |
| | | { IsBackground = true }.Start(); |
| | | } |
| | | |
| | | |
| | |
| | | { |
| | | if (isUnfoldOrStow)//展开 |
| | | { |
| | | generalTableView.Height = Application.GetRealHeight(419); |
| | | generalTableView.Height = Application.GetRealWidth(419); |
| | | btnDrodDown.Y = Application.GetRealWidth(389); |
| | | btnDrodDown.IsSelected = true; |
| | | } |
| | | else |
| | | { |
| | | generalTableView.Height = Application.GetRealHeight(148); |
| | | generalTableView.Height = Application.GetRealWidth(148); |
| | | btnDrodDown.Y = Application.GetRealWidth(118); |
| | | btnDrodDown.IsSelected = false; |
| | | } |
| | |
| | | |
| | | diagramView = new FrameLayout() |
| | | { |
| | | Y = Application.GetRealHeight(136), |
| | | Y = Application.GetRealWidth(136), |
| | | Gravity = Gravity.CenterHorizontal, |
| | | Width = Application.GetRealWidth(343), |
| | | Height = Application.GetRealWidth(241), |
| | | Height = Application.GetRealWidth(281), |
| | | BackgroundColor = CSS_Color.MainBackgroundColor, |
| | | Radius = (uint)Application.GetRealWidth(12), |
| | | BorderColor = 0x00000000, |
| | |
| | | var historyDataView = new FrameLayout() |
| | | { |
| | | Gravity = Gravity.CenterHorizontal, |
| | | Y = Application.GetRealHeight(52), |
| | | //Width = Application.GetRealWidth(343 - 32), |
| | | Height = Application.GetRealHeight(178), |
| | | Y = Application.GetRealWidth(52), |
| | | Height = Application.GetRealWidth(190), |
| | | }; |
| | | diagramView.AddChidren(historyDataView); |
| | | |
| | | myEchartsView = new MyEchartsViewOn() { |
| | | Y = Application.GetRealHeight(10), |
| | | Height = Application.GetRealHeight(150), |
| | | myEchartsView_Line = new MyEchartsViewOn() |
| | | { |
| | | Y = Application.GetRealWidth(10), |
| | | Height = Application.GetRealWidth(180), |
| | | }; |
| | | |
| | | historyDataView.AddChidren(myEchartsView); |
| | | |
| | | historyDataView.AddChidren(myEchartsView_Line); |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | |
| | | Application.RunOnMainThread(() => |
| | | { |
| | | myEchartsView.ShowWithOption(opString); |
| | | myEchartsView_Line.ShowWithOption(opString); |
| | | }); |
| | | |
| | | return; |
| | |
| | | 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)"; |
| | |
| | | |
| | | Application.RunOnMainThread(() => |
| | | { |
| | | myEchartsView.ShowWithOption(opString); |
| | | myEchartsView_Line.ShowWithOption(opString); |
| | | }); |
| | | } |
| | | catch (Exception ex) |
| | |
| | | row.Y = btnLine.Bottom; |
| | | view.AddChidren(row); |
| | | listButton_value.Add(row.btnValue); |
| | | |
| | | Control.Ins.SendReadCommand(energy); |
| | | } |
| | | |
| | | |
| | |
| | | { |
| | | double totalValue = 0; |
| | | double realtimeValue = 0; |
| | | Dictionary<string, string> list = new Dictionary<string, string>();//饼图数据 |
| | | foreach (var ene in bodyView.energyList) |
| | | { |
| | | double power = 0; |
| | |
| | | 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.btnTotalValue.Width = bodyView.btnTotalValue.GetTextWidth() + Application.GetRealWidth(5); |
| | | bodyView.btnTotalValueUint.X = bodyView.btnTotalValue.Right; |
| | | //刷新饼图 |
| | | bodyView.myEchartsView_Pie.ShowWithOption(new EchartsOption_Pie().InitDateJson(list)); |
| | | |
| | | } |
| | | } |
| | | |
| | |
| | | top: '10%', |
| | | left: '10%', |
| | | right: '10%', |
| | | bottom: '10%', |
| | | bottom: '15%', |
| | | }, |
| | | xAxis: { |
| | | type: 'category', |
| | |
| | | Gravity = Gravity.CenterHorizontal, |
| | | Y = Application.GetRealHeight(52), |
| | | Width = Application.GetRealWidth(343 - 32), |
| | | Height = Application.GetRealHeight(270), |
| | | Height = Application.GetRealWidth(270), |
| | | }; |
| | | diagramView.AddChidren(historyDataView); |
| | | |
| | |
| | | pageView.AddChidren(view1); |
| | | var view2 = new FrameLayout(); |
| | | pageView.AddChidren(view2); |
| | | View1(view1, listVideo, video); |
| | | View2(view2, listCall, video); |
| | | ViewFrameLayout1(view1, listVideo, video); |
| | | ViewFrameLayout2(view2, listCall, video); |
| | | Button btn11 = new Button |
| | | { |
| | | X = Application.GetRealWidth(170), |
| | |
| | | /// <param name="view1">父控件</param> |
| | | /// <param name="list">门口机列表</param> |
| | | /// <param name="videoClouds">当前的可视对讲</param> |
| | | void View1(FrameLayout view1, List<FlVideo> list, VideoClouds videoClouds) |
| | | void ViewFrameLayout1(FrameLayout view1, List<FlVideo> list, VideoClouds videoClouds) |
| | | { |
| | | |
| | | |
| | | #region 布局界面 |
| | | var bjFl = new FrameLayout |
| | | { |
| | |
| | | #region |
| | | var fLayout = new FrameLayout |
| | | { |
| | | Width = Application.GetRealWidth(50), |
| | | Width = Application.GetRealWidth(96), |
| | | Height = Application.GetRealWidth(48), |
| | | X = Application.GetRealWidth(31 + (58 + 50) * j), |
| | | X = Application.GetRealWidth(20 + (26 + 28 + 42) * j), |
| | | Y = Application.GetRealHeight(20 + (48 + 24) * line), |
| | | |
| | | }; |
| | | fL.AddChidren(fLayout); |
| | | |
| | | var iconBtn = new Button |
| | | { |
| | | X = Application.GetRealWidth(11), |
| | | Gravity=Gravity.CenterHorizontal, |
| | | Width = Application.GetRealWidth(28), |
| | | Height = Application.GetRealWidth(28), |
| | | UnSelectedImagePath = "VideoIcon/weiqiangji.png", |
| | |
| | | var deviceNameBtn = new Button |
| | | { |
| | | Y = iconBtn.Bottom + Application.GetRealHeight(6), |
| | | Width = Application.GetRealWidth(50), |
| | | X = Application.GetRealWidth(6), |
| | | Width = Application.GetRealWidth(96-12), |
| | | Height = Application.GetRealHeight(14), |
| | | TextSize = TextSize.Text10, |
| | | TextColor = CSS.CSS_Color.TextualColor, |
| | |
| | | /// <param name="view2">父控件</param> |
| | | /// <param name="listCall">通话记录列表</param> |
| | | /// <param name="video">当前的可视对讲</param> |
| | | void View2(FrameLayout view2, List<CallView> listCall, VideoClouds video) |
| | | void ViewFrameLayout2(FrameLayout view2, List<CallView> listCall, VideoClouds video) |
| | | { |
| | | |
| | | var bjFl = new FrameLayout |