From 58074f23f4eca81f96565946a5faf8c53e6202d1 Mon Sep 17 00:00:00 2001
From: 黄学彪 <hxb@hdlchina.com.cn>
Date: 星期五, 26 二月 2021 14:12:41 +0800
Subject: [PATCH] 上传测试
---
HDL_ON/DAL/DriverLayer/Control.cs | 274 ++++++++++++++++++++++++++++++++++++++++--------------
1 files changed, 201 insertions(+), 73 deletions(-)
diff --git a/HDL_ON/DAL/DriverLayer/Control.cs b/HDL_ON/DAL/DriverLayer/Control.cs
index 91f0f1b..a2f430d 100644
--- a/HDL_ON/DAL/DriverLayer/Control.cs
+++ b/HDL_ON/DAL/DriverLayer/Control.cs
@@ -65,45 +65,83 @@
/// </summary>
public bool IsSearchLocalGatewaySuccessful = false;
+ ///// <summary>
+ /////
+ ///// </summary>
+ //bool _gatewayOnline1 = false;
+ ///// <summary>
+ ///// 缃戝叧鏄惁鍦ㄧ嚎
+ ///// </summary>
+ //public bool GatewayOnline1
+ //{
+ // get
+ // {
+ // return _gatewayOnline;
+ // }
+ // set
+ // {
+ // if (_gatewayOnline != value)
+ // {
+ // if(value)
+ // {
+ // if (IsRemote)//濡傛灉鏄繙绋�
+ // {
+ // if(DB_ResidenceData.Instance.HomeGateway == null)
+ // {
+ // return;
+ // }
+ // if (!DB_ResidenceData.Instance.HomeGateway.gatewayStatus)//杩滅▼鎯呭喌涓嬶紝缃戝叧鏈摼鎺ユ湇鍔″櫒涓嶈兘淇敼涓婚〉缃戝叧鐘舵��
+ // {
+ // new System.Threading.Thread(() => {
+ // System.Threading.Thread.Sleep(3000);
+ // var pm = new DAL.Server.HttpServerRequest();
+ // pm.GetGatewayInfo();
+ // }) { IsBackground = true }.Start();
+ // return;
+ // }
+ // }
+ // _gatewayOnline = value;
+ // //淇敼涓婚〉杩炴帴鐘舵��
+ // HomePage.LoadEvent_CheckLinkStatus();
+ // MainPage.Log($"缃戝叧鍦ㄧ嚎锛屽埛鏂拌澶囩姸鎬�");
+ // new System.Threading.Thread(() =>
+ // {
+ // System.Threading.Thread.Sleep(1000);
+ // FunctionList.List.ReadAllFunctionStatus();
+ // })
+ // { IsBackground = true, Priority = System.Threading.ThreadPriority.AboveNormal }.Start();
+ // }
+ // else
+ // {
+ // _gatewayOnline = value;
+ // //淇敼涓婚〉杩炴帴鐘舵��
+ // HomePage.LoadEvent_CheckLinkStatus();
+ // }
+ // }
+ // }
+ //}
+
+
+ bool _GatewayOnline_Local = false;
/// <summary>
- ///
+ /// 缃戝叧鍦ㄧ嚎-灞�鍩熺綉
/// </summary>
- bool _gatewayOnline = false;
- /// <summary>
- /// 缃戝叧鏄惁鍦ㄧ嚎
- /// </summary>
- public bool GatewayOnline
+ public bool GatewayOnline_Local
{
get
{
- return _gatewayOnline;
+ return _GatewayOnline_Local;
}
set
{
- if (_gatewayOnline != value)
+ if (_GatewayOnline_Local != value)
{
- if(value)
+ _GatewayOnline_Local = value;
+ if (value)
{
- if (IsRemote)//濡傛灉鏄繙绋�
- {
- if(DB_ResidenceData.Instance.HomeGateway == null)
- {
- return;
- }
- if (!DB_ResidenceData.Instance.HomeGateway.gatewayStatus)//杩滅▼鎯呭喌涓嬶紝缃戝叧鏈摼鎺ユ湇鍔″櫒涓嶈兘淇敼涓婚〉缃戝叧鐘舵��
- {
- new System.Threading.Thread(() => {
- System.Threading.Thread.Sleep(3000);
- var pm = new DAL.Server.HttpServerRequest();
- pm.GetGatewayInfo();
- }) { IsBackground = true }.Start();
- return;
- }
- }
- _gatewayOnline = value;
//淇敼涓婚〉杩炴帴鐘舵��
HomePage.LoadEvent_CheckLinkStatus();
- MainPage.Log($"缃戝叧鍦ㄧ嚎锛屽埛鏂拌澶囩姸鎬�");
+ MainPage.Log($"缃戝叧灞�鍩熺綉鍦ㄧ嚎锛屽埛鏂拌澶囩姸鎬�");
new System.Threading.Thread(() =>
{
System.Threading.Thread.Sleep(1000);
@@ -113,13 +151,68 @@
}
else
{
- _gatewayOnline = value;
//淇敼涓婚〉杩炴帴鐘舵��
HomePage.LoadEvent_CheckLinkStatus();
}
}
}
}
+ bool _GatewayOnline_Cloud = false;
+ /// <summary>
+ /// 缃戝叧鍦ㄧ嚎-浜戠
+ /// </summary>
+ public bool GatewayOnline_Cloud
+ {
+ get
+ {
+ return _GatewayOnline_Cloud;
+ }
+ set
+ {
+ if (_GatewayOnline_Cloud != value)
+ {
+ _GatewayOnline_Cloud = value;
+ if(GatewayOnline_Local)
+ {
+ return;
+ }
+ if (value)
+ {
+ if (DB_ResidenceData.Instance.HomeGateway == null)
+ {
+ return;
+ }
+ if (!DB_ResidenceData.Instance.HomeGateway.gatewayStatus)//杩滅▼鎯呭喌涓嬶紝缃戝叧鏈摼鎺ユ湇鍔″櫒涓嶈兘淇敼涓婚〉缃戝叧鐘舵��
+ {
+ new System.Threading.Thread(() =>
+ {
+ System.Threading.Thread.Sleep(3000);
+ var pm = new DAL.Server.HttpServerRequest();
+ pm.GetGatewayInfo();
+ })
+ { IsBackground = true }.Start();
+ return;
+ }
+ //淇敼涓婚〉杩炴帴鐘舵��
+ HomePage.LoadEvent_CheckLinkStatus();
+ MainPage.Log($"缃戝叧浜戠鍦ㄧ嚎锛屽埛鏂拌澶囩姸鎬�");
+ new System.Threading.Thread(() =>
+ {
+ System.Threading.Thread.Sleep(1000);
+ FunctionList.List.ReadAllFunctionStatus();
+ })
+ { IsBackground = true, Priority = System.Threading.ThreadPriority.AboveNormal }.Start();
+ }
+ else
+ {
+ //淇敼涓婚〉杩炴帴鐘舵��
+ HomePage.LoadEvent_CheckLinkStatus();
+ }
+ }
+ }
+ }
+
+
/// <summary>
/// 缃戝叧閫氳ID
/// </summary>
@@ -128,7 +221,7 @@
/// <summary>
/// 鏄惁涓鸿繙绋嬭繛鎺�
/// </summary>
- public bool IsRemote = false;
+ //public bool IsRemote = false;
/// <summary>
/// 閫氳鍦板潃IP
/// </summary>
@@ -197,21 +290,18 @@
{
return;
}
+ Ins.GatewayOnline_Local = false;
var ggg = DB_ResidenceData.Instance.GatewayType == 0 ? "涓�绔彛" : "A缃戝叧";
var ggg1 = MainPage.InternetStatus == 1 ? "4G" : "wifi";
MainPage.Log($"鎼滅储缃戝叧鍒楄〃锛岀綉鍏崇被鍨�:{ggg};缃戠粶绫诲瀷:{ggg1}");
if (MainPage.InternetStatus == 0)
{
- Ins.GatewayOnline = false;
+ Ins.GatewayOnline_Cloud = false;
return;
}
else if (MainPage.InternetStatus == 1)
{
- if (!Ins.IsRemote)
- {
- Ins.IsRemote = true;
- DAL.Mqtt.MqttClient.InitState();
- }
+ DAL.Mqtt.MqttClient.InitState();
}
else if (MainPage.InternetStatus == 2)
{
@@ -224,7 +314,10 @@
for (int i = 0; i < 5; i++)
{
if (IsSearchLocalGatewaySuccessful)
+ {
+ Ins.GatewayOnline_Local = true;
break;
+ }
if (DB_ResidenceData.Instance.GatewayType == 0)
{
new Control_Udp().ControlBytesSend(Command.ReadGateway, 255, 255, new byte[] { (byte)new Random().Next(255), (byte)new Random().Next(255) });
@@ -236,15 +329,7 @@
System.Threading.Thread.Sleep(500);
}
- if (!IsSearchLocalGatewaySuccessful)
- {
- //鏈湴鎼滅储涓嶅埌缃戝叧
- if (!Ins.IsRemote)
- {
- Ins.IsRemote = true;
- DAL.Mqtt.MqttClient.InitState();
- }
- }
+ DAL.Mqtt.MqttClient.InitState();
})
{ IsBackground = true }.Start();
}
@@ -255,7 +340,7 @@
/// </summary>
public void ControlScene(Scene scene)
{
- if (Ins.IsRemote || DB_ResidenceData.Instance.GatewayType == 1)
+ if (!Ins.GatewayOnline_Local || DB_ResidenceData.Instance.GatewayType == 1)
{
new System.Threading.Thread(() =>
{
@@ -310,8 +395,19 @@
MainPage.Log($"鍙戦�佹暟鎹�:{Newtonsoft.Json.JsonConvert.SerializeObject(commandDictionary)}");
- //杩滅▼閫氳
- if (Ins.IsRemote || useRemote == true)
+ ///绗笁鏂规秱楦﹁澶囩粺涓�浣跨敤杩滅▼鎺у埗
+ switch(function.spk)
+ {
+ case SPK.ElectricTuyaAirCleaner:
+ case SPK.ElectricTuyaFan:
+ case SPK.ElectricTuyaWaterValve:
+ case SPK.ElectricTuyaWeepRobot:
+ useRemote = true;
+ break;
+ }
+
+ //杩滅▼閫氳 --娑傞甫璁惧蹇呴』闇�瑕佽繙绋�
+ if (useRemote == true)
{
DAL.Server.HttpServerRequest httpServer = new DAL.Server.HttpServerRequest();
//ALink鎺у埗銆丅us鎺у埗浣跨敤鍚屼竴涓帴鍙f帶鍒讹紝鐢变簯绔礋璐hВ鏋�
@@ -320,30 +416,54 @@
actionObjs.Add(apiControlData);
var pack = httpServer.ControlDevice(actionObjs);
}
- //鏈湴閫氳
else
{
- //Bus鎺у埗
- if (DB_ResidenceData.Instance.GatewayType == 0)
+ ////杩滅▼閫氳
+ //if (Ins.GatewayOnline_Local == false && Ins.GatewayOnline_Cloud == true)
+ //{
+ // DAL.Server.HttpServerRequest httpServer = new DAL.Server.HttpServerRequest();
+ // //ALink鎺у埗銆丅us鎺у埗浣跨敤鍚屼竴涓帴鍙f帶鍒讹紝鐢变簯绔礋璐hВ鏋�
+ // var apiControlData = function.GetApiControlData(commandDictionary);
+ // var actionObjs = new List<ApiAlinkControlActionObj>();
+ // actionObjs.Add(apiControlData);
+ // var pack = httpServer.ControlDevice(actionObjs);
+ //}
+ //鏈湴閫氳
+ if (Ins.GatewayOnline_Local)
{
- try
+ //Bus鎺у埗
+ if (DB_ResidenceData.Instance.GatewayType == 0)
{
- new Control_Udp().WriteBusData(function, commandDictionary);
+ try
+ {
+ new Control_Udp().WriteBusData(function, commandDictionary);
+ }
+ catch (Exception ex)
+ {
+ MainPage.Log($"鍙戦�佹暟鎹紓甯�: {ex.Message}");
+ }
}
- catch (Exception ex)
+ //ALink鎺у埗
+ else
{
- MainPage.Log($"鍙戦�佹暟鎹紓甯�: {ex.Message}");
+ var functionControlDataObj = function.GetGatewayAlinkControlData(commandDictionary);
+ var functionControlDataJson = Newtonsoft.Json.JsonConvert.SerializeObject(functionControlDataObj);
+ var sendBytes = Ins.ConvertSendBodyData(CommunicationTopic.ct.ControlFunctionTopic, functionControlDataJson);
+ new Control_Udp().SendLocalHdlLinkData(sendBytes, functionControlDataObj.id);
+ MainPage.Log($"鏈湴閫氳 鍙戦�丠DL-Link鏁版嵁:{functionControlDataJson}");
}
}
- //ALink鎺у埗
+ //杩滅▼閫氳
else
{
- var functionControlDataObj = function.GetGatewayAlinkControlData(commandDictionary);
- var functionControlDataJson = Newtonsoft.Json.JsonConvert.SerializeObject(functionControlDataObj);
- var sendBytes = Ins.ConvertSendBodyData(CommunicationTopic.ct.ControlFunctionTopic, functionControlDataJson);
- new Control_Udp().SendLocalHdlLinkData(sendBytes, functionControlDataObj.id);
- MainPage.Log($"鍙戦�丠DL-Link鏁版嵁:{functionControlDataJson}");
+ DAL.Server.HttpServerRequest httpServer = new DAL.Server.HttpServerRequest();
+ //ALink鎺у埗銆丅us鎺у埗浣跨敤鍚屼竴涓帴鍙f帶鍒讹紝鐢变簯绔礋璐hВ鏋�
+ var apiControlData = function.GetApiControlData(commandDictionary);
+ var actionObjs = new List<ApiAlinkControlActionObj>();
+ actionObjs.Add(apiControlData);
+ var pack = httpServer.ControlDevice(actionObjs);
}
+
}
}
/// <summary>
@@ -400,6 +520,10 @@
if(temp!= null)
{
temp = function;
+ if (SPK.Get3tySpk(SPK.BrandType.Tuya).Contains(temp.spk))
+ {
+ Stan.HdlDeviceStatuPushLogic.Current.UpdateDeviceStatu(temp.sid, temp.status);
+ }
}
}
}
@@ -413,13 +537,9 @@
public void SendReadCommand(Function function)
{
function.refreshTime = DateTime.Now;
- if (Ins.IsRemote)
+ if (Ins.GatewayOnline_Local)
{
- var pm = new DAL.Server.HttpServerRequest();
- var pack = pm.RefreshDeviceStatus(new List<string>() { function.deviceId });
- }
- else
- {
+
if (DB_ResidenceData.Instance.GatewayType == 0)
{
try
@@ -447,9 +567,14 @@
};
var functionControlDataJson = Newtonsoft.Json.JsonConvert.SerializeObject(readDataObj);
var sendBytes = Ins.ConvertSendBodyData(CommunicationTopic.ct.ReadStatus, functionControlDataJson);
- MainPage.Log($"鍙戦�丠DL-Link鏁版嵁:{functionControlDataJson}");
+ MainPage.Log($"鏈湴閫氳 鍙戦�丠DL-Link鏁版嵁:{functionControlDataJson}");
new Control_Udp().SendLocalHdlLinkData(sendBytes, readDataObj.id);
}
+ }
+ else
+ {
+ var pm = new DAL.Server.HttpServerRequest();
+ var pack = pm.RefreshDeviceStatus(new List<string>() { function.deviceId });
}
}
///// <summary>
@@ -474,7 +599,7 @@
/// <param name="scene"></param>
static void ControlAProtocolScene(Scene scene)
{
- if (Ins.IsRemote)
+ if (!Ins.GatewayOnline_Local)//缃戝叧鏈湴涓嶅湪绾�
{
//浜戠鍋氬鐞嗗彂閫佷竴绔彛鍦烘櫙
//if (DB_ResidenceData.Instance.GatewayType == 0)
@@ -557,7 +682,7 @@
}
}
- MainPage.Log($"time 1 :{receiveObj.Topic}");
+ MainPage.Log($"灞�鍩熺綉淇℃伅: {receiveObj.Topic}");
//楠岃瘉鏈夋晥鏁版嵁闀垮害
@@ -579,8 +704,8 @@
if (device.device_mac == DB_ResidenceData.Instance.residenceGatewayMAC)
{
MainPage.Log("鏈湴鎼滅储缃戝叧鎴愬姛");
- Control.Ins.IsSearchLocalGatewaySuccessful = true;
- Ins.GatewayOnline = true;
+ Ins.IsSearchLocalGatewaySuccessful = true;
+ Ins.GatewayOnline_Local = true;
if (!string.IsNullOrEmpty(device.gatewayId))
{
Ins.GatewayId = device.gatewayId;
@@ -590,7 +715,6 @@
Ins.GatewayId = device.device_mac;
}
reportIp = "239.0.168.188";// device.ip_address;
- Ins.IsRemote = false;
}
}
else if (receiveObj.Topic == CommunicationTopic.ct.ReadStatus + "_reply" ||
@@ -905,8 +1029,12 @@
case SPK.ElectricTuyaFan:
case SPK.ElectricTuyaWeepRobot:
case SPK.ElectricTuyaWaterValve:
+ case SPK.SensorPir:
+ case SPK.SensorDoorWindow:
+ case SPK.SensorSmoke:
+ case SPK.SensorWater:
//璁惧鐘舵�佹帹閫�
- var myDevice = Stan.HdlDeviceStatuPushLogic.Current.UpdateDeviceStatu(updateTemp);
+ var myDevice = Stan.HdlDeviceStatuPushLogic.Current.UpdateDeviceStatu(updateTemp.sid,updateTemp.status);
if (myDevice != null)
{
localObj = myDevice;
--
Gitblit v1.8.0