using System;
|
using System.Collections.Generic;
|
using Shared;
|
using Shared.SimpleControl.R;
|
|
namespace SmartHome
|
{
|
public class Method
|
{
|
|
/// <summary>
|
/// 获取云端设备列表
|
/// </summary>
|
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<DevcieFunctionRes> (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 时间戳 北京时间
|
|
/// <summary>
|
/// 本地时间转换utc时间
|
/// </summary>
|
/// <param name="s"></param>
|
/// <returns></returns>
|
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");
|
|
}
|
|
/// <summary>
|
/// utc时间转换本地时间
|
/// </summary>
|
/// <param name="s"></param>
|
/// <returns></returns>
|
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");
|
}
|
/// <summary>
|
/// 获取时间戳(时间格式转换时间戳)
|
/// </summary>
|
/// <param name="s"></param>
|
/// <returns></returns>
|
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;
|
}
|
/// <summary>
|
/// 时间戳转换成时间格式
|
/// </summary>
|
/// <param name="unixTimeStamp">时间戳</param>
|
/// <returns></returns>
|
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
|
|
/// <summary>
|
/// 获取房间列表
|
/// </summary>
|
/// <returns></returns>
|
public List<Room> GetRoomList ()
|
{
|
List<Room> list = new List<Room> ();
|
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;
|
}
|
/// <summary>
|
/// 获取房间设备列表
|
/// </summary>
|
/// <returns></returns>
|
public List<Function> GetRoomDeviceList (string roomName)
|
{
|
List<Function> deviceList = new List<Function> ();
|
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);
|
}
|
/// <summary>
|
/// 获取支持的设备列表
|
/// </summary>
|
/// <param name="list"></param>
|
/// <returns></returns>
|
public List<Function> Spk_Equipment (List<Function> list)
|
{
|
List<Function> DeviceList = new List<Function> ();
|
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;
|
}
|
/// <summary>
|
/// 匹配云端设备,返回云端设备
|
/// </summary>
|
/// <param name="common">本地设备</param>
|
/// <returns></returns>
|
public Function GetloudsDevice (Common common)
|
{
|
for (int j = 0; j < Timer.deviceList.Count; j++) {
|
var cloudsDevice = Timer.deviceList [j];
|
try {
|
if (common.SubnetID == cloudsDevice.bus.SubnetID &&
|
common.DeviceID == cloudsDevice.bus.DeviceID &&
|
common.LoopID == cloudsDevice.bus.LoopId
|
) {
|
return cloudsDevice;
|
}
|
}catch(Exception ex) {
|
return null;
|
}
|
}
|
return null;
|
}
|
|
}
|
}
|