using System;
using System.Collections.Generic;
using Newtonsoft.Json.Linq;
namespace HDL_ON.Entity
{
public class Curtain : Function
{
/*
窗帘属性列表:trait: [switch,openLevel,lock]
属性 描述
on_off on/off/stop;
openLevel 0-100;
lock boolean (Lock锁定控制)
*/
public Curtain()
{
}
[Newtonsoft.Json.JsonIgnore]
public Trait trait_openLevel;
///
/// 开关百分比
/// 0-100
///
[Newtonsoft.Json.JsonIgnore]
public int openLevel
{
get
{
try
{
if(trait_openLevel==null)
{
trait_openLevel = function.Find((obj) => obj.attri == "openLevel");
if (trait_openLevel == null)
{
trait_openLevel = new Trait()
{
attri = "openLevel",
value = new List { "up", "down" },
max = 100,
min = 0,
};
}
trait_openLevel.curValues = trait_openLevel.min;
}
return Convert.ToInt32( trait_openLevel.curValues);
}
catch
{
MainPage.Log("openLevel 数据获取失败.");
return 0;
}
}
set
{
try
{
trait_openLevel.curValues = value;
}
catch
{
MainPage.Log("openLevel 数据刷新失败.");
}
}
}
///
/// 拼接、获取A协议操作数据
///
public override JObject GetSendJObject(CommandType_A command)
{
var sendJob = new JObject();
if (command == CommandType_A.write)
{
sendJob = new JObject { { "vendor_code", vendor_code }, { "Command", command.ToString() }, { "Type", "device" } };
JObject data = null;
switch (functionType)
{
case FunctionType.Curtain:
data = new JObject { { "on_off", on_off }, { "sid", sid } };
break;
case FunctionType.MotorCurtain:
case FunctionType.RollingShutter:
data = new JObject { { "openLevel", openLevel}, { "sid", sid } };
break;
}
sendJob.Add("objects", data);
}
else if (command == CommandType_A.read)
{
sendJob = new JObject { { "vendor_code", vendor_code }, { "Command", command.ToString() }, { "Type", "device" } };
var data = new JObject { { "sid", sid } };
sendJob.Add("objects", data);
}
return sendJob;
}
}
}