From 9c607e921ca7c379799e4dd88b140265a1d5d5c5 Mon Sep 17 00:00:00 2001
From: gxc <guoxuecheng@guoxuechengdeMacBook-Pro.local>
Date: 星期五, 22 十一月 2019 16:35:30 +0800
Subject: [PATCH] 需要合并
---
ZigbeeApp/Shared/Phone/UserView/UserPage.cs | 436 +++++++++++++++++++++++-------------------------------
1 files changed, 188 insertions(+), 248 deletions(-)
diff --git a/ZigbeeApp/Shared/Phone/UserView/UserPage.cs b/ZigbeeApp/Shared/Phone/UserView/UserPage.cs
index a051bd3..2a79f61 100644
--- a/ZigbeeApp/Shared/Phone/UserView/UserPage.cs
+++ b/ZigbeeApp/Shared/Phone/UserView/UserPage.cs
@@ -67,208 +67,199 @@
/// <param name="typeTag">Type tag.</param>
public void DeviceInfoChange(CommonDevice common, string typeTag)
{
- ///
+ var myDevice = LocalDevice.Current.GetDevice(common.DeviceAddr, common.DeviceEpoint);
+ if (myDevice == null)
+ {
+ return;
+ }
//璁惧涓婃姤鐘舵�佷腑 褰揅luterID=3,灏辫瘉鏄庤璁惧鍦ㄧ嚎锛岀洿鎺ユ爣璁�
if (typeTag == "DeviceStatusReport")
{
try
- {
- for (int i = 0; i < Room.AllRoomDeviceUIList.Count; i++)
- {
- var deviceUI = Room.AllRoomDeviceUIList[i];
- if (deviceUI.CommonDevice == null)
- {
- //璁惧涓虹┖
- continue;
- }
- if (common.DeviceAddr != deviceUI.CommonDevice.DeviceAddr || common.DeviceEpoint != deviceUI.CommonDevice.DeviceEpoint)
- {
- //鍒ゆ柇鏄惁涓哄綋鍓嶈澶�
- continue;
- }
- switch (deviceUI.CommonDevice.Type)
- {
- case DeviceType.OnOffOutput:
- //寮�鍏冲姛鑳�
- if ((common as ZigBee.Device.ToggleLight).DeviceStatusReport.CluterID == 6)
- {
- var onOffOutputLight = deviceUI.CommonDevice as ZigBee.Device.ToggleLight;
- onOffOutputLight.DeviceStatusReport = (common as ZigBee.Device.ToggleLight).DeviceStatusReport;
- //璁板綍銆佹洿鏂扮姸鎬�
- if (onOffOutputLight.DeviceStatusReport.AttriBute == null || onOffOutputLight.DeviceStatusReport.AttriBute.Count == 0)
- {
- continue;
- }
- onOffOutputLight.OnOffStatus = onOffOutputLight.DeviceStatusReport.AttriBute[0].AttriButeData;
- //璁板綍鍥炲鏃堕棿
- onOffOutputLight.LastDateTime = DateTime.Now;
+ {
+ switch (myDevice.Type)
+ {
+ case DeviceType.OnOffOutput:
+ //寮�鍏冲姛鑳�
+ if (common.DeviceStatusReport.CluterID == 6)
+ {
+ var onOffOutputLight = (ToggleLight)myDevice;
+ onOffOutputLight.DeviceStatusReport = common.DeviceStatusReport;
+ //璁板綍銆佹洿鏂扮姸鎬�
+ if (onOffOutputLight.DeviceStatusReport.AttriBute == null || onOffOutputLight.DeviceStatusReport.AttriBute.Count == 0)
+ {
+ return;
+ }
+ onOffOutputLight.OnOffStatus = onOffOutputLight.DeviceStatusReport.AttriBute[0].AttriButeData;
+ onOffOutputLight.LastDateTime = DateTime.Now;
+ }
+ //褰揅luterID=3,灏辫瘉鏄庤璁惧鍦ㄧ嚎锛岀洿鎺ユ爣璁�
+ if (common.DeviceStatusReport.CluterID == 3)
+ {
+ myDevice.IsOnline = 1;
+ myDevice.LastDateTime = DateTime.Now;
+ }
+ break;
+
+ case DeviceType.AirSwitch:
+ //寮�鍏冲姛鑳�
+ if (common.DeviceStatusReport.CluterID == 6)
+ {
+ var airSwitch = (AirSwitch)myDevice;
+ airSwitch.DeviceStatusReport = common.DeviceStatusReport;
+ if (airSwitch.DeviceStatusReport.AttriBute == null || airSwitch.DeviceStatusReport.AttriBute.Count == 0)
+ {
+ return;
+ }
+ airSwitch.OnOffStatus = airSwitch.DeviceStatusReport.AttriBute[0].AttriButeData;
+ airSwitch.LastDateTime = DateTime.Now;
+
+ }
+ //褰揅luterID=3,灏辫瘉鏄庤璁惧鍦ㄧ嚎锛岀洿鎺ユ爣璁�
+ if (common.DeviceStatusReport.CluterID == 3)
+ {
+ myDevice.IsOnline = 1;
+ myDevice.LastDateTime = DateTime.Now;
+ }
+ break;
+
+ case DeviceType.WindowCoveringDevice:
+ if (common.DeviceStatusReport.CluterID == 258)
+ {
+ var rollershade = (Rollershade)myDevice;
+ rollershade.DeviceStatusReport = common.DeviceStatusReport;
+ var attriButeList = rollershade.DeviceStatusReport.AttriBute;
+ if (attriButeList == null || attriButeList.Count == 0)
+ {
+ return;
+ }
+ switch (attriButeList[0].AttributeId)
+ {
+ case 0:
+ rollershade.WcdType = attriButeList[0].AttriButeData;
+ rollershade.LastDateTime = DateTime.Now;
+ break;
+ }
+ }
+ if (common.DeviceStatusReport.CluterID == 3)
+ {
+ myDevice.IsOnline = 1;
+ myDevice.LastDateTime = DateTime.Now;
+ }
+ break;
+
+ case DeviceType.Thermostat:
+ //AC鍔熻兘
+ if (common.DeviceStatusReport.CluterID == 513)
+ {
+ var ac = (AC)myDevice;
+ ac.DeviceStatusReport = common.DeviceStatusReport;
+ var attriButeList = ac.DeviceStatusReport.AttriBute;
+ if (attriButeList == null || attriButeList.Count == 0)
+ {
+ return;
}
- //褰揅luterID=3,灏辫瘉鏄庤璁惧鍦ㄧ嚎锛岀洿鎺ユ爣璁�
- if ((common as ZigBee.Device.ToggleLight).DeviceStatusReport.CluterID == 3)
+ //姝ゅ睘鎬ц〃鏄庡鍐呭綋鍓嶇殑娓╁害 * 100锛屽疄闄呮俯搴︿负鈥淟ocalTemperature / 100鈥濓紝鍗曚綅锛氣剝
+ var curTemp = (attriButeList[0].AttriButeData / 100 < ACControlBase.Temperature_High || attriButeList[0].AttriButeData / 100 > ACControlBase.Temperature_Low) ? attriButeList[0].AttriButeData / 100 : ACControlBase.Temperature_Default;
+ switch (attriButeList[0].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 = attriButeList[0].AttriButeData;
+ ac.LastDateTime = DateTime.Now;
+ break;
+ }
+ }
+
+ if (common.DeviceStatusReport.CluterID == 514)
+ {
+ var ac = (AC)myDevice;
+ var attriButeList = common.DeviceStatusReport.AttriBute;
+ if (attriButeList == null || attriButeList.Count == 0)
{
- var onOffOutputLight = deviceUI.CommonDevice as ToggleLight;
- onOffOutputLight.IsOnline = 1;
- //璁板綍鍥炲鏃堕棿
- onOffOutputLight.LastDateTime = DateTime.Now;
+ return;
}
- break;
-
- case DeviceType.AirSwitch:
- //寮�鍏冲姛鑳�
- if ((common as ZigBee.Device.AirSwitch).DeviceStatusReport.CluterID == 6)
+ ac.DeviceStatusReport = common.DeviceStatusReport;
+ switch (attriButeList[0].AttributeId)
{
- var airSwitch = deviceUI.CommonDevice as ZigBee.Device.AirSwitch;
- airSwitch.DeviceStatusReport = (common as ZigBee.Device.AirSwitch).DeviceStatusReport;
- //璁板綍銆佹洿鏂扮姸鎬�
- if (airSwitch.DeviceStatusReport.AttriBute == null || airSwitch.DeviceStatusReport.AttriBute.Count == 0)
- {
- return;
- }
- airSwitch.OnOffStatus = airSwitch.DeviceStatusReport.AttriBute[0].AttriButeData;
- //璁板綍鍥炲鏃堕棿
- airSwitch.LastDateTime = DateTime.Now;
-
+ case 0:
+ ac.currentFanMode = attriButeList[0].AttriButeData;
+ ac.LastDateTime = DateTime.Now;
+ break;
+ case 4096:
+ ac.currentFanSwingMode = attriButeList[0].AttriButeData;
+ ac.LastDateTime = DateTime.Now;
+ break;
}
- //褰揅luterID=3,灏辫瘉鏄庤璁惧鍦ㄧ嚎锛岀洿鎺ユ爣璁�
- if ((common as ZigBee.Device.AirSwitch).DeviceStatusReport.CluterID == 3)
- {
- var airSwitch = deviceUI.CommonDevice as AirSwitch;
- airSwitch.IsOnline = 1;
- //璁板綍鍥炲鏃堕棿
- airSwitch.LastDateTime = DateTime.Now;
- }
- break;
-
- case DeviceType.WindowCoveringDevice:
- if ((common as ZigBee.Device.Rollershade).DeviceStatusReport.CluterID == 258)
- {
- var rollershade = deviceUI.CommonDevice as ZigBee.Device.Rollershade;
- rollershade.DeviceStatusReport = (common as ZigBee.Device.Rollershade).DeviceStatusReport;
- var attriButeList = rollershade.DeviceStatusReport.AttriBute;
- if (attriButeList == null || attriButeList.Count == 0)
- {
- continue;
- }
- switch (attriButeList[0].AttributeId)
- {
- case 0:
- rollershade.WcdType = attriButeList[0].AttriButeData;
- rollershade.LastDateTime = DateTime.Now;
- break;
- }
- }
- if ((common as ZigBee.Device.Rollershade).DeviceStatusReport.CluterID == 3)
- {
- var rollershade = deviceUI.CommonDevice as ZigBee.Device.Rollershade;
- rollershade.IsOnline = 1;
- //璁板綍鍥炲鏃堕棿
- rollershade.LastDateTime = DateTime.Now;
- }
- break;
-
- case DeviceType.Thermostat:
- //AC鍔熻兘
- if ((common as ZigBee.Device.AC).DeviceStatusReport.CluterID == 513)
- {
- var ac = deviceUI.CommonDevice as ZigBee.Device.AC;
- ac.DeviceStatusReport = (common as ZigBee.Device.AC).DeviceStatusReport;
- var attriButeList = ac.DeviceStatusReport.AttriBute;
- if (attriButeList == null || attriButeList.Count == 0)
- {
- continue;
- }
- switch (attriButeList[0].AttributeId)
- {
- case 0:
- //姝ゅ睘鎬ц〃鏄庡鍐呭綋鍓嶇殑娓╁害 * 100锛屽疄闄呮俯搴︿负鈥淟ocalTemperature / 100鈥濓紝鍗曚綅锛氣剝
- ac.currentLocalTemperature = attriButeList[0].AttriButeData / 100;
- ac.LastDateTime = DateTime.Now;
- break;
-
- case 17:
- //姝ゅ睘鎬ц〃鏄庢璁惧褰撳墠鐨勫埗鍐锋俯搴︼紝瀹為檯娓╁害涓衡�淐oolingSetpoint / 100鈥濓紝鍗曚綅锛氣剝銆�
- ac.currentCoolingSetpoint = attriButeList[0].AttriButeData / 100;
- ac.LastDateTime = DateTime.Now;
- break;
-
- case 18:
- //姝ゅ睘鎬ц〃鏄庢璁惧褰撳墠鐨勫埗鐑俯搴︼紝瀹為檯娓╁害涓衡�淗eatingSetpoint / 100鈥濓紝鍗曚綅锛氣剝銆�
- ac.currentHeatingSetpoint = attriButeList[0].AttriButeData / 100;
- ac.LastDateTime = DateTime.Now;
- break;
-
- case 4096:
- //姝ゅ睘鎬ц〃鏄庢璁惧褰撳墠鐨勮嚜鍔ㄦ俯搴︼紝瀹為檯娓╁害涓衡�淎utoSetpoint / 100鈥濓紝鍗曚綅锛氣剝銆�
- ac.currentAutoSetpoint = (attriButeList[0].AttriButeData / 100 > ACControlBase.Temperature_High || attriButeList[0].AttriButeData / 100 < ACControlBase.Temperature_Low) ? attriButeList[0].AttriButeData / 100 : ACControlBase.Temperature_Default;
- ac.LastDateTime = DateTime.Now;
- break;
-
- case 28:
- //姝ゅ睘鎬ф弿杩版亽娓╄澶囨澶勪簬鍝妯″紡
- //Off = 0 Auto = 1 Cool = 3 Heat = 4 FanOnly = 7 Dry = 8
- ac.currentSystemMode = attriButeList[0].AttriButeData;
- ac.LastDateTime = DateTime.Now;
- break;
-
- }
-
- }
- //褰揅luterID=3,灏辫瘉鏄庤璁惧鍦ㄧ嚎锛岀洿鎺ユ爣璁�
- if ((common as ZigBee.Device.AC).DeviceStatusReport.CluterID == 3)
- {
- var ac = deviceUI.CommonDevice as AC;
- ac.IsOnline = 1;
- //璁板綍鍥炲鏃堕棿
- ac.LastDateTime = DateTime.Now;
-
- }
- break;
-
- case DeviceType.DimmableLight:
- //璋冨厜鐏姛鑳�
- //寮�鍏冲姛鑳�
- if ((common as ZigBee.Device.DimmableLight).DeviceStatusReport.CluterID == 6)
- {
- var dimmableLight = deviceUI.CommonDevice as ZigBee.Device.DimmableLight;
- dimmableLight.DeviceStatusReport = (common as ZigBee.Device.DimmableLight).DeviceStatusReport;
- //璁板綍銆佹洿鏂扮姸鎬�
- if (dimmableLight.DeviceStatusReport.AttriBute == null || dimmableLight.DeviceStatusReport.AttriBute.Count == 0)
- {
- return;
- }
- dimmableLight.OnOffStatus = dimmableLight.DeviceStatusReport.AttriBute[0].AttriButeData;
- //璁板綍鍥炲鏃堕棿
- dimmableLight.LastDateTime = DateTime.Now;
- }
- //浜害
- if ((common as ZigBee.Device.DimmableLight).DeviceStatusReport.CluterID == 8)
- {
- var dimmableLight = deviceUI.CommonDevice as ZigBee.Device.DimmableLight;
- dimmableLight.DeviceStatusReport = (common as ZigBee.Device.DimmableLight).DeviceStatusReport;
- var attriButeList = dimmableLight.DeviceStatusReport.AttriBute;
- if (attriButeList == null || attriButeList.Count == 0)
- {
- continue;
- }
- switch (attriButeList[0].AttributeId)
- {
- case 0:
- //姝ゅ睘鎬ц〃鏄庡綋鍓嶄寒搴︾▼搴�
- dimmableLight.Level = attriButeList[0].AttriButeData;
- dimmableLight.LastDateTime = DateTime.Now;
- break;
- }
- }
- //褰揅luterID=3,灏辫瘉鏄庤璁惧鍦ㄧ嚎锛岀洿鎺ユ爣璁�
- if ((common as ZigBee.Device.DimmableLight).DeviceStatusReport.CluterID == 3)
- {
- var dimmableLight = deviceUI.CommonDevice as DimmableLight;
- dimmableLight.IsOnline = 1;
- //璁板綍鍥炲鏃堕棿
- dimmableLight.LastDateTime = DateTime.Now;
- }
- break;
- }
+ }
+
+ //褰揅luterID=3,灏辫瘉鏄庤璁惧鍦ㄧ嚎锛岀洿鎺ユ爣璁�
+ if (common.DeviceStatusReport.CluterID == 3)
+ {
+ myDevice.IsOnline = 1;
+ myDevice.LastDateTime = DateTime.Now;
+ }
+ break;
+
+ case DeviceType.DimmableLight:
+ //璋冨厜鐏姛鑳�
+ //寮�鍏冲姛鑳�
+ if (common.DeviceStatusReport.CluterID == 6)
+ {
+ var dimmableLight = (DimmableLight)myDevice;
+ dimmableLight.DeviceStatusReport = common.DeviceStatusReport;
+ //璁板綍銆佹洿鏂扮姸鎬�
+ if (dimmableLight.DeviceStatusReport.AttriBute == null || dimmableLight.DeviceStatusReport.AttriBute.Count == 0)
+ {
+ return;
+ }
+ dimmableLight.OnOffStatus = dimmableLight.DeviceStatusReport.AttriBute[0].AttriButeData;
+ dimmableLight.LastDateTime = DateTime.Now;
+ }
+ //浜害
+ if (common.DeviceStatusReport.CluterID == 8)
+ {
+ var dimmableLight = (DimmableLight)myDevice;
+ dimmableLight.DeviceStatusReport = common.DeviceStatusReport;
+ var attriButeList = dimmableLight.DeviceStatusReport.AttriBute;
+ if (attriButeList == null || attriButeList.Count == 0)
+ {
+ return;
+ }
+ switch (attriButeList[0].AttributeId)
+ {
+ case 0:
+ dimmableLight.Level = attriButeList[0].AttriButeData;
+ dimmableLight.LastDateTime = DateTime.Now;
+ break;
+ }
+ }
+ //褰揅luterID=3,灏辫瘉鏄庤璁惧鍦ㄧ嚎锛岀洿鎺ユ爣璁�
+ if (common.DeviceStatusReport.CluterID == 3)
+ {
+ myDevice.IsOnline = 1;
+ myDevice.LastDateTime = DateTime.Now;
+ }
+ break;
}
}
catch (Exception ex)
@@ -278,61 +269,10 @@
}
//璁惧鍦ㄧ嚎鐘舵�佷笂鎶�
else if (typeTag == "OnlineStatusChange")
- {
- try
- {
- for (int i = 0; i < Room.AllRoomDeviceUIList.Count; i++)
- {
- var deviceUI = Room.AllRoomDeviceUIList[i];
- if (deviceUI.CommonDevice == null)
- {
- //璁惧涓虹┖鎴栬�呮帶浠朵负绌�
- continue;
- }
- if (common.DeviceAddr != deviceUI.CommonDevice.DeviceAddr || common.DeviceEpoint != deviceUI.CommonDevice.DeviceEpoint)
- {
- //鍒ゆ柇鏄惁涓哄綋鍓嶈澶�
- continue;
- }
- switch (deviceUI.CommonDevice.Type)
- {
- case DeviceType.OnOffOutput:
- var onOffOutputLight = deviceUI.CommonDevice as ToggleLight;
- onOffOutputLight.IsOnline = (common as ToggleLight).IsOnline;
- //璁板綍鍥炲鏃堕棿
- onOffOutputLight.LastDateTime = DateTime.Now;
- break;
- case DeviceType.AirSwitch:
- var airSwitch = deviceUI.CommonDevice as AirSwitch;
- airSwitch.IsOnline = (common as AirSwitch).IsOnline;
- //璁板綍鍥炲鏃堕棿
- airSwitch.LastDateTime = DateTime.Now;
- break;
- case DeviceType.WindowCoveringDevice:
- var rollershade = deviceUI.CommonDevice as ZigBee.Device.Rollershade;
- rollershade.IsOnline = (common as Rollershade).IsOnline;
- //璁板綍鍥炲鏃堕棿
- rollershade.LastDateTime = DateTime.Now;
- break;
- case DeviceType.Thermostat:
- var ac = deviceUI.CommonDevice as ZigBee.Device.AC;
- ac.IsOnline = (common as ZigBee.Device.AC).IsOnline;
- //璁板綍鍥炲鏃堕棿
- ac.LastDateTime = DateTime.Now;
- break;
- case DeviceType.DimmableLight:
- var dimmableLight = deviceUI.CommonDevice as ZigBee.Device.DimmableLight;
- dimmableLight.IsOnline = (common as ZigBee.Device.DimmableLight).IsOnline;
- //璁板綍鍥炲鏃堕棿
- dimmableLight.LastDateTime = DateTime.Now;
- break;
- }
- }
- }
- catch (Exception ex)
- {
- System.Console.WriteLine($"userpage鍔熻兘鍒锋柊-Error:{ex.Message}");
- }
+ {
+ myDevice.IsOnline = common.IsOnline;
+ //璁板綍鍥炲鏃堕棿
+ myDevice.LastDateTime = DateTime.Now;
}
}
/// <summary>
--
Gitblit v1.8.0