|
|
|
@ -93,7 +93,7 @@ namespace FBeeService
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 接收当前连接的设备信息
|
|
|
|
|
/// 接收当前连接的设备信息返回值
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="sn"></param>
|
|
|
|
|
/// <param name="data"></param>
|
|
|
|
@ -187,7 +187,7 @@ namespace FBeeService
|
|
|
|
|
var list = new List<byte>();
|
|
|
|
|
list.AddRange(ieee.HexToBytes());
|
|
|
|
|
list.Add(0x01);
|
|
|
|
|
this.Write(sn, RequestType.x95, ieee, list, false);
|
|
|
|
|
this.Write(sn, RequestType.x95, ieee, list);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//0x94更改指定设备名
|
|
|
|
@ -467,6 +467,20 @@ namespace FBeeService
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void XA70080(string sn, string ieee)
|
|
|
|
|
{
|
|
|
|
|
var list = new List<byte>();
|
|
|
|
|
list.Add(0x03);
|
|
|
|
|
list.Add(0xff);
|
|
|
|
|
list.Add(0x00);
|
|
|
|
|
list.AddRange(new byte[] { 0x55, 0x55 });
|
|
|
|
|
list.Add(0x02);
|
|
|
|
|
list.AddRange(new byte[] { 0x80, 0x00 });
|
|
|
|
|
list.Add(0x82);
|
|
|
|
|
list[1] = (byte)(list.Count() - 3);
|
|
|
|
|
this.Write(sn, RequestType.xa7, ieee, list, 1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//0xa9
|
|
|
|
|
//0xab
|
|
|
|
|
///// <summary>
|
|
|
|
@ -609,8 +623,12 @@ namespace FBeeService
|
|
|
|
|
//device.PM10 = BitConverter.ToInt16(props[0x003e]);
|
|
|
|
|
device.Voltage = props[0x21][0] / 2f;
|
|
|
|
|
}
|
|
|
|
|
if (device.DeviceId == 0x0220)
|
|
|
|
|
if (device.DeviceId == 0x0163)
|
|
|
|
|
{
|
|
|
|
|
if (props.ContainsKey(0x400a))
|
|
|
|
|
{
|
|
|
|
|
device.IRVersion = BitConverter.ToString((props[0x400a].Skip(3).Take(6).ToArray())).Replace("-", "").ToLower();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
deviceRepo.SaveChanges();
|
|
|
|
|
}
|
|
|
|
@ -835,30 +853,40 @@ namespace FBeeService
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void Write(string sn, byte commandType, string ieee = null, List<byte> command = null, bool needEndPoint = true, byte addressType = 0x02)
|
|
|
|
|
private void Write(string sn, byte commandType, string ieee = null, List<byte> command = null, int format = 0, byte addressType = 0x02)
|
|
|
|
|
{
|
|
|
|
|
this.Clients.TryGetValue(sn, out TcpClientWrapper client);
|
|
|
|
|
var data = new List<byte>();
|
|
|
|
|
data.AddRange(sn.HexToBytes().Reverse());
|
|
|
|
|
data.Add(RequestType.xfe);
|
|
|
|
|
data.Add(commandType);
|
|
|
|
|
data.AddRange(sn.HexToBytes().Reverse());//sn号
|
|
|
|
|
data.Add(RequestType.xfe);//控制标志
|
|
|
|
|
data.Add(commandType);//控制类型
|
|
|
|
|
if (command != null && command.Count > 0)
|
|
|
|
|
{
|
|
|
|
|
data.Add((byte)(command.Count() + 13));
|
|
|
|
|
data.Add(addressType);
|
|
|
|
|
using (var scope = _applicationServices.CreateScope())
|
|
|
|
|
{
|
|
|
|
|
var repo = scope.ServiceProvider.GetService<IRepository<FBeeDevice>>();
|
|
|
|
|
var device = repo.ReadOnlyTable().FirstOrDefault(o => o.Sn == sn && o.IEEE == ieee);
|
|
|
|
|
data.AddRange(device.Address.HexToBytes().Reverse());
|
|
|
|
|
data.AddRange(new byte[] { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 });
|
|
|
|
|
data.Add((byte)device.Endpoint);
|
|
|
|
|
data.AddRange(new byte[] { 0x00, 0x00 });
|
|
|
|
|
if (format == 0)
|
|
|
|
|
{
|
|
|
|
|
data.Add((byte)(command.Count() + 1 + 2 + 6 + 1 + 2));//数据总长
|
|
|
|
|
data.Add(addressType);//地址模式
|
|
|
|
|
data.AddRange(device.Address.HexToBytes().Reverse());
|
|
|
|
|
data.AddRange(new byte[] { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 });
|
|
|
|
|
data.Add((byte)device.Endpoint);
|
|
|
|
|
data.AddRange(new byte[] { 0x00, 0x00 });
|
|
|
|
|
data.AddRange(command);
|
|
|
|
|
}
|
|
|
|
|
else if (format == 1)
|
|
|
|
|
{
|
|
|
|
|
data.Add((byte)(command.Count() + 2 + 1));//数据总长
|
|
|
|
|
data.AddRange(device.Address.HexToBytes().Reverse());
|
|
|
|
|
data.Add((byte)device.Endpoint);
|
|
|
|
|
data.AddRange(command);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
data.AddRange(command);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var head = BitConverter.GetBytes(data.Count() + 2).ToList();
|
|
|
|
|
var head = BitConverter.GetBytes(data.Count() + 2).ToList();//消息总长
|
|
|
|
|
if (BitConverter.IsLittleEndian)
|
|
|
|
|
{
|
|
|
|
|
head.Reverse();
|
|
|
|
|