old mode 100755
new mode 100644
| | |
| | | var ac = (AC)myDevice;
|
| | | ac.DeviceStatusReport = common.DeviceStatusReport;
|
| | | var attriButeList = ac.DeviceStatusReport.AttriBute;
|
| | | foreach(var attList in attriButeList)
|
| | | {
|
| | | foreach (var attList in attriButeList) |
| | | { |
| | | //此属性表明室内当前的温度 * 100,实际温度为“LocalTemperature / 100”,单位:℃ |
| | | var curTemp = (attList.AttriButeData / 100 < ACControlBase.Temperature_High && attList.AttriButeData / 100 > ACControlBase.Temperature_Low) ? attList.AttriButeData / 100 : ACControlBase.Temperature_Default; |
| | | switch (attList.AttributeId)
|
| | | {
|
| | | case 0:
|
| | | ac.currentLocalTemperature = curTemp;
|
| | | ac.LastDateTime = DateTime.Now;
|
| | | break;
|
| | | case 17:
|
| | | ac.currentCoolingSetpoint = curTemp;
|
| | | ac.LastDateTime = DateTime.Now;
|
| | | break;
|
| | | case 18:
|
| | | ac.currentHeatingSetpoint = curTemp;
|
| | | ac.LastDateTime = DateTime.Now;
|
| | | break;
|
| | | case 4096:
|
| | | ac.currentAutoSetpoint = curTemp;
|
| | | ac.LastDateTime = DateTime.Now;
|
| | | break;
|
| | | case 28:
|
| | | ac.currentSystemMode = attList.AttriButeData;
|
| | | ac.LastDateTime = DateTime.Now;
|
| | | break;
|
| | | case 4099: |
| | | var value = Convert.ToString(attList.AttriButeData, 2).PadLeft(16, '0'); |
| | | var modeStr = value.Substring(value.Length - 5, 5); |
| | | for (int j = 0; j < modeStr.Length; j++) |
| | | { |
| | | ac.listSupportMode[j] = Convert.ToInt32(modeStr[j]) == 49 ? 1 : 0; |
| | | } |
| | | switch (attList.AttributeId) |
| | | { |
| | | case 0: |
| | | ac.currentLocalTemperature = curTemp; |
| | | ac.LastDateTime = DateTime.Now; |
| | | break; |
| | | case 17: |
| | | ac.currentCoolingSetpoint = curTemp; |
| | | ac.LastDateTime = DateTime.Now; |
| | | break; |
| | | case 18: |
| | | ac.currentHeatingSetpoint = curTemp; |
| | | ac.LastDateTime = DateTime.Now; |
| | | break; |
| | | case 4096: |
| | | ac.currentAutoSetpoint = curTemp; |
| | | ac.LastDateTime = DateTime.Now; |
| | | break; |
| | | case 28: |
| | | ac.currentSystemMode = attList.AttriButeData; |
| | | ac.LastDateTime = DateTime.Now; |
| | | break; |
| | | case 4097: |
| | | ac.CleanStatu = attList.AttriButeData == 42; |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | }
|
| | |
|
| | | if (common.DeviceStatusReport.CluterID == 514) |
| | | { |
| | | var ac = (AC)myDevice; |
| | | var attriButeList = common.DeviceStatusReport.AttriBute; |
| | | ac.DeviceStatusReport = common.DeviceStatusReport; |
| | | foreach(var attList in attriButeList) |
| | | foreach (var attList in attriButeList) |
| | | { |
| | | switch (attList.AttributeId) |
| | | {
|
| | | { |
| | | case 0: |
| | | ac.currentFanMode = attList.AttriButeData; |
| | | ac.LastDateTime = DateTime.Now; |
| | |
| | | } |
| | | } |
| | | }
|
| | | |
| | |
|
| | | //当CluterID=3,就证明该设备在线,直接标记
|
| | | if (common.DeviceStatusReport.CluterID == 3)
|
| | | {
|
| | |
| | | myDevice.IsOnline = 1;
|
| | | myDevice.LastDateTime = DateTime.Now;
|
| | | }
|
| | | break; |
| | | |
| | | case DeviceType.TemperatureSensor: |
| | | //温度 |
| | | if (common.DeviceStatusReport.CluterID == 1026) |
| | | { |
| | | var tempera = (TemperatureSensor)myDevice; |
| | | foreach (var data in common.DeviceStatusReport.AttriBute) |
| | | { |
| | | if (data.AttributeId == (int)ZigBee.Device.AttriButeId.MeasuredValue) |
| | | { |
| | | if (data.AttriButeData == 0) |
| | | { |
| | | tempera.Temperatrue = 0; |
| | | } |
| | | else if (data.AttriButeData > 32767) |
| | | { |
| | | //负数(特殊处理) |
| | | string strValue = (data.AttriButeData - 65536).ToString(); |
| | | //小数点需要一位 |
| | | strValue = strValue.Substring(0, strValue.Length - 1); |
| | | tempera.Temperatrue = Convert.ToDecimal(strValue.Insert(strValue.Length - 1, ".")); |
| | | } |
| | | else |
| | | { |
| | | //小数点需要一位 |
| | | string strValue = data.AttriButeData.ToString(); |
| | | strValue = strValue.Substring(0, strValue.Length - 1); |
| | | tempera.Temperatrue = Convert.ToDecimal(strValue.Insert(strValue.Length - 1, ".")); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | //湿度 |
| | | if (common.DeviceStatusReport.CluterID == 1029) |
| | | { |
| | | var tempera = (TemperatureSensor)myDevice; |
| | | foreach (var data in common.DeviceStatusReport.AttriBute) |
| | | { |
| | | if (data.AttributeId == (int)ZigBee.Device.AttriButeId.MeasuredValue) |
| | | { |
| | | if (data.AttriButeData == 0) |
| | | { |
| | | tempera.Humidity = 0; |
| | | } |
| | | else |
| | | { |
| | | //小数点需要一位(湿度没有负数) |
| | | string strValue = data.AttriButeData.ToString(); |
| | | strValue = strValue.Substring(0, strValue.Length - 1); |
| | | tempera.Humidity = Convert.ToDecimal(strValue.Insert(strValue.Length - 1, ".")); |
| | | tempera.LastDateTime = DateTime.Now; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | break;
|
| | | } |
| | | } |
| | |
| | | myDevice.IsOnline = common.IsOnline;
|
| | | //记录回复时间
|
| | | myDevice.LastDateTime = DateTime.Now; |
| | | } |
| | | else if (typeTag == "IASInfoReport") |
| | | { |
| | | try |
| | | { |
| | | switch (myDevice.Type)
|
| | | {
|
| | | case DeviceType.IASZone: |
| | | var iAS = (IASZone)myDevice; |
| | | iAS.iASInfo = (common as IASZone).iASInfo; |
| | | iAS.LastDateTime = DateTime.Now; |
| | | break; |
| | | } |
| | | } |
| | | catch { } |
| | | } |
| | | } |
| | | /// <summary> |
| | |
| | | { |
| | | BackgroundColor = Shared.Common.ZigbeeColor.Current.MainColor; |
| | | ZbGateway.StatusList.Add(this); |
| | | Shared.Application.LocationAction += (lat, lon) => |
| | | Shared.Application.LocationAction += (lon, lat) => |
| | | { |
| | | AccountLogic.Instance.ReceiveAppLatAndLon(lat.ToString(), lon.ToString()); |
| | | AccountLogic.Instance.ReceiveAppLatAndLon(lon.ToString(), lat.ToString()); |
| | | }; |
| | | } |
| | | |