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) { //if (isConnectiong) { // return; //} //isConnectiong = true; UserConfig.Instance.internetStatus = status; #if wallon return; #endif if (MainPage.LoginUser == null || !MainPage.LoginUser.IsLogin || isConnectiong) { return; } isConnectiong = true; new System.Threading.Thread (async () => { try { if (status == 0) { Application.RunOnMainThread (() => { MainPage.AddTip (Language.StringByID (R.MyInternationalizationString.InternetStatusTip)); MainPage.WiFiStatus = "CrabtreeAdd/WiFiUnlink.png"; UserMiddle.btnLinkStatus.UnSelectedImagePath = MainPage.WiFiStatus; }); } else { //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 () || obj.Split ('_') [1].ToString () == DeviceType.OnePortMqttFR.ToString()); }); bool canRemote = false; if (CommonPage.IsRemote) { await SmartHome.MqttCommon.StartCloudMqtt (); 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 (".", "") == UserConfig.Instance.GatewayMAC.Replace (".", "")) { 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) { canRemote = false; 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) { CommonPage.IsRemote = false; //var gatewayBytes = Control.ControlBytesSendHasReturn (Command.ReadGateWayModelInfo, common.SubnetID, common.DeviceID, new byte [] { }); //#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); //return; //} Application.RunOnMainThread (() => { MainPage.WiFiStatus = "CrabtreeAdd/WiFi.png"; UserMiddle.btnLinkStatus.UnSelectedImagePath = MainPage.WiFiStatus; MainPage.Loading.Hide (); }); Shared.SimpleControl.Phone.UserMiddle.ReadAllDeviceStatus (); await SmartHome.MqttCommon.DisConnectRemoteMqttClient (); return; } } } else { break; } } } } if (canRemote && !CommonPage.IsRemote) { if (UserConfig.Instance.CheckHomeGateways ()) { if (!string.IsNullOrEmpty (UserConfig.Instance.CurrentRegion.HomeGateways[0].GatewayUniqueId)) { Shared.SimpleControl.CommonPage.IsRemote = true; await SmartHome.MqttCommon.StartCloudMqtt (); } } } } } catch (Exception ex) { Console.WriteLine ("CheckLinkRemote : " + ex.ToString ()); } finally { isConnectiong = false; Application.RunOnMainThread (() => { MainPage.Loading.Hide (); }); } }) { IsBackground = true }.Start (); } } }