|
|
|
@ -141,9 +141,7 @@ namespace IoTNode.DeviceServices.FBee
|
|
|
|
|
deviceRepo.Add(device);
|
|
|
|
|
}
|
|
|
|
|
device.Ip = ip;
|
|
|
|
|
deviceRepo.SaveChanges();
|
|
|
|
|
var deviceDto = device.To<EditDeviceModel>();
|
|
|
|
|
this.SendToServer(Methods.EditDevice, deviceDto);
|
|
|
|
|
this.UpdateDevice(deviceRepo, device);
|
|
|
|
|
}
|
|
|
|
|
var gateways = deviceRepo.ReadOnlyTable().Where(o => o.Product.Name == "FBee网关").ToList();
|
|
|
|
|
foreach (var gateway in gateways)
|
|
|
|
@ -497,79 +495,49 @@ namespace IoTNode.DeviceServices.FBee
|
|
|
|
|
deviceRepo.Add(device);
|
|
|
|
|
}
|
|
|
|
|
device.IsOnline = isOnline != 0x00;
|
|
|
|
|
|
|
|
|
|
var dataList = new List<Data>();
|
|
|
|
|
device.AddorUpdateData(device.CreateData(Keys.DeviceId, deviceId, DeviceDataType.Int, Keys.DeviceId, hidden: true, timestamp: timestamp));
|
|
|
|
|
device.AddorUpdateData(device.CreateData(Keys.Address, address, DeviceDataType.String, Keys.Address, hidden: true, timestamp: timestamp));
|
|
|
|
|
device.AddorUpdateData(device.CreateData(Keys.EndPoint, endpoint, DeviceDataType.Int, Keys.EndPoint, hidden: true, timestamp: timestamp));
|
|
|
|
|
this.UpdateDevice(deviceRepo, device);
|
|
|
|
|
this.UpdateData(deviceRepo, device, device.CreateData(Keys.DeviceId, deviceId, DeviceDataType.Int, Keys.DeviceId, hidden: true, timestamp: timestamp));
|
|
|
|
|
this.UpdateData(deviceRepo, device, device.CreateData(Keys.Address, address, DeviceDataType.String, Keys.Address, hidden: true, timestamp: timestamp));
|
|
|
|
|
this.UpdateData(deviceRepo, device, device.CreateData(Keys.EndPoint, endpoint, DeviceDataType.Int, Keys.EndPoint, hidden: true, timestamp: timestamp));
|
|
|
|
|
if (new int[] { 0x0002, 0x0009, 0x0081, 0x0202, 0x0220, 0x0051 }.Contains(deviceId))
|
|
|
|
|
{
|
|
|
|
|
if (deviceId == 0x202)
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
var state = device.CreateData(Keys.State, switchState == 0 ? "关" : (switchState == 1 ? "开" : "停"), DeviceDataType.String, "状态", timestamp: timestamp);
|
|
|
|
|
if (!device.Data.Any(o => o.Key == Keys.State))
|
|
|
|
|
{
|
|
|
|
|
device.AddorUpdateData(state);
|
|
|
|
|
dataList.Add(state);
|
|
|
|
|
}
|
|
|
|
|
this.UpdateData(deviceRepo, device, device.CreateData(Keys.State, switchState == 0 ? "关" : (switchState == 1 ? "开" : "停"), DeviceDataType.String, "状态", timestamp: timestamp));
|
|
|
|
|
}
|
|
|
|
|
var battery = ms.ReadByte();
|
|
|
|
|
device.AddorUpdateData(device.CreateData(Keys.Battery, battery, DeviceDataType.Int, Keys.Battery, hidden: true, timestamp: timestamp));
|
|
|
|
|
this.UpdateData(deviceRepo, device, device.CreateData(Keys.Battery, battery, DeviceDataType.Int, Keys.Battery, hidden: true, timestamp: timestamp));
|
|
|
|
|
var epCount = ms.ReadByte();
|
|
|
|
|
device.AddorUpdateData(device.CreateData(Keys.EndPointCount, battery, DeviceDataType.Int, Keys.EndPointCount, hidden: true, timestamp: timestamp));
|
|
|
|
|
this.UpdateData(deviceRepo, device, device.CreateData(Keys.EndPointCount, battery, DeviceDataType.Int, Keys.EndPointCount, hidden: true, timestamp: timestamp));
|
|
|
|
|
|
|
|
|
|
if (device.Name == "光强检测器")
|
|
|
|
|
{
|
|
|
|
|
ms.Read(2);
|
|
|
|
|
var light = BitConverter.ToInt16(ms.Read(2));
|
|
|
|
|
var desc = this.GetDescription(Keys.Light, light);
|
|
|
|
|
var deviceData = device.CreateData(Keys.Light, light, DeviceDataType.Int, "光照度", "lux", desc, timestamp: timestamp);
|
|
|
|
|
if (!device.Data.Any(o => o.Key == Keys.Light))
|
|
|
|
|
{
|
|
|
|
|
device.AddorUpdateData(deviceData);
|
|
|
|
|
dataList.Add(deviceData);
|
|
|
|
|
}
|
|
|
|
|
this.UpdateData(deviceRepo, device, device.CreateData(Keys.Light, light, DeviceDataType.Int, "光照度", "lux", desc, timestamp: timestamp));
|
|
|
|
|
}
|
|
|
|
|
else if (device.Name == "温湿度传感器")
|
|
|
|
|
{
|
|
|
|
|
var temperature = BitConverter.ToInt16(ms.Read(2)) / 100f;
|
|
|
|
|
var data1 = device.CreateData(Keys.Temperature, temperature, DeviceDataType.Float, "温度", "℃", this.GetDescription(Keys.Temperature, temperature), timestamp: timestamp);
|
|
|
|
|
if (!device.Data.Any(o => o.Key == Keys.Temperature))
|
|
|
|
|
{
|
|
|
|
|
device.AddorUpdateData(data1);
|
|
|
|
|
dataList.Add(data1);
|
|
|
|
|
}
|
|
|
|
|
this.UpdateData(deviceRepo, device, device.CreateData(Keys.Temperature, temperature, DeviceDataType.Float, "温度", "℃", this.GetDescription(Keys.Temperature, temperature), timestamp: timestamp));
|
|
|
|
|
|
|
|
|
|
var humidity = BitConverter.ToInt16(ms.Read(2)) / 100f;
|
|
|
|
|
var data2 = device.CreateData(Keys.Humidity, humidity, DeviceDataType.Float, "湿度", "RH%", this.GetDescription(Keys.Humidity, humidity), timestamp: timestamp);
|
|
|
|
|
if (!device.Data.Any(o => o.Key == Keys.Humidity))
|
|
|
|
|
{
|
|
|
|
|
device.AddorUpdateData(data2);
|
|
|
|
|
dataList.Add(data2);
|
|
|
|
|
}
|
|
|
|
|
this.UpdateData(deviceRepo, device, device.CreateData(Keys.Humidity, humidity, DeviceDataType.Float, "湿度", "RH%", this.GetDescription(Keys.Humidity, humidity), timestamp: timestamp));
|
|
|
|
|
}
|
|
|
|
|
else if (device.Name == "烟雾报警器" || device.Name == "人体感应器")
|
|
|
|
|
{
|
|
|
|
|
var state = BitConverter.ToInt16(ms.Read(2));
|
|
|
|
|
var data1 = device.CreateData(Keys.Warning, state == 1 ? "警报" : "正常", DeviceDataType.String, "状态", timestamp: timestamp);
|
|
|
|
|
if (!device.Data.Any(o => o.Key == Keys.Warning))
|
|
|
|
|
{
|
|
|
|
|
device.AddorUpdateData(data1);
|
|
|
|
|
dataList.Add(data1);
|
|
|
|
|
}
|
|
|
|
|
this.UpdateData(deviceRepo, device, device.CreateData(Keys.Warning, state == 1 ? "警报" : "正常", DeviceDataType.String, "状态", timestamp: timestamp));
|
|
|
|
|
}
|
|
|
|
|
//var historyData = ms.ReadHexString((int)(ms.Length - ms.Position));
|
|
|
|
|
//device.AddorUpdateData(device.CreateData(Keys.Data, historyData, DeviceDataType.String, Keys.Data, hidden: true));
|
|
|
|
|
device.AddorUpdateData(device.CreateData(Keys.ZoneType, zoneType, DeviceDataType.String, Keys.ZoneType, hidden: true, timestamp: timestamp));
|
|
|
|
|
deviceRepo.SaveChanges();
|
|
|
|
|
var deviceDto = device.To<EditDeviceModel>();
|
|
|
|
|
this.SendToServer(Methods.EditDevice, deviceDto);
|
|
|
|
|
foreach (var item in dataList)
|
|
|
|
|
{
|
|
|
|
|
this.SendDataToServer(item);
|
|
|
|
|
}
|
|
|
|
|
this.UpdateStatus(device);
|
|
|
|
|
this.UpdateData(deviceRepo, device, device.CreateData(Keys.ZoneType, zoneType, DeviceDataType.String, Keys.ZoneType, hidden: true, timestamp: timestamp));
|
|
|
|
|
//deviceRepo.SaveChanges();
|
|
|
|
|
//var deviceDto = device.To<EditDeviceModel>();
|
|
|
|
|
//this.SendToServer(Methods.EditDevice, deviceDto);
|
|
|
|
|
//this.UpdateStatus(device);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
@ -707,31 +675,30 @@ namespace IoTNode.DeviceServices.FBee
|
|
|
|
|
var device = this.GetDeviceByAddress(deviceRepo, sn, address);
|
|
|
|
|
if (device != null)
|
|
|
|
|
{
|
|
|
|
|
var dataList = new List<EditDataModel>();
|
|
|
|
|
Data deviceData = null;
|
|
|
|
|
var switchState = ms.ReadInt();
|
|
|
|
|
if (device.Name.Contains("二路开关") || device.Name.Contains("三路开关"))
|
|
|
|
|
{
|
|
|
|
|
if (endpoint == 0x10)
|
|
|
|
|
{
|
|
|
|
|
device.AddorUpdateData(device.CreateData(Keys.L1State, switchState == 0 ? "关" : "开", DeviceDataType.String, "L1状态", timestamp: timestamp));
|
|
|
|
|
deviceData = device.CreateData(Keys.L1State, switchState == 0 ? "关" : "开", DeviceDataType.String, "L1状态", timestamp: timestamp);
|
|
|
|
|
}
|
|
|
|
|
else if (endpoint == 0x11)
|
|
|
|
|
{
|
|
|
|
|
device.AddorUpdateData(device.CreateData(Keys.L2State, switchState == 0 ? "关" : "开", DeviceDataType.String, "L2状态", timestamp: timestamp));
|
|
|
|
|
deviceData = device.CreateData(Keys.L2State, switchState == 0 ? "关" : "开", DeviceDataType.String, "L2状态", timestamp: timestamp);
|
|
|
|
|
}
|
|
|
|
|
else if (endpoint == 0x12)
|
|
|
|
|
{
|
|
|
|
|
device.AddorUpdateData(device.CreateData(Keys.L3State, switchState == 0 ? "关" : "开", DeviceDataType.String, "L3状态", timestamp: timestamp));
|
|
|
|
|
deviceData = device.CreateData(Keys.L3State, switchState == 0 ? "关" : "开", DeviceDataType.String, "L3状态", timestamp: timestamp);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
device.AddorUpdateData(device.CreateData(Keys.State, switchState == 0 ? "关" : (switchState == 1 ? "开" : "停"), DeviceDataType.String, "状态", timestamp: timestamp));
|
|
|
|
|
deviceData = device.CreateData(Keys.State, switchState == 0 ? "关" : (switchState == 1 ? "开" : "停"), DeviceDataType.String, "状态", timestamp: timestamp);
|
|
|
|
|
}
|
|
|
|
|
deviceRepo.SaveChanges();
|
|
|
|
|
foreach (var item in device.Data.Where(o => !o.Hidden))
|
|
|
|
|
if (deviceData != null)
|
|
|
|
|
{
|
|
|
|
|
this.SendDataToServer(item);
|
|
|
|
|
this.UpdateData(deviceRepo, device, deviceData);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
@ -778,9 +745,7 @@ namespace IoTNode.DeviceServices.FBee
|
|
|
|
|
var device = this.GetDeviceByAddress(deviceRepo, sn, address);
|
|
|
|
|
if (device != null)
|
|
|
|
|
{
|
|
|
|
|
device.AddorUpdateData(device.CreateData(Keys.Brightness, ms.ReadByte(), DeviceDataType.Int, "亮度", timestamp: timestamp));
|
|
|
|
|
deviceRepo.SaveChanges();
|
|
|
|
|
this.SendDataToServer(device.Data.FirstOrDefault(o => o.Key == Keys.Brightness));
|
|
|
|
|
this.UpdateData(deviceRepo, device, device.CreateData(Keys.Brightness, ms.ReadByte(), DeviceDataType.Int, "亮度", timestamp: timestamp));
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
@ -824,9 +789,7 @@ namespace IoTNode.DeviceServices.FBee
|
|
|
|
|
var device = this.GetDeviceByAddress(deviceRepo, sn, address);
|
|
|
|
|
if (device != null)
|
|
|
|
|
{
|
|
|
|
|
device.AddorUpdateData(device.CreateData(Keys.Hue, ms.ReadByte(), DeviceDataType.Int, "色调", timestamp: timestamp));
|
|
|
|
|
deviceRepo.SaveChanges();
|
|
|
|
|
this.SendDataToServer(device.Data.FirstOrDefault(o => o.Key == Keys.Hue));
|
|
|
|
|
this.UpdateData(deviceRepo, device, device.CreateData(Keys.Hue, ms.ReadByte(), DeviceDataType.Int, "色调", timestamp: timestamp));
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
@ -856,9 +819,7 @@ namespace IoTNode.DeviceServices.FBee
|
|
|
|
|
var device = this.GetDeviceByAddress(deviceRepo, sn, address);
|
|
|
|
|
if (device != null)
|
|
|
|
|
{
|
|
|
|
|
device.AddorUpdateData(device.CreateData(Keys.Saturation, ms.ReadByte(), DeviceDataType.Int, "饱和度", timestamp: timestamp));
|
|
|
|
|
deviceRepo.SaveChanges();
|
|
|
|
|
this.SendDataToServer(device.Data.FirstOrDefault(o => o.Key == Keys.Saturation));
|
|
|
|
|
this.UpdateData(deviceRepo, device, device.CreateData(Keys.Saturation, ms.ReadByte(), DeviceDataType.Int, "饱和度", timestamp: timestamp));
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
@ -952,24 +913,22 @@ namespace IoTNode.DeviceServices.FBee
|
|
|
|
|
var snid = ms.ReadHexString(4);
|
|
|
|
|
using (var scope = _applicationServices.CreateScope())
|
|
|
|
|
{
|
|
|
|
|
var gatewayRepo = scope.ServiceProvider.GetService<IRepository<Device>>();
|
|
|
|
|
var gateway = gatewayRepo.Table()
|
|
|
|
|
var deviceRepo = scope.ServiceProvider.GetService<IRepository<Device>>();
|
|
|
|
|
var device = deviceRepo.Table()
|
|
|
|
|
.Include(o => o.Data)
|
|
|
|
|
.FirstOrDefault(o => o.Number == sn);
|
|
|
|
|
if (gateway == null)
|
|
|
|
|
if (device == null)
|
|
|
|
|
{
|
|
|
|
|
Console.WriteLine($"gateway {sn} hasn't save in database");
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
gateway.UserName = ms.ReadASIIString(20);
|
|
|
|
|
gateway.Password = ms.ReadASIIString(20);
|
|
|
|
|
|
|
|
|
|
gateway.AddorUpdateData(gateway.CreateData(Keys.Version, version, DeviceDataType.String, "版本", timestamp: timestamp));
|
|
|
|
|
gateway.AddorUpdateData(gateway.CreateData(Keys.DeviceCount, ms.ReadByte(), DeviceDataType.Int, "设备数量", timestamp: timestamp));
|
|
|
|
|
gatewayRepo.SaveChanges();
|
|
|
|
|
this.SendDataToServer(gateway.Data.FirstOrDefault(o => o.Key == Keys.Version));
|
|
|
|
|
this.SendDataToServer(gateway.Data.FirstOrDefault(o => o.Key == Keys.DeviceCount));
|
|
|
|
|
this.UpdateData(deviceRepo, device, device.CreateData(Keys.Version, version, DeviceDataType.String, "版本", timestamp: timestamp));
|
|
|
|
|
this.UpdateData(deviceRepo, device, device.CreateData(Keys.DeviceCount, ms.ReadByte(), DeviceDataType.Int, "设备数量", timestamp: timestamp));
|
|
|
|
|
this.UpdateDevice(deviceRepo, device);
|
|
|
|
|
device.UserName = ms.ReadASIIString(20);
|
|
|
|
|
device.Password = ms.ReadASIIString(20);
|
|
|
|
|
this.UpdateDevice(deviceRepo, device);
|
|
|
|
|
ms.ReadByte();
|
|
|
|
|
ms.ReadByte();
|
|
|
|
|
ms.ReadByte();
|
|
|
|
@ -1020,9 +979,7 @@ namespace IoTNode.DeviceServices.FBee
|
|
|
|
|
var device = this.GetDeviceByAddress(deviceRepo, sn, address);
|
|
|
|
|
if (device != null)
|
|
|
|
|
{
|
|
|
|
|
device.AddorUpdateData(device.CreateData(Keys.ColorTemperature, ms.ReadInt(), DeviceDataType.Int, "色温", timestamp: timestamp));
|
|
|
|
|
deviceRepo.SaveChanges();
|
|
|
|
|
this.SendDataToServer(device.Data.FirstOrDefault(o => o.Key == Keys.ColorTemperature));
|
|
|
|
|
this.UpdateData(deviceRepo, device, device.CreateData(Keys.ColorTemperature, ms.ReadInt(), DeviceDataType.Int, "色温", timestamp: timestamp));
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
@ -1177,7 +1134,6 @@ namespace IoTNode.DeviceServices.FBee
|
|
|
|
|
var clusterId = (ClusterId)ms.ReadInt();
|
|
|
|
|
if (device != null)
|
|
|
|
|
{
|
|
|
|
|
var dataList = new List<EditDataModel>();
|
|
|
|
|
var deviceId = Convert.ToInt32(device.GetDataValue(Keys.DeviceId));
|
|
|
|
|
var reportCount = ms.ReadByte();
|
|
|
|
|
var props = new Dictionary<int, byte[]>();
|
|
|
|
@ -1230,7 +1186,9 @@ namespace IoTNode.DeviceServices.FBee
|
|
|
|
|
var status = props.First().Value[0];
|
|
|
|
|
if (status == 0x00)//离网
|
|
|
|
|
{
|
|
|
|
|
var model = device.To<EditDeviceModel>();
|
|
|
|
|
deviceRepo.Delete(device);
|
|
|
|
|
this.SendToServer("DeleteDevice", model);
|
|
|
|
|
}
|
|
|
|
|
else if (status == 0x03)//入网
|
|
|
|
|
{
|
|
|
|
@ -1240,18 +1198,12 @@ namespace IoTNode.DeviceServices.FBee
|
|
|
|
|
{
|
|
|
|
|
var light = BitConverter.ToInt16(props[0x0000]);
|
|
|
|
|
var desc = this.GetDescription(Keys.Light, light);
|
|
|
|
|
var deviceData = device.CreateData(Keys.Light, light, DeviceDataType.Int, "光照度", "lux", desc, timestamp: timestamp);
|
|
|
|
|
device.AddorUpdateData(deviceData);
|
|
|
|
|
var dataDto = deviceData.To<EditDataModel>();
|
|
|
|
|
dataList.Add(dataDto);
|
|
|
|
|
this.UpdateData(deviceRepo, device, device.CreateData(Keys.Light, light, DeviceDataType.Int, "光照度", "lux", desc, timestamp: timestamp));
|
|
|
|
|
}
|
|
|
|
|
else if (clusterId == ClusterId.alarm)
|
|
|
|
|
{
|
|
|
|
|
var state = BitConverter.ToInt16(props[0x0080]);
|
|
|
|
|
var data1 = device.CreateData(Keys.Warning, state == 1 ? "警报" : "正常", DeviceDataType.String, "状态", timestamp: timestamp);
|
|
|
|
|
var dto1 = data1.To<EditDataModel>();
|
|
|
|
|
device.AddorUpdateData(data1);
|
|
|
|
|
dataList.Add(dto1);
|
|
|
|
|
this.UpdateData(deviceRepo, device, device.CreateData(Keys.Warning, state == 1 ? "警报" : "正常", DeviceDataType.String, "状态", timestamp: timestamp));
|
|
|
|
|
|
|
|
|
|
//var data2 = device.CreateData(Keys.UnderVoltage, new BitArray(props[0x0080])[3], DeviceDataType.Int, "低电量");
|
|
|
|
|
//device.AddorUpdateData(data2);
|
|
|
|
@ -1265,43 +1217,25 @@ namespace IoTNode.DeviceServices.FBee
|
|
|
|
|
var pm1d0 = BitConverter.ToInt16(props[0x0002]);
|
|
|
|
|
var pm10 = BitConverter.ToInt16(props[0x0001]);
|
|
|
|
|
|
|
|
|
|
var data1 = device.CreateData(Keys.PM25, pm2d5, DeviceDataType.Int, "PM2.5", "μg/m³", this.GetDescription(Keys.PM25, pm2d5), timestamp: timestamp);
|
|
|
|
|
var data2 = device.CreateData(Keys.PM100, pm1d0, DeviceDataType.Int, "PM10", "μg/m³", this.GetDescription(Keys.PM100, pm1d0), timestamp: timestamp);
|
|
|
|
|
var data3 = device.CreateData(Keys.PM10, pm10, DeviceDataType.Int, "PM1.0", "μg/m³");
|
|
|
|
|
device.AddorUpdateData(data1);
|
|
|
|
|
device.AddorUpdateData(data2);
|
|
|
|
|
device.AddorUpdateData(data3);
|
|
|
|
|
var dto1 = data1.To<EditDataModel>();
|
|
|
|
|
var dto2 = data2.To<EditDataModel>();
|
|
|
|
|
var dto3 = data3.To<EditDataModel>();
|
|
|
|
|
dataList.Add(dto1);
|
|
|
|
|
dataList.Add(dto2);
|
|
|
|
|
dataList.Add(dto3);
|
|
|
|
|
this.UpdateData(deviceRepo, device, device.CreateData(Keys.PM25, pm2d5, DeviceDataType.Int, "PM2.5", "μg/m³", this.GetDescription(Keys.PM25, pm2d5), timestamp: timestamp));
|
|
|
|
|
this.UpdateData(deviceRepo, device, device.CreateData(Keys.PM100, pm1d0, DeviceDataType.Int, "PM10", "μg/m³", this.GetDescription(Keys.PM100, pm1d0), timestamp: timestamp));
|
|
|
|
|
this.UpdateData(deviceRepo, device, device.CreateData(Keys.PM10, pm10, DeviceDataType.Int, "PM1.0", "μg/m³"));
|
|
|
|
|
}
|
|
|
|
|
else if (clusterId == ClusterId.temperature)
|
|
|
|
|
{
|
|
|
|
|
var temperature = BitConverter.ToInt16(props[0x0000]) / 100f;
|
|
|
|
|
var desc = this.GetDescription(Keys.Temperature, temperature);
|
|
|
|
|
var data1 = device.CreateData(Keys.Temperature, temperature, DeviceDataType.Float, "温度", "℃", desc, timestamp: timestamp);
|
|
|
|
|
device.AddorUpdateData(data1);
|
|
|
|
|
var dto1 = data1.To<EditDataModel>();
|
|
|
|
|
dataList.Add(dto1);
|
|
|
|
|
this.UpdateData(deviceRepo, device, device.CreateData(Keys.Temperature, temperature, DeviceDataType.Float, "温度", "℃", desc, timestamp: timestamp));
|
|
|
|
|
}
|
|
|
|
|
else if (clusterId == ClusterId.humidity)
|
|
|
|
|
{
|
|
|
|
|
var humidity = BitConverter.ToInt16(props[0x0000]) / 100f;
|
|
|
|
|
var desc = this.GetDescription(Keys.Humidity, humidity);
|
|
|
|
|
var data1 = device.CreateData(Keys.Humidity, humidity, DeviceDataType.Float, "湿度", "RH%", desc, timestamp: timestamp);
|
|
|
|
|
device.AddorUpdateData(data1);
|
|
|
|
|
var dto1 = data1.To<EditDataModel>();
|
|
|
|
|
dataList.Add(dto1);
|
|
|
|
|
this.UpdateData(deviceRepo, device, device.CreateData(Keys.Humidity, humidity, DeviceDataType.Float, "湿度", "RH%", desc, timestamp: timestamp));
|
|
|
|
|
}
|
|
|
|
|
else if (clusterId == ClusterId.voltage)
|
|
|
|
|
{
|
|
|
|
|
var data1 = device.CreateData(Keys.Voltage, props[0x21][0] / 2f, DeviceDataType.Float, "电量", hidden: true, timestamp: timestamp);
|
|
|
|
|
device.AddorUpdateData(data1);
|
|
|
|
|
var dto1 = data1.To<EditDataModel>();
|
|
|
|
|
dataList.Add(dto1);
|
|
|
|
|
this.UpdateData(deviceRepo, device, device.CreateData(Keys.Voltage, props[0x21][0] / 2f, DeviceDataType.Float, "电量", hidden: true, timestamp: timestamp));
|
|
|
|
|
}
|
|
|
|
|
else if (clusterId == ClusterId.socket)
|
|
|
|
|
{
|
|
|
|
@ -1313,10 +1247,7 @@ namespace IoTNode.DeviceServices.FBee
|
|
|
|
|
tempBytes.Add(0x00);
|
|
|
|
|
var electricity = BitConverter.ToInt64(tempBytes.ToArray()) / 1000f;
|
|
|
|
|
|
|
|
|
|
var data1 = device.CreateData(Keys.Electricity, electricity, DeviceDataType.Float, "电量", "kWh", timestamp: timestamp);
|
|
|
|
|
device.AddorUpdateData(data1);
|
|
|
|
|
var dto1 = data1.To<EditDataModel>();
|
|
|
|
|
dataList.Add(dto1);
|
|
|
|
|
this.UpdateData(deviceRepo, device, device.CreateData(Keys.Electricity, electricity, DeviceDataType.Float, "电量", "kWh", timestamp: timestamp));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (deviceId == 0x0163)
|
|
|
|
@ -1329,10 +1260,7 @@ namespace IoTNode.DeviceServices.FBee
|
|
|
|
|
var irVersion = BitConverter.ToString((props[0x400a].Skip(3).Take(6).ToArray())).Replace("-", "").ToLower();
|
|
|
|
|
if (!string.IsNullOrEmpty(irVersion))
|
|
|
|
|
{
|
|
|
|
|
var data1 = device.CreateData(Keys.Version, irVersion, DeviceDataType.String, "红外版本", timestamp: timestamp);
|
|
|
|
|
device.AddorUpdateData(data1);
|
|
|
|
|
var dto1 = data1.To<EditDataModel>();
|
|
|
|
|
dataList.Add(dto1);
|
|
|
|
|
this.UpdateData(deviceRepo, device, device.CreateData(Keys.Version, irVersion, DeviceDataType.String, "红外版本", timestamp: timestamp));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
@ -1344,10 +1272,7 @@ namespace IoTNode.DeviceServices.FBee
|
|
|
|
|
if (irDeviceType == 0x01)
|
|
|
|
|
{
|
|
|
|
|
var keyCode = BitConverter.ToInt16(irdata.Skip(12).Take(2).ToArray());
|
|
|
|
|
var data1 = device.CreateData(Keys.KeyPress, keyCode, DeviceDataType.Int, "按键", timestamp: timestamp);
|
|
|
|
|
device.AddorUpdateData(data1);
|
|
|
|
|
var dto1 = data1.To<EditDataModel>();
|
|
|
|
|
dataList.Add(dto1);
|
|
|
|
|
this.UpdateData(deviceRepo, device, device.CreateData(Keys.KeyPress, keyCode, DeviceDataType.Int, "按键", timestamp: timestamp));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -1360,11 +1285,6 @@ namespace IoTNode.DeviceServices.FBee
|
|
|
|
|
this.X8D07020000(sn, device.Number);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
deviceRepo.SaveChanges();
|
|
|
|
|
foreach (var item in device.Data.Where(o => !o.Hidden))
|
|
|
|
|
{
|
|
|
|
|
this.SendDataToServer(item);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|