using System;
using System.Collections.Generic;
using Newtonsoft.Json.Linq;
namespace ZigBee.Device
{
public class PIRSensor: BindObj
{
public PIRSensor()
{
this.Type = DeviceType.IASZone;
}
//#region PIR传感器参数配置
/////
/////PIR传感器参数配置
/////
//public async System.Threading.Tasks.Task SetPIRSensorParamateAsync(ConfigureParamates configureParamates)
//{
// ResponseAllData result = null;
// if (Gateway == null)
// {
// result = new ResponseAllData { errorMessageBase = "当前没有网关" };
// return result;
// }
// return await System.Threading.Tasks.Task.Run(async () =>
// {
// Action action = (topic, message) =>
// {
// var gatewayID = topic.Split('/')[0];
// var jobject = Newtonsoft.Json.Linq.JObject.Parse(message);
// if (topic == gatewayID + "/" + "Error_Respon")
// {
// var gatewayTemp = new ZbGateway() { Time = jobject.Value("Time"), DataID = jobject.Value("Data_ID"), CurrentGateWayId = Gateway.getGatewayBaseInfo.gwID };
// var temp = Newtonsoft.Json.JsonConvert.DeserializeObject(jobject["Data"].ToString());
// if (temp == null)
// {
// result = new ResponseAllData { errorMessageBase = "网关错误回复,且数据是空" };
// }
// else
// {
// result = new ResponseAllData { errorResponData = temp, errorMessageBase = ErrorMess(temp.Error) };
// }
// }
// if (topic == gatewayID + "/" + "ZbDataPassthrough")
// {
// var gatewayTemp = new ZbGateway() { DataID = jobject.Value("Data_ID") };
// gatewayTemp.clientDataPassthroughResponseData = Newtonsoft.Json.JsonConvert.DeserializeObject(jobject["Data"].ToString());
// if (gatewayTemp.clientDataPassthroughResponseData == null)
// {
// result = new ResponseAllData { errorMessageBase = "网关返回的数据为空" };
// }
// else
// {
// result = new ResponseAllData { };
// if (clientDataPassthroughResponseData?.PassData != null)
// {
// var data = clientDataPassthroughResponseData.PassData;
// if (data.Length == 14)
// {
// result.responseData.command = int.Parse(data[10].ToString() + data[11].ToString()+ data[12].ToString() + data[13].ToString());
// result.responseData.status = int.Parse(data[14].ToString() + data[15].ToString());
// }
// }
// System.Console.WriteLine($"UI收到通知后的主题_{ topic}");
// }
// }
// };
// try
// {
// var passData = SetPIRSensorData(configureParamates);
// var jObject = new JObject { { "DeviceAddr", DeviceAddr }, { "Epoint", 200 }, { "Cluster_ID", 64513 }, { "Command", 0 } };
// var data = new JObject { { "PassData", passData } };
// jObject.Add("Data", data);
// CurrentGateWayId = Gateway.getGatewayBaseInfo?.gwID;
// Gateway.Send(("ClientDataPassthrough"), Common.SecuritySet.Encryption((jObject.ToString())));
// }
// catch { }
// var dateTime = DateTime.Now;
// while ((DateTime.Now - dateTime).TotalMilliseconds < WaitReceiveDataTime)
// {
// await System.Threading.Tasks.Task.Delay(10);
// if (result != null)
// {
// break;
// }
// }
// if ((DateTime.Now - dateTime).TotalMilliseconds > WaitReceiveDataTime)
// {
// result = new ResponseAllData { errorMessageBase = " 回复超时,请重新操作" };
// }
// Gateway.Actions -= action;
// System.Console.WriteLine("ClientDataPassthrough_Actions 退出" + System.DateTime.Now.ToString());
// return result;
// });
//}
/////
///// PIR配置参数回复
/////
//public ParamatesInfo paramatesInfo;
//[System.Serializable]
//public class ParamatesInfo
//{
// ///
// /// 错误信息
// ///
// public string errorMessageBase;
// ///
// /// 网关信息错误反馈
// /// 当网关接收到客户端信息后,出现以下异常情况将反馈错误。
// ///
// public ErrorResponData errorResponData;
// ///
// /// PIR配置参数
// ///
// public ConfigureParamates configureParamates ;
//}
/////
///// PIR配置参数
/////
//[System.Serializable]
//public class ConfigureParamates
//{
// ///
// ///亮度(光照度)使能
// /// false:不使能
// /// true:使能
// ///
// public bool levelEnable;
// ///
// /// 光照度等级
// ///
// public LevelSize levelSize = new LevelSize{};
// ///
// ///亮度(光照度)使能
// /// false:不使能
// /// true:使能
// ///
// public bool controlDevEnable;
// ///
// /// 触发开灯到触发关灯的时间间隔,(注意:该参数为16进制)
// /// 0-ffff 单位秒
// ///
// public int transitionTime;
// }
/////
///// 按键指示灯颜色信息对应顺序号
/////
//public enum LevelSize
//{
// ///
// /// 白天
// ///
// Daytime = 1,
// ///
// /// 昏暗
// ///
// Dusky = 2,
// ///
// /// 黑夜
// ///
// Night = 3,
//}
/////
///// 配置PIR配置参数
///// 发配置按键指示灯颜色命令时,此时为发送到网关的透传数据
/////
//string SetPIRSensorData(ConfigureParamates configureParamates)
//{
// string data = "";
// string dataLength = "09";
// string dataComand1 = "00";
// string dataComand2 = "03";
// string dataSerialNum = "01";
// string addDataLength = "05";
// string levelEnable = "";
// string levelSize = "";
// string controlDevEnable = "";
// string transitionTime = "";
// try
// {
// if (configureParamates != null)
// {
// if (configureParamates.levelEnable)
// {
// levelEnable = "00";
// }
// else
// {
// levelEnable = "01";
// }
// switch (configureParamates.levelSize)
// {
// case LevelSize.Daytime:
// levelSize = "01";
// break;
// case LevelSize.Dusky:
// levelSize = "02";
// break;
// case LevelSize.Night:
// levelSize = "03";
// break;
// }
// if (configureParamates.controlDevEnable)
// {
// controlDevEnable = "00";
// }
// else
// {
// controlDevEnable = "01";
// }
// var time = configureParamates.transitionTime.ToString();
// var sbString = new System.Text.StringBuilder();
// switch (time.Length)
// {
// case 1:
// transitionTime = "000"+ time;
// break;
// case 2:
// transitionTime = "00" + time;
// break;
// case 3:
// transitionTime = "0" + time;
// break;
// case 4:
// transitionTime = time;
// break;
// }
// sbString.Append(transitionTime.ToUpper());
// }
// data = dataLength + dataComand1 + dataComand2 + dataSerialNum + addDataLength +
// levelEnable + levelSize + controlDevEnable + transitionTime;
// }
// catch { };
// return data;
//}
//#endregion
//#region 获取PIR配置数据
/////
/////PIR传感器参数配置
///// reserve:0-ff
/////
//public async System.Threading.Tasks.Task GetPIRSensorParamateAsync(string reserve="01")
//{
// ParamatesInfo result = null;
// if (Gateway == null)
// {
// result = new ParamatesInfo { errorMessageBase = "当前没有网关" };
// return result;
// }
// return await System.Threading.Tasks.Task.Run(async () =>
// {
// Action action = (topic, message) =>
// {
// var gatewayID = topic.Split('/')[0];
// var jobject = Newtonsoft.Json.Linq.JObject.Parse(message);
// if (topic == gatewayID + "/" + "Error_Respon")
// {
// var gatewayTemp = new ZbGateway() { Time = jobject.Value("Time"), DataID = jobject.Value("Data_ID"), CurrentGateWayId = Gateway.getGatewayBaseInfo.gwID };
// var temp = Newtonsoft.Json.JsonConvert.DeserializeObject(jobject["Data"].ToString());
// if (temp == null)
// {
// result = new ParamatesInfo { errorMessageBase = "网关错误回复,且数据是空" };
// }
// else
// {
// result = new ParamatesInfo { errorResponData = temp, errorMessageBase = ErrorMess(temp.Error) };
// }
// }
// if (topic == gatewayID + "/" + "ZbDataPassthrough")
// {
// var gatewayTemp = new ZbGateway() { DataID = jobject.Value("Data_ID") };
// gatewayTemp.clientDataPassthroughResponseData = Newtonsoft.Json.JsonConvert.DeserializeObject(jobject["Data"].ToString());
// if (gatewayTemp.clientDataPassthroughResponseData == null)
// {
// result = new ParamatesInfo { errorMessageBase = "网关返回的数据为空" };
// }
// else
// {
// result = new ParamatesInfo { };
// if (clientDataPassthroughResponseData?.PassData != null)
// {
// var data = clientDataPassthroughResponseData.PassData;
// if (data.Length == 18)
// {
// var le = data[8].ToString() + data[9].ToString();
// if (le == "01")
// {
// result.configureParamates.levelEnable = true;
// }
// else
// {
// result.configureParamates.levelEnable = false;
// }
// var size = data[10].ToString() + data[11].ToString();
// switch (size)
// {
// case "01":
// result.configureParamates.levelSize = LevelSize.Daytime;
// break;
// case "02":
// result.configureParamates.levelSize = LevelSize.Dusky;
// break;
// case "03":
// result.configureParamates.levelSize = LevelSize.Night;
// break;
// }
// var cdl = data[12].ToString() + data[13].ToString();
// if (cdl == "01")
// {
// result.configureParamates.controlDevEnable = true;
// }
// else
// {
// result.configureParamates.controlDevEnable = false;
// }
// result.configureParamates.transitionTime = int.Parse(data[14].ToString() + data[15].ToString() + data[16].ToString() + data[17].ToString());
// }
// }
// System.Console.WriteLine($"UI收到通知后的主题_{ topic}");
// }
// }
// };
// try
// {
// var passData = GetPIRSensorData(reserve);
// var jObject = new JObject { { "DeviceAddr", DeviceAddr }, { "Epoint", 200 }, { "Cluster_ID", 64513 }, { "Command", 0 } };
// var data = new JObject { { "PassData", passData } };
// jObject.Add("Data", data);
// CurrentGateWayId = Gateway.getGatewayBaseInfo?.gwID;
// Gateway.Send(("ClientDataPassthrough"), Common.SecuritySet.Encryption((jObject.ToString())));
// }
// catch { }
// var dateTime = DateTime.Now;
// while ((DateTime.Now - dateTime).TotalMilliseconds < WaitReceiveDataTime)
// {
// await System.Threading.Tasks.Task.Delay(10);
// if (result != null)
// {
// break;
// }
// }
// if ((DateTime.Now - dateTime).TotalMilliseconds > WaitReceiveDataTime)
// {
// result = new ParamatesInfo { errorMessageBase = " 回复超时,请重新操作" };
// }
// Gateway.Actions -= action;
// System.Console.WriteLine("ClientDataPassthrough_Actions 退出" + System.DateTime.Now.ToString());
// return result;
// });
//}
/////
///// 配置PIR配置参数
///// 发配置按键指示灯颜色命令时,此时为发送到网关的透传数据
/////
//string GetPIRSensorData(string reserve)
//{
// string data = "";
// string dataLength = "05";
// string dataComand1 = "01";
// string dataComand2 = "03";
// string dataSerialNum = "01";
// string addDataLength = "01";
// string reserveData = reserve;
// try
// {
// data = dataLength + dataComand1 + dataComand2 + dataSerialNum + addDataLength +
// reserveData;
// }
// catch { };
// return data;
//}
//#endregion
}
}