From f5268d43584a1f72cb7b19c17232645c24e2348b Mon Sep 17 00:00:00 2001
From: wei <kaede@kaededeMacBook-Air.local>
Date: 星期四, 17 十二月 2020 15:29:31 +0800
Subject: [PATCH] 20201217-3
---
HDL_ON/DAL/Mqtt/MqttClient.cs | 220 +++++++++++-------------------------------------------
1 files changed, 46 insertions(+), 174 deletions(-)
diff --git a/HDL_ON/DAL/Mqtt/MqttClient.cs b/HDL_ON/DAL/Mqtt/MqttClient.cs
index a4a1695..4ddfc8e 100644
--- a/HDL_ON/DAL/Mqtt/MqttClient.cs
+++ b/HDL_ON/DAL/Mqtt/MqttClient.cs
@@ -21,7 +21,7 @@
/// </summary>
static string mqttEncryptKey = "";
//static string checkGatewayTopicBase64 = "";
-
+ static bool hadGateway = true;
/// <summary>
/// 鎸や笅绾夸富棰�
/// </summary>
@@ -132,7 +132,7 @@
static void InitMqtt()
{
new System.Threading.Thread(async () => {
- while (true)
+ while (hadGateway)
{
try
{
@@ -181,7 +181,7 @@
var topicAlinkStatus = new MqttTopicFilter()
{
- Topic = $"/user/{MqttInfoConfig.Current.HomeGatewayInfo.gatewayId}/app/thing/property/#",
+ Topic = $"/user/{MqttInfoConfig.Current.HomeGatewayInfo.gatewayId}/app/thing/property/send",
QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.AtMostOnce
};
@@ -210,8 +210,7 @@
/// </summary>
public static async Task StartCloudMqtt()
{
-
- if (OnAppConfig.Instance.internetStatus == 0)
+ if (MainPage.InternetStatus == 0)
{
return;
}
@@ -233,7 +232,7 @@
try
{
#region 鍒濆鍖栬繙绋婱qtt
-
+ remoteMqttIsConnecting = true;
RemoteMqttClient = new MqttFactory().CreateMqttClient();
@@ -269,7 +268,10 @@
else
{
SetGatewayOnlineResetCheck();
- if (Entity.DB_ResidenceData.residenceData.GatewayType == 0)
+ var bytes = Securitys.EncryptionService.AesDecryptPayload(e.ApplicationMessage.Payload, DB_ResidenceData.Instance.HomeGateway.aesKey);
+
+ //bus鏁版嵁瑙f瀽
+ if (DB_ResidenceData.Instance.GatewayType == 0)
{
var packet = new Packet();
@@ -286,161 +288,8 @@
else
{
//A鍗忚鏁版嵁澶勭悊
- var revString = System.Text.Encoding.UTF8.GetString(e.ApplicationMessage.Payload);
- var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<GatewayAlinkControlObj>(revString);
- if (temp != null)
- {
- var allLocalFuntion = FunctionList.List.GetAllDeviceFunctionList();
- foreach (var updateTemp in temp.objects)
- {
- bool hadChange = false;//鐘舵�佹湁鍙樺寲鍐嶆洿鏂扮晫闈�
- var updataObj = allLocalFuntion.Find((obj) => obj.sid == updateTemp.sid);
- if (updataObj != null)
- {
- foreach (var attr in updateTemp.status)
- {
- foreach (var locatAttr in updataObj.attributes)
- {
- if (attr.key == locatAttr.key)
- {
- if (locatAttr.curValue.ToString() == attr.value)
- {
- continue;
- }
- locatAttr.curValue = attr.value;
- hadChange = true;
- }
- }
- }
- if(!hadChange)//鐘舵�佹湁鍙樺寲鍐嶆洿鏂扮晫闈�
- {
- continue;
- }
- //鏇存柊鐣岄潰鐘舵��
- switch (updataObj.spk)
- {
- case SPK.LightSwitch:
- RelayPage.UpdataState(updataObj as Light);
- break;
- case SPK.LightDimming:
- var dimming = updataObj as Light;
- dimming.lastState = Language.StringByID(StringId.Brightness) + " : " + dimming.brightness + "%";
- DimmerPage.UpdataStates(dimming);
- break;
- case SPK.ElectricFan:
- var fan = updataObj as Fan;
- fan.lastState = Language.StringByID(StringId.Level) + " : " + fan.openLevel;
- FanPage.UpdataState(fan);
- break;
- case SPK.LightRGB:
- var rgb = updataObj as Light;
- rgb.lastState = Language.StringByID(StringId.Brightness) + " : " + rgb.brightness + "%";
- RGBPage.UpdataStates(rgb);
- break;
- case SPK.LightRGBW:
- case SPK.LightCCT:
- break;
- case SPK.CurtainSwitch:
- var curtain = updataObj as Curtain;
- curtain.lastState = curtain.trait_on_off.curValue.ToString() == "on" ? Language.StringByID(StringId.Open) : Language.StringByID(StringId.Close);
- CurtainModulePage.UpdataState(curtain);
- break;
- case SPK.CurtainTrietex:
- var trietex = updataObj as Curtain;
- trietex.lastState = Language.StringByID(StringId.Open) + trietex.percent + "%";
- MotorCurtainPage.UpdataState(trietex);
- break;
- case SPK.CurtainRoller:
- var roller = updataObj as Curtain;
- roller.lastState = Language.StringByID(StringId.Open) + roller.percent + "%";
- RollingShutterPage.UpdataState(roller);
- break;
- case SPK.CurtainShades:
- break;
- case SPK.AcStandard:
- var ac = updataObj as AC;
- ac.lastState = "";
- switch (ac.trait_mode.curValue.ToString())
- {
- case "cool":
- ac.lastState = Language.StringByID(StringId.Cool);
- break;
- case "heat":
- ac.lastState = Language.StringByID(StringId.Heat);
- break;
- case "dry":
- ac.lastState = Language.StringByID(StringId.Dry);
- break;
- case "auto":
- ac.lastState = Language.StringByID(StringId.Auto);
- break;
- case "fan":
- ac.lastState = Language.StringByID(StringId.AirSupply);
- break;
- }
- switch (ac.trait_fan.curValue.ToString())
- {
- case "high":
- ac.lastState += " " + Language.StringByID(StringId.HighWindSpeed);
- break;
- case "medium":
- ac.lastState += " " + Language.StringByID(StringId.MiddleWindSpeed);
- break;
- case "low":
- ac.lastState += " " + Language.StringByID(StringId.LowWindSpeed);
- break;
- case "auto":
- ac.lastState += " " + Language.StringByID(StringId.Auto);
- break;
- }
- ac.lastState += " " + ac.trait_temp.curValue + ac.tempUnitString;
- ACPage.UpdataStates(ac);
- break;
- case SPK.FloorHeatStandard:
- var fh = updataObj as FloorHeating;
- switch (fh.trait_mode.curValue)
- {
- case "normal":
- fh.lastState = Language.StringByID(StringId.Normal);
- break;
- case "day":
- fh.lastState = Language.StringByID(StringId.Day);
- break;
- case "night":
- fh.lastState = Language.StringByID(StringId.Night);
- break;
- case "timer":
- fh.lastState = Language.StringByID(StringId.Auto);
- break;
- case "away":
- fh.lastState = Language.StringByID(StringId.Away);
- break;
- }
- fh.lastState += " " + fh.trait_temp.curValue + fh.tempUnitString;
- FloorHeatingPage.UpdataStates(fh);
- break;
- case SPK.SensorPm25:
- case SPK.SensorCO2:
- case SPK.SensorTVOC:
- case SPK.SensorTemperature:
- case SPK.SensorHumidity:
- var sensor = updataObj as Sensor;
- EnvironmentalSciencePage.LoadEvent_UpdataStatus(sensor);
- break;
- case SPK.ElectricSocket:
- break;
- case SPK.ElectricTV:
- break;
- default:
- break;
- }
- HomePage.UpdataFunctionStates(updataObj);
- RoomPage.UpdataStates(updataObj);
- FunctionPage.UpdataStates(updataObj);
- ClassificationPage.UpdataInfo(updataObj);
- }
- }
- }
+ var revString = Encoding.UTF8.GetString(bytes);
+ Control.Ins.UpdataFunctionStatus(revString,null);
}
}
}
@@ -461,10 +310,27 @@
if (RemoteMqttClient.ConnectedHandler == null)
{
RemoteMqttClient.UseConnectedHandler(async (e) => {
+ if (DB_ResidenceData.Instance.HomeGateway.gatewayStatus)
+ {
+ Control.Ins.GatewayOnline = true;
+ }
+ else
+ {
+ //new System.Threading.Thread(() => {
+ // while(true)
+ // {
+ // System.Threading.Thread.Sleep(1000);
+ // if (DB_ResidenceData.Instance.HomeGateway.GatewayOnline)
+ // {
+ // Control.Ins.GatewayOnline = true;
+ // break;
+ // }
+ // }
+ //}) { IsBackground = true }.Start();
+ }
IfNeedReadAllDeviceStatus = true;
Utlis.WriteLine($"============>Mqtt杩滅▼杩炴帴鎴愬姛");
SendPushSignOut();
- FunctionList.List.ReadAllFunctionStatus();
});
}
#endregion
@@ -521,7 +387,7 @@
{
try
{
- if (MqttInfoConfig.Current.HomeGatewayInfo != null && MqttInfoConfig.Current.HomeGatewayInfo.mac == Entity.DB_ResidenceData.residenceData.residenceGatewayMAC)
+ if (MqttInfoConfig.Current.HomeGatewayInfo != null && MqttInfoConfig.Current.HomeGatewayInfo.mac == Entity.DB_ResidenceData.Instance.residenceGatewayMAC)
{
await MQTTConnectAsync();
}
@@ -674,7 +540,9 @@
/// </summary>
static void ReceiveNotifySqueezeAsync(string mMes)
{
-
+#if DEBUG
+ return;
+#endif
if (mMes == PushSignStr) return;//鏄嚜宸辩殑鐧诲綍鎺ㄩ�佷笉澶勭悊
//鏂紑杩滅▼杩炴帴
@@ -686,13 +554,15 @@
DisConnectRemoteMqttClient("鎸や笅绾�");
- UserInfo.Current.LastTime = DateTime.MinValue;
- UserInfo.Current.SaveUserInfo();
+ HDLCommon.Current.CheckLogout();
- Application.RunOnMainThread(() => {
- MainPage.GoLoginPage(UserInfo.Current);
- //寮圭獥鎻愮ず琚尋涓嬬嚎
- });
+ //UserInfo.Current.LastTime = DateTime.MinValue;
+ //UserInfo.Current.SaveUserInfo();
+
+ //Application.RunOnMainThread(() => {
+ // MainPage.GoLoginPage(UserInfo.Current);
+ // //寮圭獥鎻愮ず琚尋涓嬬嚎
+ //});
//2020-08-11 鍒犻櫎鎺ㄩ�佹暟鎹�
//HDLRequest.Current.PushserivceSignOut ();
@@ -786,7 +656,8 @@
{
if (Control.Ins.IsRemote)
{
- Control.Ins.GatewayOnline = true;
+ if (!Control.Ins.GatewayOnline)
+ Control.Ins.GatewayOnline = true;
}
}
@@ -803,16 +674,17 @@
MqttInfoConfig.Current.mMqttInfo = mqttInfoRequestResult_Obj;
await MQTTConnectAsync();
//1.鍒ゆ柇鏄惁缁戝畾浜嗙綉鍏筹紝鑾峰彇缃戝叧杩滅▼杩炴帴鐨勫姞瀵咾EY
- if (DB_ResidenceData.residenceData.CheckWhetherGatewayIsBound())
+ if (DB_ResidenceData.Instance.CheckWhetherGatewayIsBound())
{
//2.鎵惧嚭鏄惁瀛樺湪鍖归厤褰撳墠浣忓畢鐨刴ac锛屽瓨鍦ㄥ啀杩涜杩滅▼銆�
- MqttInfoConfig.Current.HomeGatewayInfo = DB_ResidenceData.residenceData.HomeGateway;
+ MqttInfoConfig.Current.HomeGatewayInfo = DB_ResidenceData.Instance.HomeGateway;
//3.寮�濮嬭繛鎺�
await MQTTConnectAsync();
}
else
{
Utlis.WriteLine("============>杩樻病缁戝畾缃戝叧");
+ hadGateway = false;
}
}
}
--
Gitblit v1.8.0