From 8f780c8ea5411f01f788d52bad7c9440d68eb349 Mon Sep 17 00:00:00 2001
From: gxc <guoxuecheng@guoxuechengdeMacBook-Pro.local>
Date: 星期一, 30 十二月 2019 13:35:01 +0800
Subject: [PATCH] 2019.12.30
---
ZigbeeApp/.vs/GateWay/xs/UserPrefs.xml | 31 ++
ZigbeeApp/Shared/Phone/Device/CommonForm/RoomView.cs | 224 ++++++++++++--------
ZigbeeApp/.vs/GateWay/xs/sqlite3/storage.ide | 0
ZigbeeApp/Shared/Phone/Device/DeviceLogic/ReadDeviceAttributeLogic.cs | 91 ++++++++
ZigbeeApp/Shared/Phone/Device/Room/EditRoom.cs | 307 +++++++++++++--------------
5 files changed, 394 insertions(+), 259 deletions(-)
diff --git a/ZigbeeApp/.vs/GateWay/xs/UserPrefs.xml b/ZigbeeApp/.vs/GateWay/xs/UserPrefs.xml
index 9205cd3..fdcd02e 100644
--- a/ZigbeeApp/.vs/GateWay/xs/UserPrefs.xml
+++ b/ZigbeeApp/.vs/GateWay/xs/UserPrefs.xml
@@ -1,27 +1,42 @@
锘�<Properties StartupConfiguration="{28EDE1FF-20EF-476B-8AF8-24A3EEB69F45}|Default">
- <MonoDevelop.Ide.ItemProperties.GateWay.Droid PreferredExecutionTarget="Android.SelectDevice" />
+ <MonoDevelop.Ide.ItemProperties.GateWay.Droid PreferredExecutionTarget="Android.M7BBB18B19152766" />
<MonoDevelop.Ide.ItemProperties.GateWay.Ios automaticSigning="False" PreferredExecutionTarget="MonoDevelop.IPhone.IPhoneDeviceTarget.8c0bdb303f25d82c2a42fb8bfca449bfaca00260" />
<MonoDevelop.Ide.ItemProperties.ShardLib PreferredExecutionTarget="Android.M7BBB18B19152766" />
- <MonoDevelop.Ide.Workbench ActiveDocument="Shared/R.cs">
+ <MonoDevelop.Ide.Workbench ActiveDocument="Shared/Phone/Device/Room/EditRoom.cs">
<Files>
- <File FileName="Shared/R.cs" Line="808" Column="2" />
+ <File FileName="Shared/R.cs" Line="809" Column="16" />
<File FileName="GateWay.Droid/Assets/Language.ini" />
<File FileName="Shared/Phone/Device/Category/Category.cs" />
<File FileName="Shared/Phone/Device/Category/SelectDevice.cs" />
<File FileName="Shared/Common/Device.cs" />
<File FileName="Shared/Phone/UserView/UserHomeView.cs" />
+ <File FileName="Shared/Phone/Device/Light/LightControl.cs" />
<File FileName="Shared/Phone/Device/Category/CategoryAddScene.cs" />
- <File FileName="Shared/Phone/Device/CommonForm/DeviceInfoEditRow.cs" />
- <File FileName="Shared/Common/DeviceUI.cs" />
- <File FileName="Shared/Phone/Device/CommonForm/RoomView.cs" />
- <File FileName="Shared/Phone/Device/CommonForm/DeviceInfoRow.cs" />
+ <File FileName="Shared/Phone/Device/CommonForm/RoomView.cs" Line="271" Column="59" />
+ <File FileName="Shared/Phone/Device/Room/EditRoom.cs" Line="84" Column="74" />
+ <File FileName="Shared/Phone/Device/Room/RoomTemperatureSetting.cs" />
+ <File FileName="Shared/Phone/Device/Room/RoomHumiditySetting.cs" />
</Files>
<Pads>
<Pad Id="ProjectPad">
<State name="__root__">
<Node name="GateWay" expanded="True">
<Node name="Shared" expanded="True">
- <Node name="R.cs" selected="True" />
+ <Node name="Common" expanded="True" />
+ <Node name="Phone" expanded="True">
+ <Node name="Device" expanded="True">
+ <Node name="CommonForm" expanded="True" />
+ <Node name="DeviceLogic" expanded="True" />
+ <Node name="Light" expanded="True" />
+ <Node name="Room" expanded="True">
+ <Node name="EditRoom.cs" selected="True" />
+ </Node>
+ </Node>
+ <Node name="UserCenter" expanded="True">
+ <Node name="Residence" expanded="True" />
+ </Node>
+ <Node name="UserView" expanded="True" />
+ </Node>
</Node>
</Node>
</State>
diff --git a/ZigbeeApp/.vs/GateWay/xs/sqlite3/storage.ide b/ZigbeeApp/.vs/GateWay/xs/sqlite3/storage.ide
index 23a5b6f..836de9c 100644
--- a/ZigbeeApp/.vs/GateWay/xs/sqlite3/storage.ide
+++ b/ZigbeeApp/.vs/GateWay/xs/sqlite3/storage.ide
Binary files differ
diff --git a/ZigbeeApp/Shared/Phone/Device/CommonForm/RoomView.cs b/ZigbeeApp/Shared/Phone/Device/CommonForm/RoomView.cs
index 0d012e2..e042f59 100644
--- a/ZigbeeApp/Shared/Phone/Device/CommonForm/RoomView.cs
+++ b/ZigbeeApp/Shared/Phone/Device/CommonForm/RoomView.cs
@@ -1,11 +1,13 @@
锘縰sing System;
using Shared.Common;
+using Shared.Phone.Device.DeviceLogic;
using Shared.Phone.UserCenter;
using Shared.Phone.UserView;
+using ZigBee.Device;
namespace Shared.Phone.Device.CommonForm
{
- public class RoomView:FrameLayout
+ public class RoomView:FrameLayout, ZigBee.Common.IStatus
{
/// <summary>
/// Room
@@ -22,10 +24,130 @@
Button roomListBtn;
+ Button temperatureText;
+
+ Button humidityText;
+
+ CommonDevice temperDevice;
+
+ CommonDevice humidDevice;
+
+ #region 鈼� 鎺ュ彛__________________________
+ /// <summary>
+ /// 澶勭悊鍙樺寲浜嬩欢 --灏嗗純鐢� 鏀圭敤DeviceInfoChange()
+ /// </summary>
+ /// <returns>The changed.</returns>
+ /// <param name="common">Common.</param>
+ public void Changed(CommonDevice common)
+ {
+
+ }
+ /// <summary>
+ /// Changeds the IL ogic status.
+ /// </summary>
+ /// <param name="logic">Logic.</param>
+ public void ChangedILogicStatus(ZigBee.Device.Logic logic)
+ {
+ //throw new NotImplementedException();
+ }
+ /// <summary>
+ /// Changeds the IS cene status.
+ /// </summary>
+ /// <param name="scene">Scene.</param>
+ public void ChangedISceneStatus(Scene scene)
+ {
+ //throw new NotImplementedException();
+ }
+ /// <summary>
+ /// 璁惧鐘舵�佹洿鏂版帴鍙�
+ /// <para>type锛氬鏋滀负 DeviceInComingRespon:璁惧鏂颁笂鎶�</para>
+ /// <para>type锛氬鏋滀负 IASInfoReport:RemoveDeviceRespon</para>
+ /// <para>type锛氬鏋滀负 DeviceStatusReport:璁惧涓婃姤</para>
+ /// <para>type锛氬鏋滀负 IASInfoReport:IAS瀹夐槻淇℃伅涓婃姤</para>
+ /// <para>type锛氬鏋滀负 OnlineStatusChange: 璁惧鍦ㄧ嚎鐘舵�佹洿鏂�</para>
+ /// </summary>
+ /// <param name="common">Common.</param>
+ /// <param name="typeTag">Type tag.</param>
+ public void DeviceInfoChange(CommonDevice common, string typeTag)
+ {
+ if (typeTag == "DeviceStatusReport")
+ {
+ Application.RunOnMainThread(() =>
+ {
+ try
+ {
+ if (common.DeviceStatusReport.AttriBute == null || common.DeviceStatusReport.AttriBute.Count == 0)
+ {
+ return;
+ }
+ //鏄惁涓哄綋鍓嶈澶�
+ if ((temperDevice?.DeviceEpoint != common.DeviceEpoint || temperDevice?.DeviceAddr != common.DeviceAddr) && (humidDevice?.DeviceEpoint != common.DeviceEpoint || humidDevice?.DeviceAddr != common.DeviceAddr) )
+ {
+ //return;
+ }
+
+ //if (common.Type == DeviceType.TemperatureSensor)
+ //{
+ if (common.DeviceStatusReport.CluterID == 1026)
+ {
+ foreach (var data in common.DeviceStatusReport.AttriBute)
+ {
+ if (data.AttributeId == (int)ZigBee.Device.AttriButeId.MeasuredValue)
+ {
+ if (data.AttriButeData == 0)
+ {
+ //0
+ humidityText.Text = "--%";
+ room.Humidity = 0;
+ }
+ else
+ {
+ //灏忔暟鐐归渶瑕佷竴浣�(婀垮害娌℃湁璐熸暟)
+ string strValue = data.AttriButeData.ToString();
+ strValue = strValue.Substring(0, strValue.Length - 1);
+ humidityText.Text = strValue.Insert(strValue.Length - 1, ".") + "%";
+ room.Humidity = int.Parse(strValue) * 0.1;
+ }
+ }
+ }
+ }
+ else if (common.DeviceStatusReport.CluterID == 1029)
+ {
+ foreach (var data in common.DeviceStatusReport.AttriBute)
+ {
+ if (data.AttributeId == (int)ZigBee.Device.AttriButeId.MeasuredValue)
+ {
+ if (data.AttriButeData == 0)
+ {
+ //0
+ humidityText.Text = "--%";
+ room.Humidity = 0;
+ }
+ else
+ {
+ //灏忔暟鐐归渶瑕佷竴浣�(婀垮害娌℃湁璐熸暟)
+ string strValue = data.AttriButeData.ToString();
+ strValue = strValue.Substring(0, strValue.Length - 1);
+ humidityText.Text = strValue.Insert(strValue.Length - 1, ".") + "%";
+ room.Humidity = int.Parse(strValue) * 0.1;
+ }
+ }
+ }
+ }
+ //}
+ }
+ catch (Exception ex)
+ {
+ System.Console.WriteLine($"Error:{ex.Message}");
+ }
+ });
+ }
+ }
+ #endregion
+
public override void RemoveFromParent()
{
- HdlGatewayReceiveLogic.Current.RemoveEvent("TemperatrueDevice" + room.Id);
- HdlGatewayReceiveLogic.Current.RemoveEvent("HumidityDevice" + room.Id);
+ ZbGateway.StatusList.Remove(this);
base.RemoveFromParent();
}
@@ -40,6 +162,7 @@
Y = Application.GetRealHeight(y);
Width = Application.GetRealWidth(717);
Height = Application.GetRealHeight(478);
+ ZbGateway.StatusList.Add(this);
}
/// <summary>
@@ -49,6 +172,10 @@
public void Init(Common.Room r)
{
this.room = r;
+
+ this.temperDevice= Common.LocalDevice.Current.GetDevice(room.TemperatrueDevice);
+
+ this.humidDevice= Common.LocalDevice.Current.GetDevice(room.HumidityDevice);
var roomBackView = new FrameLayout()
{
@@ -106,13 +233,13 @@
};
roomTemperatureBackground.AddChidren(temperatureIcon);
- var temperatureText = new Button
+ temperatureText = new Button
{
X = Application.GetRealWidth(69),
Width = Application.GetRealWidth(120),
Height = Application.GetRealHeight(58),
Gravity = Gravity.CenterVertical,
- Text = $"{room.Temperatrue}鈩�"
+ Text = Math.Abs(room.Temperatrue) <= 0 ? "--鈩�" : $"{room.Temperatrue}鈩�"
};
roomTemperatureBackground.AddChidren(temperatureText);
@@ -126,107 +253,28 @@
};
roomTemperatureBackground.AddChidren(humidityIcon);
- var humidityText = new Button
+ humidityText = new Button
{
X = Application.GetRealWidth(260),
Width = Application.GetRealWidth(120),
Height = Application.GetRealHeight(58),
Gravity = Gravity.CenterVertical,
- Text = $"{room.Humidity}%"
+ Text = Math.Abs(room.Temperatrue) <= 0 ? "--%" : $"{room.Humidity}%"
};
roomTemperatureBackground.AddChidren(humidityText);
if (string.IsNullOrEmpty(room.TemperatrueDevice) == false)
{
- HdlGatewayReceiveLogic.Current.RemoveEvent("TemperatrueDevice" + room.Id);
- HdlGatewayReceiveLogic.Current.AddAttributeEvent("TemperatrueDevice" + room.Id, ReceiveComandDiv.A璁惧灞炴�т笂鎶�, (report) =>
- {
- string mainKeys = Common.LocalDevice.Current.GetDeviceMainKeys(report);
- if (room.TemperatrueDevice != mainKeys)
- {
- return;
- }
- //绉婚櫎鎺変簨浠�
- HdlGatewayReceiveLogic.Current.RemoveEvent("TemperatrueDevice");
-
- foreach (var data in report.DeviceStatusReport.AttriBute)
- {
- if (data.AttributeId == (int)ZigBee.Device.AttriButeId.MeasuredValue)
- {
- if (data.AttriButeData == 0)
- {
- //0鈩�
- temperatureText.Text = "0.0鈩�";
- room.Temperatrue = 0;
- }
- else if (data.AttriButeData > 32767)
- {
- //璐熸暟(鐗规畩澶勭悊)
- string strValue = (data.AttriButeData - 65536).ToString();
- //灏忔暟鐐归渶瑕佷竴浣�
- strValue = strValue.Substring(0, strValue.Length - 1);
- temperatureText.Text = strValue.Insert(strValue.Length - 1, ".") + "鈩�";
- room.Temperatrue = int.Parse(strValue) * 0.1;
- }
- else
- {
- //灏忔暟鐐归渶瑕佷竴浣�
- string strValue = data.AttriButeData.ToString();
- strValue = strValue.Substring(0, strValue.Length - 1);
- temperatureText.Text = strValue.Insert(strValue.Length - 1, ".") + "鈩�";
- room.Temperatrue = int.Parse(strValue) * 0.1;
- }
- }
- }
- });
//鍙戦�佽幏鍙栨俯搴︾殑鍛戒护
var dev = Common.LocalDevice.Current.GetDevice(room.TemperatrueDevice);
- if (dev != null)
- {
- (dev as ZigBee.Device.TemperatureSensor).ReadTemperatureOrHumidity();
- }
+ ReadDeviceAttributeLogic.Instance.SendTemperatureStatuComand(dev);
}
if (string.IsNullOrEmpty(room.HumidityDevice) == false)
{
- HdlGatewayReceiveLogic.Current.RemoveEvent("HumidityDevice"+room.Id);
- HdlGatewayReceiveLogic.Current.AddAttributeEvent("HumidityDevice" + room.Id, ReceiveComandDiv.A璁惧灞炴�т笂鎶�, (report) =>
- {
- string mainKeys = Common.LocalDevice.Current.GetDeviceMainKeys(report);
- if (room.HumidityDevice != mainKeys)
- {
- return;
- }
- //绉婚櫎鎺変簨浠�
- HdlGatewayReceiveLogic.Current.RemoveEvent("HumidityDevice");
- foreach (var data in report.DeviceStatusReport.AttriBute)
- {
- if (data.AttributeId == (int)ZigBee.Device.AttriButeId.MeasuredValue)
- {
- if (data.AttriButeData == 0)
- {
- //0
- humidityText.Text = "0.0%";
- room.Humidity = 0;
- }
- else
- {
- //灏忔暟鐐归渶瑕佷竴浣�(婀垮害娌℃湁璐熸暟)
- string strValue = data.AttriButeData.ToString();
- strValue = strValue.Substring(0, strValue.Length - 1);
- humidityText.Text = strValue.Insert(strValue.Length - 1, ".") + "%";
- room.Humidity = int.Parse(strValue) * 0.1;
- }
- }
- }
- });
- //鍙戦�佽幏鍙栨箍搴︾殑鍛戒护
var dev = Common.LocalDevice.Current.GetDevice(room.HumidityDevice);
- if (dev != null)
- {
- (dev as ZigBee.Device.TemperatureSensor).ReadTemperatureOrHumidity();
- }
+ ReadDeviceAttributeLogic.Instance.SendHumidityStatuComand(dev);
}
diff --git a/ZigbeeApp/Shared/Phone/Device/DeviceLogic/ReadDeviceAttributeLogic.cs b/ZigbeeApp/Shared/Phone/Device/DeviceLogic/ReadDeviceAttributeLogic.cs
index e283fca..6171782 100644
--- a/ZigbeeApp/Shared/Phone/Device/DeviceLogic/ReadDeviceAttributeLogic.cs
+++ b/ZigbeeApp/Shared/Phone/Device/DeviceLogic/ReadDeviceAttributeLogic.cs
@@ -35,6 +35,10 @@
/// <param name="device">璁惧</param>
public void SendACStatuComand(CommonDevice device)
{
+ if (device == null)
+ {
+ return;
+ }
new System.Threading.Thread(() =>
{
SendFanStatuComand(device);
@@ -50,6 +54,10 @@
/// <param name="device">璁惧</param>
private void SendThermostatStatuComand(CommonDevice device)
{
+ if (device == null)
+ {
+ return;
+ }
var jObject = new Newtonsoft.Json.Linq.JObject
{
{ "DeviceAddr",device.DeviceAddr },
@@ -99,6 +107,10 @@
/// <param name="device">璁惧</param>
private void SendFanStatuComand(CommonDevice device)
{
+ if (device == null)
+ {
+ return;
+ }
var jObject = new Newtonsoft.Json.Linq.JObject
{
{ "DeviceAddr",device.DeviceAddr },
@@ -131,6 +143,10 @@
/// <param name="device">绐楀笜</param>
public void SendCurtainStatuComand(CommonDevice device)
{
+ if (device == null)
+ {
+ return;
+ }
var jObject = new Newtonsoft.Json.Linq.JObject
{
{ "DeviceAddr",device.DeviceAddr },
@@ -169,6 +185,10 @@
/// <param name="device"></param>
public void SendDimmableLightStatuComand(CommonDevice device)
{
+ if (device == null)
+ {
+ return;
+ }
new System.Threading.Thread(() =>
{
SendSwitchStatuComand(device);
@@ -184,6 +204,10 @@
/// <param name="device">绐楀笜</param>
private void SendSwitchStatuComand(CommonDevice device)
{
+ if (device == null)
+ {
+ return;
+ }
var jObject = new Newtonsoft.Json.Linq.JObject
{
{ "DeviceAddr",device.DeviceAddr },
@@ -209,6 +233,10 @@
/// <param name="device">绐楀笜</param>
private void SendLevelStatuComand(CommonDevice device)
{
+ if (device == null)
+ {
+ return;
+ }
var jObject = new Newtonsoft.Json.Linq.JObject
{
{ "DeviceAddr",device.DeviceAddr },
@@ -229,5 +257,68 @@
}
#endregion
+
+ #region 鈼� 娓╂箍搴___________________________
+
+ /// <summary>
+ /// 璇诲彇娓╁害
+ /// </summary>
+ /// <param name="device"></param>
+ public void SendTemperatureStatuComand(CommonDevice device)
+ {
+ if (device == null)
+ {
+ return;
+ }
+ var jObject = new Newtonsoft.Json.Linq.JObject
+ {
+ { "DeviceAddr",device.DeviceAddr },
+ { "Epoint", device.DeviceEpoint },
+ { "Cluster_ID", (int)Cluster_ID.TemperatureMeasurement },
+ { "Command", 108 }
+ };
+ var attriBute = new Newtonsoft.Json.Linq.JArray
+ {
+ new Newtonsoft.Json.Linq.JObject
+ {
+ { "AttriButeId", (int)AttriButeId.MeasuredValue}
+ }
+ };
+ var data = new Newtonsoft.Json.Linq.JObject { { "AttriBute", attriBute } };
+ jObject.Add("Data", data);
+ device.Gateway?.Send(("GetDeviceStatus"), jObject.ToString());
+ }
+
+ /// <summary>
+ /// 璇诲彇婀垮害
+ /// </summary>
+ /// <param name="device"></param>
+ public void SendHumidityStatuComand(CommonDevice device)
+ {
+ if (device == null)
+ {
+ return;
+ }
+ var jObject = new Newtonsoft.Json.Linq.JObject
+ {
+ { "DeviceAddr",device.DeviceAddr },
+ { "Epoint", device.DeviceEpoint },
+ { "Cluster_ID", (int)Cluster_ID.RelativeHumidityMeasurement },
+ { "Command", 108 }
+ };
+ var attriBute = new Newtonsoft.Json.Linq.JArray
+ {
+ new Newtonsoft.Json.Linq.JObject
+ {
+ { "AttriButeId", (int)AttriButeId.MeasuredValue}
+ }
+ };
+ var data = new Newtonsoft.Json.Linq.JObject { { "AttriBute", attriBute } };
+ jObject.Add("Data", data);
+ device.Gateway?.Send(("GetDeviceStatus"), jObject.ToString());
+ }
+
+ #endregion
+
}
}
diff --git a/ZigbeeApp/Shared/Phone/Device/Room/EditRoom.cs b/ZigbeeApp/Shared/Phone/Device/Room/EditRoom.cs
index 15ae5d4..5742330 100644
--- a/ZigbeeApp/Shared/Phone/Device/Room/EditRoom.cs
+++ b/ZigbeeApp/Shared/Phone/Device/Room/EditRoom.cs
@@ -3,12 +3,14 @@
using System.Globalization;
using Shared.Common;
using Shared.Phone.Device.CommonForm;
+using Shared.Phone.Device.DeviceLogic;
using Shared.Phone.UserCenter;
using Shared.Phone.UserView;
+using ZigBee.Device;
namespace Shared.Phone.Device.Room
{
- public class EditRoom : FrameLayout
+ public class EditRoom : FrameLayout, ZigBee.Common.IStatus
{
#region 鈼� 鍙橀噺____________________________
/// <summary>
@@ -44,11 +46,143 @@
/// </summary>
public int OldIconPathType;
-
+ CommonDevice temperDevice;
+
+ CommonDevice humidDevice;
+
+ DeviceInfoRow temperatureRow;
+
+ DeviceInfoRow humidityRow;
+
#endregion
+
+ #region 鈼� 鎺ュ彛__________________________
+ /// <summary>
+ /// 澶勭悊鍙樺寲浜嬩欢 --灏嗗純鐢� 鏀圭敤DeviceInfoChange()
+ /// </summary>
+ /// <returns>The changed.</returns>
+ /// <param name="common">Common.</param>
+ public void Changed(CommonDevice common)
+ {
+
+ }
+ /// <summary>
+ /// Changeds the IL ogic status.
+ /// </summary>
+ /// <param name="logic">Logic.</param>
+ public void ChangedILogicStatus(ZigBee.Device.Logic logic)
+ {
+ //throw new NotImplementedException();
+ }
+ /// <summary>
+ /// Changeds the IS cene status.
+ /// </summary>
+ /// <param name="scene">Scene.</param>
+ public void ChangedISceneStatus(Scene scene)
+ {
+ //throw new NotImplementedException();
+ }
+ /// <summary>
+ /// 璁惧鐘舵�佹洿鏂版帴鍙�
+ /// <para>type锛氬鏋滀负 DeviceInComingRespon:璁惧鏂颁笂鎶�</para>
+ /// <para>type锛氬鏋滀负 IASInfoReport:RemoveDeviceRespon</para>
+ /// <para>type锛氬鏋滀负 DeviceStatusReport:璁惧涓婃姤</para>
+ /// <para>type锛氬鏋滀负 IASInfoReport:IAS瀹夐槻淇℃伅涓婃姤</para>
+ /// <para>type锛氬鏋滀负 OnlineStatusChange: 璁惧鍦ㄧ嚎鐘舵�佹洿鏂�</para>
+ /// </summary>
+ /// <param name="common">Common.</param>
+ /// <param name="typeTag">Type tag.</param>
+ public void DeviceInfoChange(CommonDevice common, string typeTag)
+ {
+ if (typeTag == "DeviceStatusReport")
+ {
+ Application.RunOnMainThread(() =>
+ {
+ try
+ {
+ if (common.DeviceStatusReport.AttriBute == null || common.DeviceStatusReport.AttriBute.Count == 0)
+ {
+ return;
+ }
+ //鏄惁涓哄綋鍓嶈澶�
+ if ((temperDevice?.DeviceEpoint != common.DeviceEpoint || temperDevice?.DeviceAddr != common.DeviceAddr) && (humidDevice?.DeviceEpoint != common.DeviceEpoint || humidDevice?.DeviceAddr != common.DeviceAddr))
+ {
+ //return;
+ }
+
+ //if (common.Type == DeviceType.TemperatureSensor)
+ //{
+ if (common.DeviceStatusReport.CluterID == 1026)
+ {
+ foreach (var data in common.DeviceStatusReport.AttriBute)
+ {
+ if (data.AttributeId == (int)ZigBee.Device.AttriButeId.MeasuredValue)
+ {
+ if (data.AttriButeData == 0)
+ {
+ //0鈩�
+ temperatureRow.NameText.Text = "--鈩�";
+ room.Temperatrue = 0;
+ }
+ else if (data.AttriButeData > 32767)
+ {
+ //璐熸暟(鐗规畩澶勭悊)
+ string strValue = (data.AttriButeData - 65536).ToString();
+ //灏忔暟鐐归渶瑕佷竴浣�
+ strValue = strValue.Substring(0, strValue.Length - 1);
+ temperatureRow.NameText.Text = strValue.Insert(strValue.Length - 1, ".") + "鈩�";
+ room.Temperatrue = int.Parse(strValue) * 0.1;
+ }
+ else
+ {
+ //灏忔暟鐐归渶瑕佷竴浣�
+ string strValue = data.AttriButeData.ToString();
+ strValue = strValue.Substring(0, strValue.Length - 1);
+ temperatureRow.NameText.Text = strValue.Insert(strValue.Length - 1, ".") + "鈩�";
+ room.Temperatrue = int.Parse(strValue) * 0.1;
+ }
+ }
+ }
+ }
+ else if (common.DeviceStatusReport.CluterID == 1029)
+ {
+ foreach (var data in common.DeviceStatusReport.AttriBute)
+ {
+ if (data.AttributeId == (int)ZigBee.Device.AttriButeId.MeasuredValue)
+ {
+ if (data.AttriButeData == 0)
+ {
+ //0
+ humidityRow.NameText.Text = "--%";
+ room.Humidity = 0;
+ }
+ else
+ {
+ //灏忔暟鐐归渶瑕佷竴浣�(婀垮害娌℃湁璐熸暟)
+ string strValue = data.AttriButeData.ToString();
+ strValue = strValue.Substring(0, strValue.Length - 1);
+ humidityRow.NameText.Text = strValue.Insert(strValue.Length - 1, ".") + "%";
+ room.Humidity = int.Parse(strValue) * 0.1;
+ }
+ }
+ }
+ }
+ //}
+ }
+ catch (Exception ex)
+ {
+ System.Console.WriteLine($"Error:{ex.Message}");
+ }
+ });
+ }
+ }
+ #endregion
+
+
public EditRoom()
{
+ ZbGateway.StatusList.Add(this);
BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor;
}
@@ -71,10 +205,8 @@
}
public override void RemoveFromParent()
- {
- HdlGatewayReceiveLogic.Current.RemoveEvent("TemperatrueDevice");
- HdlGatewayReceiveLogic.Current.RemoveEvent("HumidityDevice");
-
+ {
+ ZbGateway.StatusList.Remove(this);
CommonPage.Instance.IsDrawerLockMode = false;
base.RemoveFromParent();
}
@@ -188,7 +320,7 @@
};
- var temperatureRow = new DeviceInfoRow(446);
+ temperatureRow = new DeviceInfoRow(446);
temperatureRow.Init();
temperatureRow.SetTipTitle(R.MyInternationalizationString.Temperature);
temperatureRow.NameText.TextAlignment = TextAlignment.CenterRight;
@@ -208,102 +340,16 @@
}
room.TemperatrueDevice = $"{selectTemp.DeviceAddr}{selectTemp.DeviceEpoint}";
temperatureRow.SetTitle(R.MyInternationalizationString.Getting);
-
- HdlGatewayReceiveLogic.Current.RemoveEvent("TemperatrueDevice");
- HdlGatewayReceiveLogic.Current.AddAttributeEvent("TemperatrueDevice", ReceiveComandDiv.A璁惧灞炴�т笂鎶�, (Action<ZigBee.Device.CommonDevice>)((report) =>
- {
- string mainKeys = Common.LocalDevice.Current.GetDeviceMainKeys(report);
- if (room.TemperatrueDevice != mainKeys)
- {
- return;
- }
- //绉婚櫎鎺変簨浠�
- HdlGatewayReceiveLogic.Current.RemoveEvent("TemperatrueDevice");
-
- foreach (var data in report.DeviceStatusReport.AttriBute)
- {
- if (data.AttributeId == (int)ZigBee.Device.AttriButeId.MeasuredValue)
- {
- if (data.AttriButeData == 0)
- {
- //0鈩�
- temperatureRow.NameText.Text = "0.0鈩�";
- room.Temperatrue = 0;
- }
- else if (data.AttriButeData > 32767)
- {
- //璐熸暟(鐗规畩澶勭悊)
- string strValue = (data.AttriButeData - 65536).ToString();
- //灏忔暟鐐归渶瑕佷竴浣�
- strValue = strValue.Substring(0, strValue.Length - 1);
- temperatureRow.NameText.Text = strValue.Insert(strValue.Length - 1, ".") + "鈩�";
- room.Temperatrue = int.Parse(strValue) * 0.1;
- }
- else
- {
- //灏忔暟鐐归渶瑕佷竴浣�
- string strValue = data.AttriButeData.ToString();
- strValue = strValue.Substring(0, strValue.Length - 1);
- temperatureRow.NameText.Text = strValue.Insert(strValue.Length - 1, ".") + "鈩�";
- room.Temperatrue = int.Parse(strValue) *0.1;
- }
- }
- }
- }));
//鍙戦�佽幏鍙栨俯搴︾殑鍛戒护
- (selectTemp as ZigBee.Device.TemperatureSensor).ReadTemperatureOrHumidity();
+ ReadDeviceAttributeLogic.Instance.SendTemperatureStatuComand(selectTemp);
};
};
if (string.IsNullOrEmpty(room.TemperatrueDevice) == false)
{
temperatureRow.SetTitle(R.MyInternationalizationString.Getting);
- HdlGatewayReceiveLogic.Current.RemoveEvent("TemperatrueDevice");
- HdlGatewayReceiveLogic.Current.AddAttributeEvent("TemperatrueDevice", ReceiveComandDiv.A璁惧灞炴�т笂鎶�, (Action<ZigBee.Device.CommonDevice>)((report) =>
- {
- string mainKeys = Common.LocalDevice.Current.GetDeviceMainKeys(report);
- if (room.TemperatrueDevice != mainKeys)
- {
- return;
- }
- //绉婚櫎鎺変簨浠�
- HdlGatewayReceiveLogic.Current.RemoveEvent("TemperatrueDevice");
-
- foreach (var data in report.DeviceStatusReport.AttriBute)
- {
- if (data.AttributeId == (int)ZigBee.Device.AttriButeId.MeasuredValue)
- {
- if (data.AttriButeData == 0)
- {
- //0鈩�
- temperatureRow.NameText.Text = "0.0鈩�";
- room.Temperatrue = 0;
- }
- else if (data.AttriButeData > 32767)
- {
- //璐熸暟(鐗规畩澶勭悊)
- string strValue = (data.AttriButeData - 65536).ToString();
- //灏忔暟鐐归渶瑕佷竴浣�
- strValue = strValue.Substring(0, strValue.Length - 1);
- temperatureRow.NameText.Text = strValue.Insert(strValue.Length - 1, ".") + "鈩�";
- room.Temperatrue = int.Parse(strValue) * 0.1;
- }
- else
- {
- //灏忔暟鐐归渶瑕佷竴浣�
- string strValue = data.AttriButeData.ToString();
- strValue = strValue.Substring(0, strValue.Length - 1);
- temperatureRow.NameText.Text = strValue.Insert(strValue.Length - 1, ".") + "鈩�";
- room.Temperatrue = int.Parse(strValue) * 0.1;
- }
- }
- }
- }));
//鍙戦�佽幏鍙栨俯搴︾殑鍛戒护
var dev = Common.LocalDevice.Current.GetDevice(room.TemperatrueDevice);
- if (dev != null)
- {
- (dev as ZigBee.Device.TemperatureSensor).ReadTemperatureOrHumidity();
- }
+ ReadDeviceAttributeLogic.Instance.SendTemperatureStatuComand(dev);
}
else
{
@@ -311,7 +357,7 @@
}
- var humidityRow = new DeviceInfoRow(585);
+ humidityRow = new DeviceInfoRow(585);
humidityRow.Init();
humidityRow.SetTipTitle(R.MyInternationalizationString.Humidity);
humidityRow.NameText.TextAlignment = TextAlignment.CenterRight;
@@ -332,81 +378,16 @@
room.HumidityDevice = $"{selectTemp.DeviceAddr}{selectTemp.DeviceEpoint}";
humidityRow.SetTitle(R.MyInternationalizationString.Getting);
- HdlGatewayReceiveLogic.Current.RemoveEvent("HumidityDevice");
- HdlGatewayReceiveLogic.Current.AddAttributeEvent("HumidityDevice", ReceiveComandDiv.A璁惧灞炴�т笂鎶�, (report) =>
- {
- string mainKeys = Common.LocalDevice.Current.GetDeviceMainKeys(report);
- if (room.HumidityDevice != mainKeys)
- {
- return;
- }
- //绉婚櫎鎺変簨浠�
- HdlGatewayReceiveLogic.Current.RemoveEvent("HumidityDevice");
- foreach (var data in report.DeviceStatusReport.AttriBute)
- {
- if (data.AttributeId == (int)ZigBee.Device.AttriButeId.MeasuredValue)
- {
- if (data.AttriButeData == 0)
- {
- //0
- humidityRow.NameText.Text = "0.0%";
- room.Humidity = 0;
- }
- else
- {
- //灏忔暟鐐归渶瑕佷竴浣�(婀垮害娌℃湁璐熸暟)
- string strValue = data.AttriButeData.ToString();
- strValue = strValue.Substring(0, strValue.Length - 1);
- humidityRow.NameText.Text = strValue.Insert(strValue.Length - 1, ".") + "%";
- room.Humidity = int.Parse(strValue) * 0.1;
- }
- }
- }
- });
//鍙戦�佽幏鍙栨箍搴︾殑鍛戒护
- (selectTemp as ZigBee.Device.TemperatureSensor).ReadTemperatureOrHumidity();
+ ReadDeviceAttributeLogic.Instance.SendHumidityStatuComand(selectTemp);
};
};
if (string.IsNullOrEmpty(room.HumidityDevice) == false)
{
humidityRow.SetTitle(R.MyInternationalizationString.Getting);
- HdlGatewayReceiveLogic.Current.RemoveEvent("HumidityDevice");
- HdlGatewayReceiveLogic.Current.AddAttributeEvent("HumidityDevice", ReceiveComandDiv.A璁惧灞炴�т笂鎶�, (report) =>
- {
- string mainKeys = Common.LocalDevice.Current.GetDeviceMainKeys(report);
- if (room.HumidityDevice != mainKeys)
- {
- return;
- }
- //绉婚櫎鎺変簨浠�
- HdlGatewayReceiveLogic.Current.RemoveEvent("HumidityDevice");
- foreach (var data in report.DeviceStatusReport.AttriBute)
- {
- if (data.AttributeId == (int)ZigBee.Device.AttriButeId.MeasuredValue)
- {
- if (data.AttriButeData == 0)
- {
- //0
- humidityRow.NameText.Text = "0.0%";
- room.Humidity = 0;
- }
- else
- {
- //灏忔暟鐐归渶瑕佷竴浣�(婀垮害娌℃湁璐熸暟)
- string strValue = data.AttriButeData.ToString();
- strValue = strValue.Substring(0, strValue.Length - 1);
- humidityRow.NameText.Text = strValue.Insert(strValue.Length - 1, ".") + "%";
- room.Humidity = int.Parse(strValue) * 0.1;
- }
- }
- }
- });
//鍙戦�佽幏鍙栨箍搴︾殑鍛戒护
var dev = Common.LocalDevice.Current.GetDevice(room.HumidityDevice);
- if (dev != null)
- {
- (dev as ZigBee.Device.TemperatureSensor).ReadTemperatureOrHumidity();
- }
+ ReadDeviceAttributeLogic.Instance.SendHumidityStatuComand(dev);
}
else
{
--
Gitblit v1.8.0