using System; using Shared.SimpleControl.Phone; using System.Collections.Generic; using System.Text; using System.Net.NetworkInformation; namespace Shared.SimpleControl { public class EquipmentPublicClass { public void AlertNotOnline () { new Alert (Language.StringByID (R.MyInternationalizationString.Tip), Language.StringByID (R.MyInternationalizationString.TipEquipmentNotOnline), Language.StringByID (R.MyInternationalizationString.Close)).Show (); } static bool isConnectiong = false; /// /// 检测/连接远程 /// public static void CheckLinkRemote (int status) { //var sss = new OnePortBus () { SubnetID = 1, DeviceID = 0, Name = "", MAC = "00964e19c4467a5c" }; //IO.FileUtils.SaveEquipmentMessage (sss); //var sss1 = new OnePortBus () { SubnetID = 2, DeviceID = 0, Name = "", MAC = "00964E19C4467A5C" }; //IO.FileUtils.SaveEquipmentMessage (sss1); if (isConnectiong) { return; } isConnectiong = true; UserConfig.Instance.internetStatus = status; #if wallon return; #endif if (MainPage.LoginUser == null || !MainPage.LoginUser.IsLogin) { isConnectiong = false; return; } new System.Threading.Thread (async () => { try { if (status == 0) { Application.RunOnMainThread (() => { MainPage.AddTip (Language.StringByID (R.MyInternationalizationString.InternetStatusTip)); UserMiddle.LinkStatusTip.BackgroundColor = SkinStyle.Current.DelColor; }); } else { if (MainPage.LoginUser == null || !MainPage.LoginUser.IsLogin) { return; } Application.RunOnMainThread (() => { if (UserMiddle.LinkStatusTip.BackgroundColor == SkinStyle.Current.DelColor) { UserMiddle.LinkStatusTip.BackgroundColor = SkinStyle.Current.MainColor; } }); var localFileList = IO.FileUtils.ReadFiles (); var gateWayList = localFileList.FindAll ((obj) => { return (obj.StartsWith ("Equipment_")) && ( obj.Split ('_') [1].ToString () == DeviceType.OnePortBus.ToString () || obj.Split ('_') [1].ToString () == DeviceType.RCU.ToString () || obj.Split ('_') [1].ToString () == DeviceType.SuperWireless.ToString () || obj.Split ('_') [1].ToString () == DeviceType.OnePortWirelessFR.ToString ()); }); bool canRemote = false; if (CommonPage.IsRemote) { SmartHome.MqttCommon.MqttRemoteSend (new byte [] { }, 3); } foreach (var gatewayFileName in gateWayList) { var tempStrings = gatewayFileName.Split ('_'); var gateWayString = CommonPage.MyEncodingUTF8.GetString (IO.FileUtils.ReadFile (gatewayFileName)); var common = Newtonsoft.Json.JsonConvert.DeserializeObject (gateWayString); if (common != null) { if (common.MAC.Replace (".", "").ToUpper () == UserConfig.Instance.GatewayMAC.Replace (".", "").ToUpper ()) { canRemote = true; if (status == 2) { //var result = Control.ControlBytesSendHasReturn (Command.ReadGateway, common.SubnetID, common.DeviceID, new byte [] { (byte)new Random ().Next (255), (byte)new Random ().Next (255) }); #region var control = new Control (); control.Send (new Target () { IPEndPoint = new System.Net.IPEndPoint (System.Net.IPAddress.Parse (new Net.NetWiFi ().BroadcastIpAddress.ToString ()), 6000), Command = Command.ReadGateway, SubnetID = common.SubnetID, DeviceID = common.DeviceID, AddData = new byte [] { (byte)new Random ().Next (255), (byte)new Random ().Next (255) }, }, SendCount.Three, true, true); var result = control.UsefulBytes; #endregion if (result != null) { var mac0 = CommonPage.byteToHex16 (result [5]) + "." + CommonPage.byteToHex16 (result [6]) + "." + CommonPage.byteToHex16 (result [7]) + "." + CommonPage.byteToHex16 (result [8]) + "." + CommonPage.byteToHex16 (result [9]) + "." + CommonPage.byteToHex16 (result [10]) + "." + CommonPage.byteToHex16 (result [11]) + "." + CommonPage.byteToHex16 (result [12]); if (common.MAC == mac0) { canRemote = false; Shared.SimpleControl.CommonPage.IsRemote = false; Application.RunOnMainThread (() => { UserMiddle.LinkStatusTip.BackgroundColor = SkinStyle.Current.LinkStatusTipColor; MainPage.Loading.Hide (); }); UserMiddle.ReadAllDeviceStatus (); await SmartHome.MqttCommon.DisConnectRemoteMqttClient (); #region control.Send (new Target () { IPEndPoint = new System.Net.IPEndPoint (System.Net.IPAddress.Parse (new Net.NetWiFi ().BroadcastIpAddress.ToString ()), 6000), Command = Command.ReadGateWayModelInfo, SubnetID = common.SubnetID, DeviceID = common.DeviceID, AddData = new byte [] { }, }, SendCount.Three, true, true); var gatewayBytes = control.UsefulBytes; #endregion if (gatewayBytes != null) { common.Remote_GroupName = CommonPage.MyEncodingGB2312.GetString (gatewayBytes, 1, 20).Trim ('\0'); common.Remote_ProjectName = CommonPage.MyEncodingGB2312.GetString (gatewayBytes, 21, 20).Trim ('\0'); common.Remote_UserName = CommonPage.MyEncodingGB2312.GetString (gatewayBytes, 41, 8).Trim ('\0'); common.Remote_Password = CommonPage.MyEncodingGB2312.GetString (gatewayBytes, 49, 8).Trim ('\0'); var requestJson2 = @"{'Token':'" + MainPage.LoginUser.LoginTokenString + "','MAC':'" + common.MAC + "','Password':'" + common.Remote_Password + "'}"; var revertObj2 = MainPage.RequestHttps ("UpdateRemoteSwitchPassword", requestJson2, true, false); } } } } else { break; } } } } if (canRemote && !CommonPage.IsRemote) { if (!string.IsNullOrEmpty (UserConfig.Instance.CurrentRegion.MAC)) { CommonPage.IsRemote = true; SmartHome.MqttCommon.IsInitMqtt = true; } } } } catch (Exception ex) { Console.WriteLine ("CheckLinkRemote : " + ex.ToString ()); } finally { isConnectiong = false; Application.RunOnMainThread (() => { MainPage.Loading.Hide (); }); } }) { IsBackground = true }.Start (); } } }