Crabtree/.DS_StoreBinary files differ
Crabtree/.vs/SmartHome/xs/UserPrefs.xml
@@ -1,35 +1,15 @@ <Properties StartupConfiguration="{9D9EF20B-6E65-4A65-92BF-567EBF1E1443}|Default"> <MonoDevelop.Ide.ItemProperties.ON.Droid AndroidDesignerPreferredDevice="Nexus 4" PreferredExecutionTarget="Android.4b65c46595" /> <MonoDevelop.Ide.ItemProperties.ON.Droid AndroidDesignerPreferredDevice="Nexus 4" PreferredExecutionTarget="Android.Android_Accelerated_Oreo" /> <MonoDevelop.Ide.Workbench> <Files> <File FileName="SmartHome/UI/SimpleControl/Phone/System/SystemRemote.cs" Line="181" Column="112" /> <File FileName="ON/Properties/AndroidManifest.xml" /> <File FileName="SmartHome/UI/SimpleControl/MqttCommon.cs" Line="293" Column="37" /> <File FileName="SmartHome/UI/SimpleControl/R.cs" /> </Files> <Pads> <Pad Id="ProjectPad"> <State name="__root__"> <Node name="SmartHome" expanded="True"> <Node name="ON.Droid" expanded="True" selected="True"> <Node name="Properties" expanded="True" /> </Node> <Node name="Shared" expanded="True"> <Node name="DLL" expanded="True" /> <Node name="HDL" expanded="True"> <Node name="Operation" expanded="True" /> </Node> <Node name="IO" expanded="True" /> <Node name="Net" expanded="True" /> <Node name="UI" expanded="True"> <Node name="SimpleControl" expanded="True"> <Node name="Phone" expanded="True"> <Node name="Light" expanded="True" /> <Node name="Register" expanded="True" /> <Node name="Room" expanded="True" /> <Node name="System" expanded="True" /> </Node> </Node> </Node> </Node> <Node name="ON.Droid" selected="True" /> </Node> </State> </Pad> @@ -43,7 +23,7 @@ <String>Shared.IOS/Shared.IOS.csproj</String> </DisabledProjects> <MonoDevelop.Ide.Workspace ActiveConfiguration="Release" /> <MonoDevelop.Ide.ItemProperties.ON.Ios automaticSigning="False" PreferredExecutionTarget="MonoDevelop.IPhone.IPhoneDeviceTarget.254b82433419c7ca1850b1dfb524c79b7aeb0640" /> <MonoDevelop.Ide.ItemProperties.ON.Ios automaticSigning="False" PreferredExecutionTarget="MonoDevelop.IPhone.IPhoneSimulatorTarget.446FF651-C1E0-4C68-805D-F62274849738" /> <MonoDevelop.Ide.DebuggingService.Breakpoints> <BreakpointStore /> </MonoDevelop.Ide.DebuggingService.Breakpoints> Crabtree/.vs/SmartHome/xs/sqlite3/storage.ideBinary files differ
Crabtree/CrabtreeOnCertificates:ProvisioningProfile/2020/CrabtreeOn_Distribution11DEC2019.mobileprovisionBinary files differ
Crabtree/CrabtreeOnCertificates:ProvisioningProfile/2020/Distribution_Certificate_iTunes.p12Binary files differ
Crabtree/CrabtreeOnCertificates:ProvisioningProfile/CertificatesDevlopment.p12Binary files differ
Crabtree/CrabtreeOnCertificates:ProvisioningProfile/CertificatesDistribution.p12Binary files differ
Crabtree/CrabtreeOnCertificates:ProvisioningProfile/CrabtreeOn_Development.mobileprovisionBinary files differ
Crabtree/CrabtreeOnCertificates:ProvisioningProfile/CrabtreeOn_Distribution.mobileprovisionBinary files differ
Crabtree/ON.Ios/Info.plist
@@ -17,9 +17,9 @@ <key>CFBundleIdentifier</key> <string>com.hdl.SimpleControl</string> <key>CFBundleShortVersionString</key> <string>2.5200203</string> <string>2.5200408</string> <key>CFBundleVersion</key> <string>2.50203</string> <string>2.50408</string> <key>LSRequiresIPhoneOS</key> <true/> <key>MinimumOSVersion</key> Crabtree/ON.Ios/ON.Ios.csproj
@@ -77,7 +77,7 @@ <WarningLevel>4</WarningLevel> <TreatWarningsAsErrors>false</TreatWarningsAsErrors> <DocumentationFile></DocumentationFile> <CodesignKey>iPhone Developer</CodesignKey> <CodesignKey>iPhone Developer: xuebiao huang (4P32GXQWWK)</CodesignKey> <MtouchFastDev>true</MtouchFastDev> <MtouchFastDev>true</MtouchFastDev> <MtouchProfiling>false</MtouchProfiling> @@ -107,6 +107,7 @@ <WarningsNotAsErrors></WarningsNotAsErrors> <OnDemandResourcesInitialInstallTags></OnDemandResourcesInitialInstallTags> <OnDemandResourcesPrefetchOrder></OnDemandResourcesPrefetchOrder> <CodesignProvision>Test</CodesignProvision> </PropertyGroup> <ItemGroup> <Reference Include="System" /> Crabtree/ON/Application.cs
@@ -3,8 +3,8 @@ using Android.Content; using Android.Net; using Android.OS; using CN.Jpush.Android.Api; using CN.Jpush.Android.Service; //using CN.Jpush.Android.Api; //using CN.Jpush.Android.Service; using Java.Lang; using Java.Util; using Java.Util.Zip; @@ -42,12 +42,26 @@ [Android.App.Application] public class Application : Android.App.Application { static void reStartApp (Android.App.Application application) { var intent = new Intent (application, typeof (BaseActivity)); intent.AddFlags (ActivityFlags.NewTask); application.StartActivity (intent); Android.OS.Process.KillProcess (Android.OS.Process.MyPid ()); } public Application (IntPtr handle, Android.Runtime.JniHandleOwnership ownerShip) : base (handle, ownerShip) { } public override void OnCreate () { initAll (); if (Shared.Application.Activity != null) { reStartApp (this); return; } //Shared.Application.IsGpsEnable = false; base.OnCreate (); initAll (); } /// <summary> @@ -113,12 +127,12 @@ init (); BaseActivity.OnCreateActoin += (activity, application) => { Microsoft.AppCenter.AppCenter.Start ("d0f0f0c5-88af-494b-93af-9a667801b7a3", typeof (Microsoft.AppCenter.Analytics.Analytics), typeof (Microsoft.AppCenter.Crashes.Crashes)); //保存获取的极光服务器上的注册ID到本地文件 var tokenID = JPushInterface.GetRegistrationID (activity); if (!string.IsNullOrEmpty (tokenID) && UserConfig.Instance.tokenID != tokenID) { UserConfig.Instance.tokenID = tokenID; UserConfig.Instance.SaveUserConfig (); } ////保存获取的极光服务器上的注册ID到本地文件 //var tokenID = JPushInterface.GetRegistrationID (activity); //if (!string.IsNullOrEmpty (tokenID) && UserConfig.Instance.tokenID != tokenID) { // UserConfig.Instance.tokenID = tokenID; // UserConfig.Instance.SaveUserConfig (); //} BaseActivity.NetworkStateChanged += (int obj) => { Utlis.WriteLine ("NetworkStateChanged " + obj); UserConfig.Instance.internetStatus = obj; @@ -153,9 +167,9 @@ Shared.Application.Skin = UserConfig.Instance.CurrentSkinName; SkinStyle.Current.ChangeColor (); UserConfig.Instance.phoneName = Android.OS.Build.Manufacturer; //设置极光调试模式,为false时只打印警告信息 JPushInterface.SetDebugMode (false); JPushInterface.Init (this);//保存手机名称到本地文件 ////设置极光调试模式,为false时只打印警告信息 //JPushInterface.SetDebugMode (false); //JPushInterface.Init (this);//保存手机名称到本地文件 //获取经纬度 Shared.Application.LocationAction = (arg1, arg2) => { @@ -183,7 +197,7 @@ void checkSomeInfo () { RemoteInfo.Current.ReadMsgList (UserConfig.Instance.tokenID, IsShowTip); JPushInterface.ClearAllNotifications (this); //JPushInterface.ClearAllNotifications (this); IsShowTip = true; var status = isNetworkAvailable (this); Crabtree/ON/MyReceiver.cs
@@ -1,61 +1,61 @@ using System; using Android.Content; using Android.OS; using CN.Jpush.Android.Api; using CN.Jpush.Android.Service; //using System; //using Android.Content; //using Android.OS; //using CN.Jpush.Android.Api; //using CN.Jpush.Android.Service; namespace com.hdl.on { //<receiver android:name="com.hdl.on.MyReceiver" android:exported="false" android:enabled="true" android:permission="android.permission.RECEIVE_BOOT_COMPLETED"> // <intent-filter> // <action android:name="cn.jpush.android.intent.REGISTRATION" /> // <action android:name="cn.jpush.android.intent.MESSAGE_RECEIVED" /> // <action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED" /> // <action android:name="cn.jpush.android.intent.NOTIFICATION_OPENED" /> // <action android:name="cn.jpush.android.intent.CONNECTION" /> // <category android:name="com.hdl.on" /> // <action android:name="android.intent.action.BOOT_COMPLETED"></action> // <category android:name="android.intent.category.LAUNCHER" /> // <action android:name="android.intent.action.USER_PRESENT" /> // <action android:name="android.media.RINGER_MODE_CHANGED" /> // </intent-filter> //</receiver> /* *创建一个广播 * 自定义接收器 * 如果不定义这个 Receiver,则: * 1) 默认用户会打开主界面 * 2) 接收不到自定义消息 */ //[BroadcastReceiver] //[IntentFilter(new string []{"cn.jpush.android.intent.REGISTRATION", "cn.jpush.android.intent.MESSAGE_RECEIVED","cn.jpush.android.intent.NOTIFICATION_RECEIVED","cn.jpush.android.intent.NOTIFICATION_OPENED","cn.jpush.android.intent.CONNECTION"})] public class MyReceiver : BroadcastReceiver { static string ACTION = "android.intent.action.BOOT_COMPLETED"; //namespace com.hdl.on //{ // //<receiver android:name="com.hdl.on.MyReceiver" android:exported="false" android:enabled="true" android:permission="android.permission.RECEIVE_BOOT_COMPLETED"> // // <intent-filter> // // <action android:name="cn.jpush.android.intent.REGISTRATION" /> // // <action android:name="cn.jpush.android.intent.MESSAGE_RECEIVED" /> // // <action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED" /> // // <action android:name="cn.jpush.android.intent.NOTIFICATION_OPENED" /> // // <action android:name="cn.jpush.android.intent.CONNECTION" /> // // <category android:name="com.hdl.on" /> // // <action android:name="android.intent.action.BOOT_COMPLETED"></action> // // <category android:name="android.intent.category.LAUNCHER" /> // // <action android:name="android.intent.action.USER_PRESENT" /> // // <action android:name="android.media.RINGER_MODE_CHANGED" /> // // </intent-filter> // //</receiver> // /* // *创建一个广播 // * 自定义接收器 // * 如果不定义这个 Receiver,则: // * 1) 默认用户会打开主界面 // * 2) 接收不到自定义消息 // */ // //[BroadcastReceiver] // //[IntentFilter(new string []{"cn.jpush.android.intent.REGISTRATION", "cn.jpush.android.intent.MESSAGE_RECEIVED","cn.jpush.android.intent.NOTIFICATION_RECEIVED","cn.jpush.android.intent.NOTIFICATION_OPENED","cn.jpush.android.intent.CONNECTION"})] // public class MyReceiver : BroadcastReceiver // { // static string ACTION = "android.intent.action.BOOT_COMPLETED"; public override void OnReceive (Context context, Intent intent) { Bundle bundle = intent.Extras; // public override void OnReceive (Context context, Intent intent) // { // Bundle bundle = intent.Extras; if (intent.Action == ACTION) { //开机自动服务自动启动,PushService是要启动的服务 Intent service = new Intent (context, typeof (PushService)); context.StartService (service); } // if (intent.Action == ACTION) { // //开机自动服务自动启动,PushService是要启动的服务 // Intent service = new Intent (context, typeof (PushService)); // context.StartService (service); // } //接收Registration Id if (JPushInterface.ActionRegistrationId == intent.Action) { string regId = bundle.GetString (JPushInterface.ExtraRegistrationId); } //用户点击打开了通知 else if (JPushInterface.ActionNotificationOpened == intent.Action) { Application.IsShowTip = false; Intent i = new Intent (context, typeof (Shared.BaseActivity));//Intent intent=new Intent( 起始组件对象 , 目标 Service.class); i.PutExtras (bundle); i.SetFlags (ActivityFlags.NewTask); context.StartActivity (i); } else { } } } } // //接收Registration Id // if (JPushInterface.ActionRegistrationId == intent.Action) { // string regId = bundle.GetString (JPushInterface.ExtraRegistrationId); // } // //用户点击打开了通知 // else if (JPushInterface.ActionNotificationOpened == intent.Action) { // Application.IsShowTip = false; // Intent i = new Intent (context, typeof (Shared.BaseActivity));//Intent intent=new Intent( 起始组件对象 , 目标 Service.class); // i.PutExtras (bundle); // i.SetFlags (ActivityFlags.NewTask); // context.StartActivity (i); // } else { // } // } // } //} Crabtree/ON/Properties/AndroidManifest.xml
@@ -1,9 +1,11 @@ <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.hdl.crabtreenew" android:versionName="2.504021" android:versionCode="202004021"> <uses-sdk android:minSdkVersion="23" android:targetSdkVersion="26" /> <!-- Required 一些系统要求的权限,此处是极光推送需求的权限,如访问网络等--> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.hdl.crabtreenew" android:versionName="2.504142" android:versionCode="202004142"> <uses-sdk android:minSdkVersion="23" android:targetSdkVersion="28" /> <!-- 在安卓P版本之后,必须要授予FOREGROUND_SERVICE权限,才能够使用前台服务 --> <uses-permission android:name="android.permission.FOREGROUND_SERVICE" /> <!-- Required 一些系统要求的权限,此处是极光推送需求的权限,如访问网络等 <permission android:name="com.hdl.crabtreenew.permission.JPUSH_MESSAGE" android:protectionLevel="signature" /> <uses-permission android:name="com.hdl.crabtreenew.permission.JPUSH_MESSAGE" /> <uses-permission android:name="com.hdl.crabtreenew.permission.JPUSH_MESSAGE" /> --> <uses-permission android:name="android.permission.RECEIVE_USER_PRESENT" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_SETTINGS" /> @@ -74,7 +76,7 @@ <uses-feature android:name="android.hardware.wifi" android:required="false" /> <uses-feature android:name="android.hardware.bluetooth" android:required="false" /> <application android:allowBackup="true" android:icon="@drawable/Icon" android:largeHeap="true" android:label="Crabtree-ON"> <activity android:name="com.videogo.UiKitActivity" android:configChanges="orientation|keyboardHidden" android:screenOrientation="portrait" android:theme="@android:style/Theme.NoTitleBar.Fullscreen" /> <!-- <activity android:name="com.videogo.UiKitActivity" android:configChanges="orientation|keyboardHidden" android:screenOrientation="portrait" android:theme="@android:style/Theme.NoTitleBar.Fullscreen" /> <activity android:name="com.videogo.LoginSelectActivity" android:configChanges="orientation|keyboardHidden" android:screenOrientation="portrait" android:theme="@android:style/Theme.NoTitleBar.Fullscreen" /> <activity android:name="com.videogo.main.EzvizWebViewActivity" android:configChanges="orientation|keyboardHidden" android:screenOrientation="portrait" android:theme="@android:style/Theme.NoTitleBar.Fullscreen" /> <activity android:name="com.videogo.remoteplayback.list.PlayBackListActivity" android:configChanges="orientation|keyboardHidden|screenSize" android:screenOrientation="nosensor" android:theme="@android:style/Theme.NoTitleBar.Fullscreen" /> @@ -104,51 +106,10 @@ <action android:name="com.videogo.action.OAUTH_SUCCESS_ACTION" /> <action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> </intent-filter> </receiver> </receiver> --> <!-- 自动更新 --> <provider android:name="android.support.v4.content.FileProvider" android:authorities="com.hdl.crabtreenew.fileProvider" android:grantUriPermissions="true" android:exported="false"> <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/file_paths" /> </provider> <activity android:name="cn.jpush.android.ui.PushActivity" android:configChanges="orientation|keyboardHidden" android:theme="@android:style/Theme.NoTitleBar" android:exported="false"> <intent-filter> <action android:name="cn.jpush.android.ui.PushActivity" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="com.hdl.crabtreenew" /> </intent-filter> </activity> <service android:name="cn.jpush.android.service.PushService" android:process=":mult"> <intent-filter> <action android:name="cn.jpush.android.intent.REGISTER" /> <action android:name="cn.jpush.android.intent.REPORT" /> <action android:name="cn.jpush.android.intent.PushService" /> <action android:name="cn.jpush.android.intent.PUSH_TIME" /> </intent-filter> </service> <service android:name="cn.jpush.android.service.DaemonService" android:enabled="true" android:exported="true"> <intent-filter> <action android:name="cn.jpush.android.intent.DaemonService" /> <category android:name="com.hdl.crabtreenew" /> </intent-filter> </service> <receiver android:name="cn.jpush.android.service.PushReceiver" android:enabled="true"> <intent-filter android:priority="1000"> <action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED_PROXY" /> <category android:name="com.hdl.crabtreenew" /> </intent-filter> <intent-filter> <action android:name="android.intent.action.USER_PRESENT" /> <action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> </intent-filter> <!-- Optional --> <intent-filter> <action android:name="android.intent.action.PACKAGE_ADDED" /> <action android:name="android.intent.action.PACKAGE_REMOVED" /> <data android:scheme="package" /> </intent-filter> </receiver> <activity android:name="cn.jpush.android.ui.PopWinActivity" android:exported="false" /> <receiver android:name="cn.jpush.android.service.AlarmReceiver" android:exported="false" /> <meta-data android:name="JPUSH_CHANNEL" android:value="developer-default" /> <meta-data android:name="JPUSH_APPKEY" android:value="bcb35a1721fb9edfe9756329" /> </application> </manifest> Crabtree/SmartHome.sln
@@ -13,10 +13,6 @@ EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ON.Ios", "ON.Ios\ON.Ios.csproj", "{1D83BF28-BA88-4152-BA41-D7EFE90A5437}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Shared.IOS", "Shared.IOS\Shared.IOS.csproj", "{0048AB87-2130-4437-8F01-8CADAB787004}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Shared.Droid", "Shared.Droid\Shared.Droid.csproj", "{B7B2BB29-2DF1-4235-A67B-E09C2EC1EBAF}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|iPhoneSimulator = Debug|iPhoneSimulator @@ -87,30 +83,6 @@ {1D83BF28-BA88-4152-BA41-D7EFE90A5437}.Debug|Any CPU.Build.0 = Debug|iPhoneSimulator {1D83BF28-BA88-4152-BA41-D7EFE90A5437}.Release|Any CPU.ActiveCfg = Release|iPhone {1D83BF28-BA88-4152-BA41-D7EFE90A5437}.Release|Any CPU.Build.0 = Release|iPhone {0048AB87-2130-4437-8F01-8CADAB787004}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU {0048AB87-2130-4437-8F01-8CADAB787004}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU {0048AB87-2130-4437-8F01-8CADAB787004}.Release|iPhone.ActiveCfg = Release|Any CPU {0048AB87-2130-4437-8F01-8CADAB787004}.Release|iPhone.Build.0 = Release|Any CPU {0048AB87-2130-4437-8F01-8CADAB787004}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU {0048AB87-2130-4437-8F01-8CADAB787004}.Release|iPhoneSimulator.Build.0 = Release|Any CPU {0048AB87-2130-4437-8F01-8CADAB787004}.Debug|iPhone.ActiveCfg = Debug|Any CPU {0048AB87-2130-4437-8F01-8CADAB787004}.Debug|iPhone.Build.0 = Debug|Any CPU {0048AB87-2130-4437-8F01-8CADAB787004}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {0048AB87-2130-4437-8F01-8CADAB787004}.Debug|Any CPU.Build.0 = Debug|Any CPU {0048AB87-2130-4437-8F01-8CADAB787004}.Release|Any CPU.ActiveCfg = Release|Any CPU {0048AB87-2130-4437-8F01-8CADAB787004}.Release|Any CPU.Build.0 = Release|Any CPU {B7B2BB29-2DF1-4235-A67B-E09C2EC1EBAF}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU {B7B2BB29-2DF1-4235-A67B-E09C2EC1EBAF}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU {B7B2BB29-2DF1-4235-A67B-E09C2EC1EBAF}.Release|iPhone.ActiveCfg = Release|Any CPU {B7B2BB29-2DF1-4235-A67B-E09C2EC1EBAF}.Release|iPhone.Build.0 = Release|Any CPU {B7B2BB29-2DF1-4235-A67B-E09C2EC1EBAF}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU {B7B2BB29-2DF1-4235-A67B-E09C2EC1EBAF}.Release|iPhoneSimulator.Build.0 = Release|Any CPU {B7B2BB29-2DF1-4235-A67B-E09C2EC1EBAF}.Debug|iPhone.ActiveCfg = Debug|Any CPU {B7B2BB29-2DF1-4235-A67B-E09C2EC1EBAF}.Debug|iPhone.Build.0 = Debug|Any CPU {B7B2BB29-2DF1-4235-A67B-E09C2EC1EBAF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {B7B2BB29-2DF1-4235-A67B-E09C2EC1EBAF}.Debug|Any CPU.Build.0 = Debug|Any CPU {B7B2BB29-2DF1-4235-A67B-E09C2EC1EBAF}.Release|Any CPU.ActiveCfg = Release|Any CPU {B7B2BB29-2DF1-4235-A67B-E09C2EC1EBAF}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(MonoDevelopProperties) = preSolution Policies = $0 Crabtree/SmartHome/HDL/Operation/.DS_StoreBinary files differ
Crabtree/SmartHome/HDL/Operation/Device/Room.cs
@@ -11,7 +11,7 @@ /// <summary> /// 房间对象 /// </summary> public class Room public class Room { public static string FavoriteRoom = "FavoriteRoom"; @@ -24,6 +24,8 @@ { GetRoomByFilePath (roomFilePath); } // 房间命名规则 typeof (Room).Name + "_" + etNameBox.Text.Trim (); /// <summary> @@ -84,6 +86,12 @@ break; } } //if( IO.FileUtils.ReadFiles ().FindAll ((obj) => obj.Split ('_').Length == 5 && obj.Split ('_') [0] == "Equipment" && obj.Split ('_') [1] == DeviceType.SuperWireless.ToString ()).Count > 0) { // UserConfig.Instance.HideDeviceTypes.Remove (SimpleControl.R.MyInternationalizationString.SuperWireless); // UserConfig.Instance.HideDeviceTypes.Remove (SimpleControl.R.MyInternationalizationString.Sonos); // UserConfig.Instance.SaveUserConfig (); //} return nowRoom; } catch { return null; @@ -159,13 +167,16 @@ } else if (deviceType == DeviceType.LightSwitch.ToString ()){ var common = Newtonsoft.Json.JsonConvert.DeserializeObject<LightSwitch> (jsonInfo); room.DeviceList.Add (common); } else if (deviceType == DeviceType.LightMixSwitch.ToString () ){ } else if (deviceType == DeviceType.LogicModule.ToString()) { var common = Newtonsoft.Json.JsonConvert.DeserializeObject<LogicModule>(jsonInfo); room.DeviceList.Add(common); } else if (deviceType == DeviceType.LightMixSwitch.ToString () ){ var common = Newtonsoft.Json.JsonConvert.DeserializeObject<LightMixSwitch> (jsonInfo); room.DeviceList.Add (common); } else if ( deviceType == DeviceType.LightEnergySocket.ToString ()) { var common = Newtonsoft.Json.JsonConvert.DeserializeObject<LightEnergySocket> (jsonInfo); room.DeviceList.Add (common); } else if (deviceType == DeviceType.LightEnergySwitch.ToString ()) { } else if ( deviceType == DeviceType.LightEnergySwitch.ToString ()) { var common = Newtonsoft.Json.JsonConvert.DeserializeObject<LightEnergySwitch> (jsonInfo); room.DeviceList.Add (common); } else if (deviceType == DeviceType.CurtainModel.ToString ()) { @@ -210,7 +221,16 @@ room.DeviceList.Add (Newtonsoft.Json.JsonConvert.DeserializeObject<SensorHumidity> (jsonInfo)); } else if (deviceType == DeviceType.FreshAir.ToString ()) { room.DeviceList.Add (Newtonsoft.Json.JsonConvert.DeserializeObject<FreshAir> (jsonInfo)); } } //else if (deviceType == DeviceType.Thermostat.ToString ()) { // room.DeviceList.Add (Newtonsoft.Json.JsonConvert.DeserializeObject<Thermostat> (jsonInfo)); //} //else if (deviceType == DeviceType.ACMerrill.ToString ()) {//2020-03-10 新增美林空调系统支持 // room.DeviceList.Add (Newtonsoft.Json.JsonConvert.DeserializeObject<ACMerrill> (jsonInfo)); //} //else if (deviceType == DeviceType.DoorLockRelay.ToString ()) { //屏蔽继电器门锁 // room.DeviceList.Add (Newtonsoft.Json.JsonConvert.DeserializeObject<LightDoorLock> (jsonInfo)); //} for (int i = UserConfig.Instance.HideDeviceTypes.Count - 1; i >= 0; i--) { var hideType = UserConfig.Instance.HideDeviceTypes [i]; @@ -228,7 +248,10 @@ /// <summary> /// 房间名 /// </summary> public string Name { get; set; } public string Name { get; set; } public string RoomFilePath { get { @@ -238,42 +261,7 @@ } } /// <summary> /// 不选择到房间时候的背景图 /// </summary> public string UnSelectedBackgroundImage { get; set; } /// <summary> /// 选择到房间的时候背景图 /// </summary> public string SelectedBackgroundImage { get; set; } /// <summary> /// 不选择到房间下拉列表时候的背景图 /// </summary> public string UnSelectedListBackgroundImage { get; set; } /// <summary> /// 选择到房间的下拉列表时候背景图 /// </summary> public string SelectedListBackgroundImage { get; set; } /// <summary> /// 图标 /// </summary> public string IconPath = "DefaultRoomIcon.png"; /// <summary> /// 房间背景 /// </summary> @@ -350,6 +338,9 @@ { roomFilePathList = new List<string> (); } if (roomFilePathList.Contains (roomFilePath)) return; roomFilePathList.Add (roomFilePath); //var sssddsa = IO.FileUtils.ReadFiles ().FindAll ((obj) => obj.Contains ("Room_")); @@ -427,26 +418,16 @@ Save (newRoomFilePath); } /// <summary> /// 所有的房间列表路径 /// </summary> /// <value>The room file path list.</value> public static System.Collections.Generic.List<string> FilePathList { get { var roomBytes = IO.FileUtils.ReadFile (roomListFilePath); string roombyteString = System.Text.Encoding.UTF8.GetString (roomBytes); var ddds = Newtonsoft.Json.JsonConvert.DeserializeObject<System.Collections.Generic.List<string>> (roombyteString); if (ddds == null) ddds = new List<string> (); if (!ddds.Contains (FavoriteRoom)) { ddds.Add (FavoriteRoom); if (!IO.FileUtils.Exists (FavoriteRoom)) { //默认添加对应的房间 new Room () { Name = "" }.Save (FavoriteRoom); } IO.FileUtils.WriteFileByBytes (roomListFilePath, System.Text.Encoding.UTF8.GetBytes (Newtonsoft.Json.JsonConvert.SerializeObject (ddds))); } return ddds; var rommBytes = IO.FileUtils.ReadFile (roomListFilePath); string rommbyteString = System.Text.Encoding.UTF8.GetString (rommBytes); return Newtonsoft.Json.JsonConvert.DeserializeObject<System.Collections.Generic.List<string>> (rommbyteString); } } @@ -456,44 +437,50 @@ public static void InitAllRoom () { Lists.Clear (); if (null == Newtonsoft.Json.JsonConvert.DeserializeObject<System.Collections.Generic.List<string>> (System.Text.Encoding.UTF8.GetString (IO.FileUtils.ReadFile (roomListFilePath)))) { //初始化房间列表 Shared.IO.FileUtils.WriteFileByBytes (roomListFilePath, System.Text.Encoding.UTF8.GetBytes (Newtonsoft.Json.JsonConvert.SerializeObject (new System.Collections.Generic.List<string> ()))); } var roomFilePathList = Newtonsoft.Json.JsonConvert.DeserializeObject<System.Collections.Generic.List<string>> (System.Text.Encoding.UTF8.GetString (IO.FileUtils.ReadFile (roomListFilePath))); if (!roomFilePathList.Contains (FavoriteRoom)) { roomFilePathList.Add (FavoriteRoom); if (!IO.FileUtils.Exists (FavoriteRoom)) { //默认添加对应的房间 new Room () { Name = "" }.Save (FavoriteRoom); try { if (null == Newtonsoft.Json.JsonConvert.DeserializeObject<System.Collections.Generic.List<string>> (System.Text.Encoding.UTF8.GetString (IO.FileUtils.ReadFile (roomListFilePath)))) { //初始化房间列表 Shared.IO.FileUtils.WriteFileByBytes (roomListFilePath, System.Text.Encoding.UTF8.GetBytes (Newtonsoft.Json.JsonConvert.SerializeObject (new System.Collections.Generic.List<string> ()))); } var roomFilePathList = Newtonsoft.Json.JsonConvert.DeserializeObject<System.Collections.Generic.List<string>> (System.Text.Encoding.UTF8.GetString (IO.FileUtils.ReadFile (roomListFilePath))); if (!roomFilePathList.Contains (FavoriteRoom)) { roomFilePathList.Add (FavoriteRoom); if (!IO.FileUtils.Exists (FavoriteRoom)) { //默认添加对应的房间 new Room () { Name = "" }.Save (FavoriteRoom); } IO.FileUtils.WriteFileByBytes (roomListFilePath, System.Text.Encoding.UTF8.GetBytes (Newtonsoft.Json.JsonConvert.SerializeObject (roomFilePathList))); } IO.FileUtils.WriteFileByBytes (roomListFilePath, System.Text.Encoding.UTF8.GetBytes (Newtonsoft.Json.JsonConvert.SerializeObject (roomFilePathList))); } foreach (var roomFilePath in roomFilePathList) { var room = GetRoomByFilePath (roomFilePath); if (null != room) { Lists.Add (room); } } for (int i = UserConfig.Instance.HideDeviceTypes.Count - 1; i >= 0; i--) { var hideType = UserConfig.Instance.HideDeviceTypes [i]; foreach (var room in Room.Lists) { var devices = room.DeviceList.Find ((obj) => { return obj.DeviceTextID == hideType; }); if (devices != null) { UserConfig.Instance.HideDeviceTypes.Remove (hideType); UserConfig.Instance.SaveUserConfig (); break; foreach (var roomFilePath in roomFilePathList) { var room = GetRoomByFilePath (roomFilePath); if (null != room) { Lists.Add (room); } } for (int i = UserConfig.Instance.HideDeviceTypes.Count - 1; i >= 0; i--) { var hideType = UserConfig.Instance.HideDeviceTypes [i]; foreach (var room in Room.Lists) { var devices = room.DeviceList.Find ((obj) => { return obj.DeviceTextID == hideType; }); if (devices != null) { UserConfig.Instance.HideDeviceTypes.Remove (hideType); UserConfig.Instance.SaveUserConfig (); break; } } } } catch { Utlis.WriteLine ("解析房间列表异常"); } } public void SaveLightScene (string roomFilePath, string SceneRemark, Scene scene) { IO.FileUtils.WriteFileByBytes (roomFilePath + "_" + SceneRemark, Encoding.UTF8.GetBytes (Newtonsoft.Json.JsonConvert.SerializeObject (scene))); Crabtree/SmartHome/HDL/Operation/UserConfig.cs
@@ -28,7 +28,7 @@ instance.HideDeviceTypes.Add (SimpleControl.R.MyInternationalizationString.Sensor); instance.HideDeviceTypes.Add (SimpleControl.R.MyInternationalizationString.Environmental); instance.HideDeviceTypes.Add (SimpleControl.R.MyInternationalizationString.MusicModel); instance.HideDeviceTypes.Add (SimpleControl.R.MyInternationalizationString.UniversalDevice); //instance.HideDeviceTypes.Add (SimpleControl.R.MyInternationalizationString.UniversalDevice); } else { instance = temp; } Crabtree/SmartHome/HDL/Operation/Utlis.cs
@@ -45,7 +45,7 @@ public static void WriteLine (object mes) { #if DEBUG Utlis.WriteLine (mes); System.Console.WriteLine (mes); #endif } Crabtree/SmartHome/UI/SimpleControl/CommonPage.cs
@@ -2174,6 +2174,7 @@ IO.FileUtils.WriteFileByBytes (Scene.GlobalSceneFilePath, CommonPage.MyEncodingUTF8.GetBytes (Newtonsoft.Json.JsonConvert.SerializeObject (sceneFileList))); } } //Utlis.WriteLine ("接收"+path); FileUtils.WriteFileByInputStream (path, inputStream); Common common = Newtonsoft.Json.JsonConvert.DeserializeObject<Common> (CommonPage.MyEncodingUTF8.GetString (IO.FileUtils.ReadFile (path))); if (common.DeviceTextID == R.MyInternationalizationString.ElectricalControl) { Crabtree/SmartHome/UI/SimpleControl/EquipmentPublicClass.cs
@@ -153,6 +153,8 @@ if (UserConfig.Instance.CheckHomeGateways ()) { if (!string.IsNullOrEmpty (UserConfig.Instance.CurrentRegion.HomeGateways [0].GatewayUniqueId)) { // 5.1能远程,显示CloudUnlink状态,IsRemote设为true开始远程 MainPage.AddTip ("Starting remote connection mode..."); Utlis.ShowAppLinkStatus (AppLinkStatus.CloudUnlink); CommonPage.IsRemote = true; SmartHome.MqttCommon.IsGatewayOnline = false; Crabtree/SmartHome/UI/SimpleControl/MainPage.cs
@@ -37,7 +37,7 @@ //public static Button LogoButton = new Button (); public static string RequestVersion = "20200402"; public static string RequestVersion = "20200414"; public static UserInfo LoginUser; /// <summary> /// 是否是管理员权限(变更了,成员的时候,这个也为ture。为什么会声明这样变量,因为有些接口必须使用原来的Token) @@ -166,11 +166,13 @@ Gravity = Gravity.Center, Width = Application.GetRealWidth (560), Height = Application.GetRealHeight (126), BackgroundColor = SkinStyle.Current.AddTipButtonColor, //BackgroundColor = SkinStyle.Current.AddTipButtonColor, BackgroundColor = SkinStyle.Current.MainColor, Radius = 10, IsMoreLines = true, Text = tip, TextSize = 16, TextColor = 0xFF000000 }; MainFrameLayout.AddChidren (button); button.MouseUpEventHandler += (sender, e) => { Crabtree/SmartHome/UI/SimpleControl/MqttCommon.cs
@@ -45,7 +45,7 @@ static MqttCommon () { InitMqtt (); InitCheckGateway (); //InitCheckGateway (); } /// <summary> @@ -177,161 +177,176 @@ await System.Threading.Tasks.Task.Factory.StartNew (async () => { try { //lock (RemoteMqttClient) { //表示后面将进行连接 //表示后面将进行连接 #region 初始化远程Mqtt //(3)当[连接云端的Mqtt成功后]或者[以及后面App通过云端Mqtt转发数据给网关成功后],处理接收到云端数据包响应时在mqttServerClient_ApplicationMessageReceived这个方法处理 if (RemoteMqttClient.ApplicationMessageReceivedHandler == null) { RemoteMqttClient.UseApplicationMessageReceivedHandler (async (e) => { try { if (!RemoteMqttClient.IsConnected || !CommonPage.IsRemote) { return; #region 初始化远程Mqtt //(3)当[连接云端的Mqtt成功后]或者[以及后面App通过云端Mqtt转发数据给网关成功后],处理接收到云端数据包响应时在mqttServerClient_ApplicationMessageReceived这个方法处理 if (RemoteMqttClient.ApplicationMessageReceivedHandler == null) { RemoteMqttClient.UseApplicationMessageReceivedHandler (async (e) => { try { if (!RemoteMqttClient.IsConnected || !CommonPage.IsRemote) { return; } var aesDecryptTopic = e.ApplicationMessage.Topic; var aesDecryptPayload = e.ApplicationMessage.Payload; //Utlis.WriteLine ("Topic={0}", aesDecryptTopic); //if (aesDecryptTopic == $"NotifyBusGateWayInfoChagne/{CurRemoteMACInfo.md5_mac_string}") {//网关上线,需要更新aeskey //2020-01-11 修改订阅主题地址 if (aesDecryptTopic == $"/BusGateWayToClient/{CurRemoteMACInfo.macMark}/NotifyBusGateWayInfoChange") {//网关上线,需要更新aeskey //----第二步:读取账号下面的网关列表 await ReceiveNotifyBusGateWayInfoChange (); } else if (aesDecryptTopic == $"/BusGateWayToClient/{CurRemoteMACInfo.macMark}/NotifyGateWayOffline") {//网关掉线 //----第二步:读取账号下面的网关列表 ReceiveNotifyGateWayOffline (); } else if (aesDecryptTopic == $"/BusGateWayToClient/{mMqttInfo.connEmqClientId}/Push/NotifySqueeze") {//订阅挤下线问题 await ReceiveNotifySqueezeAsync (aesDecryptPayload); } else if (aesDecryptTopic == $"/BusGateWayToClient/{CurRemoteMACInfo.macMark}/Common/CheckGateway") { ReceiveCheckGatewayTopic (); } else { SetGatewayOnlineResetCheck (); if (!string.IsNullOrEmpty (mqttEncryptKey)) { aesDecryptPayload = Shared.Securitys.EncryptionService.AesDecryptPayload (e.ApplicationMessage.Payload, mqttEncryptKey); } var aesDecryptTopic = e.ApplicationMessage.Topic; var aesDecryptPayload = e.ApplicationMessage.Payload; //Utlis.WriteLine ("Topic={0}", aesDecryptTopic); //if (aesDecryptTopic == $"NotifyBusGateWayInfoChagne/{CurRemoteMACInfo.md5_mac_string}") {//网关上线,需要更新aeskey //2020-01-11 修改订阅主题地址 if (aesDecryptTopic == $"/BusGateWayToClient/{CurRemoteMACInfo.macMark}/NotifyBusGateWayInfoChange") {//网关上线,需要更新aeskey //----第二步:读取账号下面的网关列表 await ReceiveNotifyBusGateWayInfoChange (); } else if (aesDecryptTopic == $"/BusGateWayToClient/{CurRemoteMACInfo.macMark}/NotifyGateWayOffline") {//网关掉线 //----第二步:读取账号下面的网关列表 ReceiveNotifyGateWayOffline (); } else if (aesDecryptTopic == $"/BusGateWayToClient/{mMqttInfo.connEmqClientId}/Push/NotifySqueeze") {//订阅挤下线问题 await ReceiveNotifySqueezeAsync (aesDecryptPayload); }else if (aesDecryptTopic == $"/BusGateWayToClient/{CurRemoteMACInfo.macMark}/Common/CheckGateway") { ReceiveCheckGatewayTopic (); } else { SetGatewayOnlineResetCheck (); var packet = new Packet (); packet.IsLocal = false; packet.Bytes = aesDecryptPayload; packet.Manager (); if (!string.IsNullOrEmpty (mqttEncryptKey)) { aesDecryptPayload = Shared.Securitys.EncryptionService.AesDecryptPayload (e.ApplicationMessage.Payload, mqttEncryptKey); } } var packet = new Packet (); packet.IsLocal = false; packet.Bytes = aesDecryptPayload; packet.Manager (); } catch { } }); } if (RemoteMqttClient.DisconnectedHandler == null) { RemoteMqttClient.UseDisconnectedHandler (async (e) => { Utlis.WriteLine ($"============>Mqtt远程连接断开"); isSubscribeTopicSuccess = false; await DisConnectRemoteMqttClient ("StartRemoteMqtt.DisconnectedHandler"); //await StartRemoteMqtt(); //if (thisShowTip) { // if (CommonPage.IsRemote) { // Application.RunOnMainThread (() => { // MainPage.Loading.Hide (); // }); // } //} else { // thisShowTip = true; //} }); } if (RemoteMqttClient.ConnectedHandler == null) { RemoteMqttClient.UseConnectedHandler (async (e) => { IfNeedReadAllDeviceStatus = true; mCheckGatewayTime = DateTime.Now; CheckGatewayCount = 0; bNeedStartTip = true; Utlis.WriteLine ($"============>Mqtt远程连接成功"); if (CommonPage.IsRemote) { Utlis.ShowAppLinkStatus (AppLinkStatus.CloudLink); } if (CurRemoteMACInfo != null) { IsGatewayOnline = CurRemoteMACInfo.isValid != "InValid"; if (!IsGatewayOnline) { //网关不在线 if (CommonPage.IsRemote) { Utlis.ShowAppLinkStatus (AppLinkStatus.CloudOffline); } } catch { } }); } MainPage.AddTip ("Remote failed,gateway offline"); } else { //Remote Connection Succeeded if (RemoteMqttClient.DisconnectedHandler == null) { RemoteMqttClient.UseDisconnectedHandler (async (e) => { Utlis.WriteLine ($"============>Mqtt远程连接断开"); isSubscribeTopicSuccess = false; await DisConnectRemoteMqttClient ("StartRemoteMqtt.DisconnectedHandler"); //await StartRemoteMqtt(); //if (thisShowTip) { // if (CommonPage.IsRemote) { // Application.RunOnMainThread (() => { // MainPage.Loading.Hide (); // }); // } //网关在线 //重新一次所有设备状态 IfNeedReadAllDeviceStatus = false; Shared.SimpleControl.Phone.UserMiddle.ReadAllDeviceStatus (); // MqttRemoteSend (new byte [] { 0 }, 3); if (CommonPage.IsRemote) { MainPage.AddTip (Language.StringByID (Shared.SimpleControl.R.MyInternationalizationString.LinkSuccess)); } } //if (CurRemoteMACInfo.isValid == "InValid") { // MainPage.AddTip ("Remote failed,gateway offline"); //} else { // thisShowTip = true; // MqttRemoteSend (new byte [] { 0 }, 3); //} }); } if (RemoteMqttClient.ConnectedHandler == null) { RemoteMqttClient.UseConnectedHandler (async (e) => { IfNeedReadAllDeviceStatus = true; Utlis.WriteLine ($"============>Mqtt远程连接成功"); if (CommonPage.IsRemote) { Utlis.ShowAppLinkStatus (AppLinkStatus.CloudLink); } if (CurRemoteMACInfo != null) { IsGatewayOnline = CurRemoteMACInfo.isValid != "InValid"; if (!IsGatewayOnline) { //网关不在线 if (CommonPage.IsRemote) { Utlis.ShowAppLinkStatus (AppLinkStatus.CloudOffline); } MainPage.AddTip ("Remote failed,gateway offline"); } else { //网关在线 //重新一次所有设备状态 IfNeedReadAllDeviceStatus = false; Shared.SimpleControl.Phone.UserMiddle.ReadAllDeviceStatus (); // MqttRemoteSend (new byte [] { 0 }, 3); } //if (CurRemoteMACInfo.isValid == "InValid") { // MainPage.AddTip ("Remote failed,gateway offline"); //} else { // MqttRemoteSend (new byte [] { 0 }, 3); //} } } }); } #endregion }); } #endregion //} //正在获取连接参数..." ShowStartTip (); mqttRequestParToken = MainPage.LoginUser.LoginTokenString; //--第一步:获取mqtt链接参数 var mqttInfoRequestResult = new ResponsePack () { StateCode = "" }; //--判断是当前是否分享的住宅 if (!UserConfig.Instance.CurrentRegion.IsOthreShare) { var mqttInfoUrl = $"{MainPage.RequestHttpsHost}/EmqMqtt/GetConnMqttInfo";//获取连接远程云端Emq Mqtt 服务器连接信息 var mqttInfoRequestPar = new GetConnMqttInfoObj () { LoginAccessToken = mqttRequestParToken, PlatformStr = "L1", PublishPayloadJsonStr = PushSignStr, }; mqttInfoRequestResult = MainPage.RequestHttps ("", Newtonsoft.Json.JsonConvert.SerializeObject (mqttInfoRequestPar), mqttInfoUrl); if (mqttInfoRequestResult != null && mqttInfoRequestResult.ResponseData != null) { var mqttInfoRequestResult_info = Newtonsoft.Json.JsonConvert.DeserializeObject<MqttInfo> (mqttInfoRequestResult.ResponseData.ToString ()); if (mqttInfoRequestResult_info != null) { mMqttInfo = mqttInfoRequestResult_info; //----第二步:读取账号下面的网关列表 var gatewayListUrl = $"{MainPage.RequestHttpsHostMqtt}/Center/Center/GetGatewayPagger"; //App、Buspro软件登录后获取网关列表 http 请求 var gatewayListRequestPar = new RemoteRequestParameters () { LoginAccessToken = mqttRequestParToken, RequestVersion = "RequestVersion1", RequestProtocolType = 0, RequestSource = 1 }; var gatewayListRequestResult = MainPage.RequestHttps ("", Newtonsoft.Json.JsonConvert.SerializeObject (gatewayListRequestPar), gatewayListUrl); var gatewayListRequestResult_Obj = Newtonsoft.Json.JsonConvert.DeserializeObject<MqttRemoteInfo> (gatewayListRequestResult.ResponseData.ToString ()); //--找出是否存在匹配当前住宅的mac,存在再进行远程。 if (UserConfig.Instance.CheckHomeGatewaysNotEmpty ()) { CurRemoteMACInfo = gatewayListRequestResult_Obj.pageData.Find ((obj) => obj.mac == UserConfig.Instance.CurrentRegion.HomeGateways [0].GatewayUniqueId); //CurRemoteMACInfo = gatewayListRequestResult_Obj.pageData [0]; await MQTTConnectAsync (); mqttRequestParToken = MainPage.LoginUser.LoginTokenString; //--第一步:获取mqtt链接参数 var mqttInfoRequestResult = new ResponsePack () { StateCode = "" }; //--判断是当前是否分享的住宅 if (!UserConfig.Instance.CurrentRegion.IsOthreShare) { var mqttInfoUrl = $"{MainPage.RequestHttpsHost}/EmqMqtt/GetConnMqttInfo";//获取连接远程云端Emq Mqtt 服务器连接信息 var mqttInfoRequestPar = new GetConnMqttInfoObj () { LoginAccessToken = mqttRequestParToken, PlatformStr = "L1", PublishPayloadJsonStr = PushSignStr, }; mqttInfoRequestResult = MainPage.RequestHttps ("", Newtonsoft.Json.JsonConvert.SerializeObject (mqttInfoRequestPar), mqttInfoUrl); if (mqttInfoRequestResult != null && mqttInfoRequestResult.ResponseData != null) { var mqttInfoRequestResult_info = Newtonsoft.Json.JsonConvert.DeserializeObject<MqttInfo> (mqttInfoRequestResult.ResponseData.ToString ()); if (mqttInfoRequestResult_info != null) { mMqttInfo = mqttInfoRequestResult_info; //----第二步:读取账号下面的网关列表 var gatewayListUrl = $"{MainPage.RequestHttpsHostMqtt}/Center/Center/GetGatewayPagger"; //App、Buspro软件登录后获取网关列表 http 请求 var gatewayListRequestPar = new RemoteRequestParameters () { LoginAccessToken = mqttRequestParToken, RequestVersion = "RequestVersion1", RequestProtocolType = 0, RequestSource = 1 }; var gatewayListRequestResult = MainPage.RequestHttps ("", Newtonsoft.Json.JsonConvert.SerializeObject (gatewayListRequestPar), gatewayListUrl); var gatewayListRequestResult_Obj = Newtonsoft.Json.JsonConvert.DeserializeObject<MqttRemoteInfo> (gatewayListRequestResult.ResponseData.ToString ()); //--找出是否存在匹配当前住宅的mac,存在再进行远程。 if (UserConfig.Instance.CheckHomeGatewaysNotEmpty ()) { CurRemoteMACInfo = gatewayListRequestResult_Obj.pageData.Find ((obj) => obj.mac == UserConfig.Instance.CurrentRegion.HomeGateways [0].GatewayUniqueId); //CurRemoteMACInfo = gatewayListRequestResult_Obj.pageData [0]; await MQTTConnectAsync (); } else { Utlis.WriteLine ("============>Mqtt 取消连接,当前住宅没绑定网关"); } } else { Utlis.WriteLine ("============>Mqtt 取消连接,当前住宅没绑定网关"); } } else { Utlis.WriteLine ("============>Mqtt GetGatewayPagger 失败"); } } else { //如果是分享过来的住宅 走下面流程 var mqttInfoRequestPar = new ShareMemberConnMqttInfoObj () { LoginAccessToken = mqttRequestParToken, PlatformStr = "L1", PublishPayloadJsonStr = PushSignStr, MainUserDistributedMark = UserConfig.Instance.CurrentRegion.MainUserDistributedMark, HomeId = UserConfig.Instance.CurrentRegion.Id }; mqttInfoRequestResult = MainPage.RequestHttps (API.ShareMemberConnMqttInfo, Newtonsoft.Json.JsonConvert.SerializeObject (mqttInfoRequestPar)); //--第一步:获取mqtt链接参数 if (mqttInfoRequestResult != null && mqttInfoRequestResult.ResponseData != null) { var mqttInfoRequestResult_info = Newtonsoft.Json.JsonConvert.DeserializeObject<MqttInfo> (mqttInfoRequestResult.ResponseData.ToString ()); if (mqttInfoRequestResult_info != null) { mMqttInfo = mqttInfoRequestResult_info; //--第二步:获取当前住分享宅网关信息并连接MQTT await GetSingleHomeGatewayPaggerAndMQTTConnectAsync (); } Utlis.WriteLine ("============>Mqtt GetInfo 失败"); } } else { //如果是分享过来的住宅 走下面流程 var mqttInfoRequestPar = new ShareMemberConnMqttInfoObj () { LoginAccessToken = mqttRequestParToken, PlatformStr = "L1", PublishPayloadJsonStr = PushSignStr, MainUserDistributedMark = UserConfig.Instance.CurrentRegion.MainUserDistributedMark, HomeId = UserConfig.Instance.CurrentRegion.Id }; mqttInfoRequestResult = MainPage.RequestHttps (API.ShareMemberConnMqttInfo, Newtonsoft.Json.JsonConvert.SerializeObject (mqttInfoRequestPar)); //--第一步:获取mqtt链接参数 if (mqttInfoRequestResult != null && mqttInfoRequestResult.ResponseData != null) { var mqttInfoRequestResult_info = Newtonsoft.Json.JsonConvert.DeserializeObject<MqttInfo> (mqttInfoRequestResult.ResponseData.ToString ()); if (mqttInfoRequestResult_info != null) { mMqttInfo = mqttInfoRequestResult_info; //--第二步:获取当前住分享宅网关信息并连接MQTT await GetSingleHomeGatewayPaggerAndMQTTConnectAsync (); } } } } catch (Exception ex) { Utlis.WriteLine ($"============>Mqtt 远程连接通讯连接出异常:{ex.Message}"); @@ -349,6 +364,9 @@ { if (CurRemoteMACInfo != null && mMqttInfo != null) { MainPage.AddTip ("Successfully obtained parameters, starting to connect..."); var url = mMqttInfo.connEmqDomainPort; var clientId = mMqttInfo.connEmqClientId; var username = mMqttInfo.connEmqUserName; @@ -375,6 +393,27 @@ } } // 571=Starting remote connection mode... //572=Getting remote connection parameters... //573=Successfully obtained parameters, starting to connect... /// <summary> /// 从开始到连接成功,只提示1次 /// </summary> static bool bNeedStartTip = true; /// <summary> /// 正在获取连接参数... /// </summary> static void ShowStartTip () { if (bNeedStartTip) { bNeedStartTip = false; if (CommonPage.IsRemote) { MainPage.AddTip ("Getting remote connection parameters..."); } } } ///// <summary> ///// @@ -638,7 +677,7 @@ if (CheckGatewayCount >= 3) { //连续3次没回复,判定网关超时 if (MainPage.WiFiStatus == "CrabtreeAdd/CloudLink.png") { IsGatewayOnline = false; //IsGatewayOnline = false; Utlis.ShowAppLinkStatus (AppLinkStatus.CloudOffline); MainPage.AddTip ("Gateway offline!"); } @@ -672,7 +711,6 @@ //Utlis.WriteLine ("============>Mqtt CheckGateway网关回复"); SetGatewayOnlineResetCheck (); //旧网关方法 //MainPage.WiFiStatus = "CrabtreeAdd/CloudUnlink.png"; Crabtree/SmartHome/UI/SimpleControl/Phone/Light/UserDeviceToLight.cs
@@ -92,7 +92,7 @@ if (light.Type == DeviceType.LightDimming || light.Type == DeviceType.LightMixDimming || light.Type == DeviceType.LightDALI) { if ((light as LightDimming).CurrentBrightness > 0) brighingCount++; } else if (light.Type == DeviceType.LightSwitch || light.Type == DeviceType.LightMixSwitch) } else if (light.Type == DeviceType.LightSwitch || light.Type == DeviceType.LightMixSwitch || light.Type == DeviceType.LightEnergySwitch) if ((light as LightSwitch).CurrentBrightness == 100) brighingCount++; if (light.Type == DeviceType.LightRGB) Crabtree/SmartHome/UI/SimpleControl/Phone/Room/UserRoom.cs
@@ -1821,7 +1821,7 @@ } }; #endregion } else if (devcieCommon.Type == DeviceType.LightSwitch || } else if (devcieCommon.Type == DeviceType.LightSwitch || devcieCommon.Type == DeviceType.LightEnergySocket || devcieCommon.Type == DeviceType.LightEnergySwitch || devcieCommon.Type == DeviceType.LightSwitchSocket) { #region 继电器 @@ -2049,14 +2049,14 @@ }; DeviceRowView.AddChidren (tempSwitch); if (udDevice.ActionType == 0) { tempSwitch.Text = udDevice.ON_Text; //tempSwitch.TextID = R.MyInternationalizationString.ON; //tempSwitch.Text = udDevice.ON_Text; tempSwitch.TextID = R.MyInternationalizationString.ON; } else if (udDevice.ActionType == 1) { tempSwitch.Text = udDevice.OFF_Text; //tempSwitch.TextID = R.MyInternationalizationString.OFF; //tempSwitch.Text = udDevice.OFF_Text; tempSwitch.TextID = R.MyInternationalizationString.OFF; } else if (udDevice.ActionType == 2) { tempSwitch.Text = udDevice.OFF_Text; //tempSwitch.TextID = R.MyInternationalizationString.OFF; //tempSwitch.Text = udDevice.OFF_Text; tempSwitch.TextID = R.MyInternationalizationString.OFF; Button tempON = new Button () { Width = Application.GetRealWidth (110), @@ -2082,25 +2082,26 @@ DeviceRowView.BorderColor = SkinStyle.Current.SelectedColor; tempON.BorderColor = SkinStyle.Current.SelectedColor; }; tempSwitch.MouseUpEventHandler += (sender3, e3) => { if (udDevice.UniversalType == 0xE01C) { if (udDevice.ActionType == 0) { //2020-02-10 待修改 Control.ControlBytesSend (Command.SetCommonSwitch, udDevice.SubnetID, udDevice.DeviceID, new byte [] { udDevice.SendBytes [0], 255 }, SendCount.Zero); } else if (udDevice.ActionType == 1) { Control.ControlBytesSend (Command.SetCommonSwitch, udDevice.SubnetID, udDevice.DeviceID, new byte [] { udDevice.SendBytes [0], 0 }, SendCount.Zero); } else if (udDevice.ActionType == 2) { Control.ControlBytesSend (Command.SetCommonSwitch, udDevice.SubnetID, udDevice.DeviceID, new byte [] { udDevice.SendBytes [0], 0 }, SendCount.Zero); } } DeviceRowView.BorderColor = SkinStyle.Current.Transparent; tempSwitch.BorderColor = SkinStyle.Current.BorderColor; }; tempSwitch.MouseDownEventHandler += (sende3r, e3) => { DeviceRowView.BorderColor = SkinStyle.Current.SelectedColor; tempSwitch.BorderColor = SkinStyle.Current.SelectedColor; }; } tempSwitch.MouseUpEventHandler += (sender3, e3) => { if (udDevice.UniversalType == 0xE01C) { if (udDevice.ActionType == 0) { //2020-02-10 待修改 Control.ControlBytesSend (Command.SetCommonSwitch, udDevice.SubnetID, udDevice.DeviceID, new byte [] { udDevice.SendBytes [0], 255 }, SendCount.Zero); } else if (udDevice.ActionType == 1) { Control.ControlBytesSend (Command.SetCommonSwitch, udDevice.SubnetID, udDevice.DeviceID, new byte [] { udDevice.SendBytes [0], 0 }, SendCount.Zero); } else if (udDevice.ActionType == 2) { Control.ControlBytesSend (Command.SetCommonSwitch, udDevice.SubnetID, udDevice.DeviceID, new byte [] { udDevice.SendBytes [0], 0 }, SendCount.Zero); } } DeviceRowView.BorderColor = SkinStyle.Current.Transparent; tempSwitch.BorderColor = SkinStyle.Current.BorderColor; }; tempSwitch.MouseDownEventHandler += (sende3r, e3) => { DeviceRowView.BorderColor = SkinStyle.Current.SelectedColor; tempSwitch.BorderColor = SkinStyle.Current.SelectedColor; }; #endregion } else if (devcieCommon.Type.ToString ().Contains ("Sensor")) { #region 传感器 Crabtree/SmartHome/UI/SimpleControl/Phone/UniversalDevice/UserUniversalPage.cs
@@ -164,9 +164,11 @@ Control.ControlBytesSend (Command.SetCommonSwitch, udDevice.SubnetID, udDevice.DeviceID, new byte [] { udDevice.SendBytes [0], 255 },SendCount.Zero); } lightView.BorderColor = SkinStyle.Current.Transparent; tempON.BorderColor = SkinStyle.Current.BorderColor; }; tempON.MouseDownEventHandler += (sende3r, e3) => { lightView.BorderColor = SkinStyle.Current.SelectedColor; tempON.BorderColor = SkinStyle.Current.SelectedColor; }; } tempSiwtch.MouseUpEventHandler += (sender3, e3) => { @@ -180,9 +182,11 @@ } } lightView.BorderColor = SkinStyle.Current.Transparent; tempSiwtch.BorderColor = SkinStyle.Current.BorderColor; }; tempSiwtch.MouseDownEventHandler += (sende3r, e3) => { lightView.BorderColor = SkinStyle.Current.SelectedColor; tempSiwtch.BorderColor = SkinStyle.Current.SelectedColor; }; } } Crabtree/SmartHome/UI/SimpleControl/Phone/User/UserSettingView.cs
@@ -211,89 +211,90 @@ #region ---数据接收--- //if (MainPage.LoginUser.AccountType == 2 || MainPage.LoginUser.AccountString == @"464027401@qq.com") { // var DataReceptionView = new FrameLayout () { // Width = Application.GetRealWidth (640), // Height = Application.GetRealHeight (100), // BackgroundColor = SkinStyle.Current.ViewColor // }; // UserMiddle.SettingView.AddChidren (DataReceptionView); // var btnDataReceptionIcon = new Button () { // X = Application.GetRealWidth (30), // Gravity = Gravity.CenterVertical, // Width = Application.GetRealWidth (75), // Height = Application.GetRealHeight (75), // UnSelectedImagePath = "AccountSettings/DataShared.png" // }; // DataReceptionView.AddChidren (btnDataReceptionIcon); // var btnDataReceptionTitle = new Button () { // X = Application.GetRealWidth (125), // TextAlignment = TextAlignment.CenterLeft, // TextID = R.MyInternationalizationString.DataReception, // TextColor = SkinStyle.Current.TextColor1, // }; // DataReceptionView.AddChidren (btnDataReceptionTitle); // EventHandler<MouseEventArgs> DataReceptionEventHandler = (sender, e) => { // GoData (); // }; // DataReceptionView.MouseUpEventHandler += DataReceptionEventHandler; // btnDataReceptionIcon.MouseUpEventHandler += DataReceptionEventHandler; // btnDataReceptionTitle.MouseUpEventHandler += DataReceptionEventHandler; // Button btnNull3 = new Button () { // BackgroundColor = SkinStyle.Current.MainColor, // Height = Application.GetRealHeight (5) // }; // UserMiddle.SettingView.AddChidren (btnNull3); //} #endregion if (true) { var DataReceptionView = new FrameLayout () { Width = Application.GetRealWidth (640), Height = Application.GetRealHeight (100), BackgroundColor = SkinStyle.Current.ViewColor }; UserMiddle.SettingView.AddChidren (DataReceptionView); var btnDataReceptionIcon = new Button () { X = Application.GetRealWidth (30), Gravity = Gravity.CenterVertical, Width = Application.GetRealWidth (75), Height = Application.GetRealHeight (75), UnSelectedImagePath = "AccountSettings/DataShared.png" }; DataReceptionView.AddChidren (btnDataReceptionIcon); var btnDataReceptionTitle = new Button () { X = Application.GetRealWidth (125), TextAlignment = TextAlignment.CenterLeft, TextID = R.MyInternationalizationString.DataReception, TextColor = SkinStyle.Current.TextColor1, }; DataReceptionView.AddChidren (btnDataReceptionTitle); EventHandler<MouseEventArgs> DataReceptionEventHandler = (sender, e) => { GoData (); }; DataReceptionView.MouseUpEventHandler += DataReceptionEventHandler; btnDataReceptionIcon.MouseUpEventHandler += DataReceptionEventHandler; btnDataReceptionTitle.MouseUpEventHandler += DataReceptionEventHandler; Button btnNull3 = new Button () { BackgroundColor = SkinStyle.Current.MainColor, Height = Application.GetRealHeight (5) }; UserMiddle.SettingView.AddChidren (btnNull3); } #endregion #region ---msg--- //FrameLayout WarningMsgView = new FrameLayout () { // Width = Application.GetRealWidth (640), // Height = Application.GetRealHeight (100), // BackgroundColor = SkinStyle.Current.ViewColor //}; //UserMiddle.SettingView.AddChidren (WarningMsgView); //Button btnWarningMsgIcon = new Button () { // X = Application.GetRealWidth (30), // Gravity = Gravity.CenterVertical, // Width = Application.GetRealWidth (75), // Height = Application.GetRealHeight (75), // UnSelectedImagePath = "RemoteMsg/RemoteIcon.png", // SelectedImagePath = "RemoteMsg/RemoteIconOn.png" //}; //WarningMsgView.AddChidren (btnWarningMsgIcon); #region ---msg--- //FrameLayout WarningMsgView = new FrameLayout () { // Width = Application.GetRealWidth (640), // Height = Application.GetRealHeight (100), // BackgroundColor = SkinStyle.Current.ViewColor //}; //UserMiddle.SettingView.AddChidren (WarningMsgView); //Button btnWarningMsgIcon = new Button () { // X = Application.GetRealWidth (30), // Gravity = Gravity.CenterVertical, // Width = Application.GetRealWidth (75), // Height = Application.GetRealHeight (75), // UnSelectedImagePath = "RemoteMsg/RemoteIcon.png", // SelectedImagePath = "RemoteMsg/RemoteIconOn.png" //}; //WarningMsgView.AddChidren (btnWarningMsgIcon); //Button btnWarningMsgTitle = new Button () { // X = btnWarningMsgIcon.Right + Application.GetRealWidth (20), // TextAlignment = TextAlignment.CenterLeft, // TextID = R.MyInternationalizationString.MessageAlert, // TextColor = SkinStyle.Current.TextColor1, //}; //WarningMsgView.AddChidren (btnWarningMsgTitle); //btnWarningMsgTitle.MouseLongEventHandler += (sd, ds) => { // //var uc = UserConfig.Instance.RometoUserInfoKeys.Find ((obj) => obj.Contains ("HiddenJson")); // //new Alert ("", uc, "close").Show (); //}; //Button btnWarningMsgTitle = new Button () { // X = btnWarningMsgIcon.Right + Application.GetRealWidth (20), // TextAlignment = TextAlignment.CenterLeft, // TextID = R.MyInternationalizationString.MessageAlert, // TextColor = SkinStyle.Current.TextColor1, //}; //WarningMsgView.AddChidren (btnWarningMsgTitle); //btnWarningMsgTitle.MouseLongEventHandler += (sd, ds) => { // //var uc = UserConfig.Instance.RometoUserInfoKeys.Find ((obj) => obj.Contains ("HiddenJson")); // //new Alert ("", uc, "close").Show (); //}; //EventHandler<MouseEventArgs> WarningMsgEventHandler = (sender, e) => { // var msgView = new WarningList (); // UserMiddle.SettingPageView.AddChidren (msgView); // msgView.ShowWarningListPage (); // UserMiddle.SettingPageView.PageIndex = 1; //}; //WarningMsgView.MouseUpEventHandler += WarningMsgEventHandler; //btnWarningMsgIcon.MouseUpEventHandler += WarningMsgEventHandler; //btnWarningMsgTitle.MouseUpEventHandler += WarningMsgEventHandler; //Button btnNullWarningMsg = new Button () { // Height = Application.GetRealHeight (5), // BackgroundColor = SkinStyle.Current.MainColor //}; //UserMiddle.SettingView.AddChidren (btnNullWarningMsg); #endregion //EventHandler<MouseEventArgs> WarningMsgEventHandler = (sender, e) => { // var msgView = new WarningList (); // UserMiddle.SettingPageView.AddChidren (msgView); // msgView.ShowWarningListPage (); // UserMiddle.SettingPageView.PageIndex = 1; //}; //WarningMsgView.MouseUpEventHandler += WarningMsgEventHandler; //btnWarningMsgIcon.MouseUpEventHandler += WarningMsgEventHandler; //btnWarningMsgTitle.MouseUpEventHandler += WarningMsgEventHandler; //Button btnNullWarningMsg = new Button () { // Height = Application.GetRealHeight (5), // BackgroundColor = SkinStyle.Current.MainColor //}; //UserMiddle.SettingView.AddChidren (btnNullWarningMsg); #endregion #region ---Schedule--- FrameLayout ScheduleView = new FrameLayout () { #region ---Schedule--- FrameLayout ScheduleView = new FrameLayout () { Width = Application.GetRealWidth (640), Height = Application.GetRealHeight (100), BackgroundColor = SkinStyle.Current.ViewColor Crabtree/SmartHome/dll/Android/Shared.Droid.HDLWidget.dllBinary files differ
Crabtree/SmartHome/dll/Android/Shared.Droid.dllBinary files differ
Crabtree/SmartHome/dll/IOS/Shared.IOS.TBL.dllBinary files differ
Crabtree/SmartHome/dll/IOS/Shared.IOS.dllBinary files differ