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;
}
}
}