using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Text;
namespace ZigBee.Device
{
///
/// 色温灯
///
public class ColorTemperatureLight : LightBase
{
public ColorTemperatureLight()
{
this.Type = DeviceType.ColorTemperatureLight;
}
///
///亮度,整形,取值范围:0-254表示0%-100%
///
[Newtonsoft.Json.JsonIgnore]
public int Level = 0;
///
///色温,取值范围:3000~6000(这里记录的值的单位是 千)
///
[Newtonsoft.Json.JsonIgnore]
public int ColorTemperature = 0;
///
///蜂鸣器是否在响着(true:响着 false:不响)
///
[Newtonsoft.Json.JsonIgnore]
public bool IsBuzzerRing = false;
///
/// 读取亮度
///
public void ReadLevel()
{
ReadAttri(Device.Cluster_ID.LevelControl, AttriButeId.LevelControl);
}
///
/// 读取色温
///
public void ReadColorTemperature()
{
ReadAttri(Device.Cluster_ID.ColorControl, AttriButeId.LevelControl);
}
///
/// 读取蜂鸣器状态(小夜灯专用)
///
public void ReadBuzzerStatu()
{
ReadAttri((Cluster_ID)1282, 0);
}
///
///设置设备亮度(Level)
///value:亮度值取值范围:0-254
///
public void SetLevel(int value)
{
var jObject = new JObject {
{ "DeviceAddr", DeviceAddr},
{ "Epoint", DeviceEpoint},
{ "Cluster_ID", 8 },
{ "Command", 4},
{ "SendMode", 2 }
};
var data = new JObject {
{ "Level", value },
{ "TransitionTime", 0 }
};
jObject.Add("Data", data);
Gateway?.Send("DeviceControl", jObject.ToString());
}
///
///设置设备色温
///value:色温值取值范围:3400-6000
///
public void SetColorTemperature(int value)
{
var jObject = new JObject {
{ "DeviceAddr", DeviceAddr},
{ "Epoint", DeviceEpoint},
{ "Cluster_ID", 768 },
{ "Command", 10},
{ "SendMode", 2 }
};
var data = new JObject {
{ "ColorTemperature", value },
{ "TransitionTime", 0 }
};
jObject.Add("Data", data);
Gateway?.Send("DeviceControl", jObject.ToString());
}
///
/// 发送打开获取关闭蜂鸣器的命令(目前先这样吧,小夜灯的蜂鸣器)
///
///
public void SendBuzzerSwitchControl(bool isOpen)
{
var jObject = new JObject { { "DeviceAddr", DeviceAddr }, { "Epoint", DeviceEpoint }, { "Cluster_ID", 1282 }, { "Command", 0 } };
var data = new JObject {
{ "WarningMode", isOpen==true?1:0 },//0:关闭报警 1:打开报警
{ "Strobe", 0 },//是否启动报警灯 0:不启动 1:启动
{ "SirenLevel", 0 },//报警音量 0:Low 1:Medium 2:high 3: very high
{ "WarningDuration", isOpen==true?10:0 }, //报警时长 0 -65535 单位:秒
{ "StrobeDutyCycle", 50 }, //报警等闪烁占空比 0-100
{ "StrobeLevel", 1 } //报警灯亮度 0:Low 1:Medium 2:high 3: very high
};
jObject.Add("Data", data);
//主题可以乱写的
Gateway.Send("SendSwitchCommand", jObject.ToString());
}
}
}