using System; using System.Collections.Generic; using Shared; using Shared.SimpleControl.R; namespace SmartHome { public class Method { /// /// 获取云端设备列表 /// public static void GetDeviceList () { Shared.SimpleControl.MainPage.Loading.Start (Language.StringByID (MyInternationalizationString.load)); System.Threading.Tasks.Task.Run (() => { try { var deviceResult = HttpServerRequest.Current.GetDeviceList (); if (deviceResult.Code == StateCode.SUCCESS) { var deviceList = Newtonsoft.Json.JsonConvert.DeserializeObject (deviceResult.Data.ToString ()); //Utlis.WriteLine ("deviceList Count" + deviceList.list.Count); Timer.deviceList.Clear (); for (int i = 0; i < deviceList.list.Count; i++) { Timer.deviceList.Add (deviceList.list [i]); } } else { Utlis.ShowTip ("设备列表"); } } catch { Shared.SimpleControl.MainPage.FailureToServer (); } finally { Application.RunOnMainThread (() => { Shared.SimpleControl.MainPage.Loading.Hide (); }); } }); } #region Utc 时间戳 北京时间 /// /// 本地时间转换utc时间 /// /// /// public static string GetUtcTime (string s) { int hour = 12; int Minute = 30; try { if (s.Contains (":")) { string [] str = s.Split (':'); hour = int.Parse (str [0]); Minute = int.Parse (str [1]); } else if (s.Contains ("-")) { string [] str = s.Split ('-'); hour = int.Parse (str [0]); Minute = int.Parse (str [1]); } } catch { } DateTime dateTime = new DateTime (DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, hour, Minute, DateTime.Now.Second, DateTime.Now.Millisecond); return dateTime.ToUniversalTime ().ToString ("HH") + ":" + dateTime.ToUniversalTime ().ToString ("mm"); } /// /// utc时间转换本地时间 /// /// /// public static string GetLocalUtcTime (string s) { int hour = 12; int Minute = 30; try { if (s.Contains (":")) { string [] str = s.Split (':'); hour = int.Parse (str [0]); Minute = int.Parse (str [1]); } else if (s.Contains ("-")) { string [] str = s.Split ('-'); hour = int.Parse (str [0]); Minute = int.Parse (str [1]); } } catch { } DateTime utcTime = new DateTime (DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, hour, Minute, DateTime.Now.Second, DateTime.Now.Millisecond); var dateTime = TimeZoneInfo.ConvertTimeFromUtc (utcTime, TimeZoneInfo.Local); return dateTime.ToString ("HH") + ":" + dateTime.ToString ("mm"); } /// /// 获取时间戳(时间格式转换时间戳) /// /// /// public static long GetUnixTime (string s) { int hour = 12; int Minute = 30; try { if (s.Contains (":")) { string [] str = s.Split (':'); hour = int.Parse (str [0]); Minute = int.Parse (str [1]); } else if (s.Contains ("-")) { string [] str = s.Split ('-'); hour = int.Parse (str [0]); Minute = int.Parse (str [1]); } } catch { } DateTime dateTime = new DateTime (DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, hour, Minute, DateTime.Now.Second, DateTime.Now.Millisecond); System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime (new System.DateTime (1970, 1, 1)); // 当地时区 long timeStamp = (long)(dateTime - startTime).TotalSeconds;//相差秒数 return timeStamp; } /// /// 时间戳转换成时间格式 /// /// 时间戳 /// public static DateTime GetLocalTime (int unixTimeStamp) { System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime (new System.DateTime (1970, 1, 1)); // 当地时区 DateTime dt = startTime.AddMilliseconds (unixTimeStamp); return dt; } #endregion /// /// 获取房间列表 /// /// public List GetRoomList () { List list = new List (); list.Add (new Room { Name = "ALL" }); for (int i = 0; i < Room.Lists.Count; i++) { var room = Room.Lists [i]; if (room == null || string.IsNullOrEmpty (room.Name)) { continue; } list.Add (room); } return list; } /// /// 获取房间设备列表 /// /// public List GetRoomDeviceList (string roomName) { List deviceList = new List (); var roomList = GetRoomList (); if (roomName == "ALL") { for (int i = 0; i < roomList.Count; i++) { var room = roomList [i]; if (room == null || string.IsNullOrEmpty (room.Name)) { continue; } for (int j = 0; j < room.DeviceList.Count; j++) { var device = room.DeviceList [j]; if (device == null) { continue; } //云端匹配本地列表 var dev = GetloudsDevice (device); if (dev != null) { if (deviceList.Find ((c) => c.deviceId == dev.deviceId) == null) { deviceList.Add (dev); } } } } } else { for (int i = 0; i < roomList.Count; i++) { var room = roomList [i]; if (room == null || string.IsNullOrEmpty (room.Name)) { continue; } if (room.Name!= roomName) { continue; } for (int j = 0; j < room.DeviceList.Count; j++) { var device = room.DeviceList [j]; if (device == null) { continue; } //云端匹配本地列表 var dev = GetloudsDevice (device); if (dev != null) { deviceList.Add (dev); } } } } return Spk_Equipment (deviceList); } /// /// 获取支持的设备列表 /// /// /// public List Spk_Equipment (List list) { List DeviceList = new List (); for (int i = 0; i < list.Count; i++) { var device = list [i]; switch (device.spk) { case SPK.LightDimming: case SPK.LightSwitch: case SPK.CurtainRoller: case SPK.CurtainTrietex: case SPK.CurtainSwitch: case SPK.ElectricSocket: case SPK.ElectricFan: { //目前支持的设备 DeviceList.Add (device); } break; } } return DeviceList; } /// /// 匹配云端设备,返回云端设备 /// /// 本地设备 /// public Function GetloudsDevice (Common common) { for (int j = 0; j < Timer.deviceList.Count; j++) { var cloudsDevice = Timer.deviceList [j]; if (common.SubnetID == cloudsDevice.bus.SubnetID && common.DeviceID == cloudsDevice.bus.DeviceID && common.LoopID == cloudsDevice.bus.LoopId ) { return cloudsDevice; } } return null; } } }