From 64dbbfe1d6488635e160189a704afccffc7d34d0 Mon Sep 17 00:00:00 2001
From: wxr <464027401@qq.com>
Date: 星期一, 07 十二月 2020 11:33:06 +0800
Subject: [PATCH] Merge branch 'WJC'
---
HDL_ON/DAL/Mqtt/MqttClient.cs | 187 ++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 171 insertions(+), 16 deletions(-)
diff --git a/HDL_ON/DAL/Mqtt/MqttClient.cs b/HDL_ON/DAL/Mqtt/MqttClient.cs
index dba1acf..a4a1695 100644
--- a/HDL_ON/DAL/Mqtt/MqttClient.cs
+++ b/HDL_ON/DAL/Mqtt/MqttClient.cs
@@ -1,7 +1,6 @@
锘�/*
鏇存柊浜咵MQ杩炴帴鏂瑰紡
*/
-using System.Collections.Generic;
using System;
using MQTTnet.Client;
using System.Threading.Tasks;
@@ -9,9 +8,9 @@
using MQTTnet;
using System.Text;
using System.Security.Cryptography;
-using System.IO;
using HDL_ON.DriverLayer;
using HDL_ON.Entity;
+using HDL_ON.UI;
namespace HDL_ON.DAL.Mqtt
{
@@ -168,7 +167,7 @@
//2020-05-14 璁㈤槄涓婚璐ㄩ噺鏀逛负0
var topicFilterBusGateWayToClient = new MqttTopicFilter()
{
- Topic = $"/BusGateWayToClient/{MqttInfoConfig.Current.HomeGatewayInfo.id}/#",
+ Topic = $"/BusGateWayToClient/{MqttInfoConfig.Current.HomeGatewayInfo.gatewayId}/#",
QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.AtMostOnce
//QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.ExactlyOnce
};
@@ -180,8 +179,14 @@
//QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.ExactlyOnce
};
+ var topicAlinkStatus = new MqttTopicFilter()
+ {
+ Topic = $"/user/{MqttInfoConfig.Current.HomeGatewayInfo.gatewayId}/app/thing/property/#",
+ QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.AtMostOnce
+ };
+
Utlis.WriteLine("寮�濮嬭闃咃紒");
- var result = await RemoteMqttClient.SubscribeAsync(new MqttTopicFilter[] { topicFilterBusGateWayToClient, topicFilterPush2 });
+ var result = await RemoteMqttClient.SubscribeAsync(new MqttTopicFilter[] { topicFilterBusGateWayToClient, topicFilterPush2 , topicAlinkStatus });
if (result.Items[0].ResultCode == MQTTnet.Client.Subscribing.MqttClientSubscribeResultCode.GrantedQoS0)
{
isSubscribeSuccess = true;
@@ -246,17 +251,17 @@
//鏂版尋涓嬬嚎涓婚鏂规 鏀跺埌鎸や笅绾夸富棰�
ReceiveNotifySqueezeAsync(mMes);
}
- else if (topic == $"/BusGateWayToClient/{MqttInfoConfig.Current.HomeGatewayInfo.id}/NotifyBusGateWayInfoChange")
+ else if (topic == $"/BusGateWayToClient/{MqttInfoConfig.Current.HomeGatewayInfo.gatewayId}/NotifyBusGateWayInfoChange")
{//缃戝叧涓婄嚎锛岄渶瑕佹洿鏂癮eskey
//鏀跺埌缃戝叧涓婄嚎娑堟伅涓婚
ReceiveNotifyBusGateWayInfoChange();
}
- else if (topic == $"/BusGateWayToClient/{MqttInfoConfig.Current.HomeGatewayInfo.id}/NotifyGateWayOffline")
+ else if (topic == $"/BusGateWayToClient/{MqttInfoConfig.Current.HomeGatewayInfo.gatewayId}/NotifyGateWayOffline")
{//缃戝叧鎺夌嚎
//----绗簩姝ワ細璇诲彇璐﹀彿涓嬮潰鐨勭綉鍏冲垪琛�
ReceiveNotifyGateWayOffline();
}
- else if (topic == $"/BusGateWayToClient/{MqttInfoConfig.Current.HomeGatewayInfo.id}/Common/CheckGateway")
+ else if (topic == $"/BusGateWayToClient/{MqttInfoConfig.Current.HomeGatewayInfo.gatewayId}/Common/CheckGateway")
{
var ss = Encoding.UTF8.GetString(e.ApplicationMessage.Payload);
ReceiveCheckGateway(ss);
@@ -281,6 +286,161 @@
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);
+ }
+ }
+ }
}
}
}
@@ -304,11 +464,7 @@
IfNeedReadAllDeviceStatus = true;
Utlis.WriteLine($"============>Mqtt杩滅▼杩炴帴鎴愬姛");
SendPushSignOut();
-
- //if (Control.Ins.IsRemote) {
- // //Utlis.ShowAppLinkStatus (AppLinkStatus.CloudLink);
- // MainPage.AddTip (Language.StringByID (SimpleControl.R.MyInternationalizationString.LinkSuccess));
- //}
+ FunctionList.List.ReadAllFunctionStatus();
});
}
#endregion
@@ -426,8 +582,7 @@
//url = HttpUtil.GetProxyEMQUrl (url);
//#if DEBUG
- // url = HttpUtil.GetProxyEMQUrl (url);
-
+ //url = HttpUtil.GetProxyEMQUrl (url);
//#endif
var clientId = MqttInfoConfig.Current.mMqttInfo.clientId;
var username = MqttInfoConfig.Current.mMqttInfo.userName;
@@ -583,7 +738,7 @@
switch (optionType)
{
case 0:
- topicName = $"/ClientToBusGateWay/{MqttInfoConfig.Current.HomeGatewayInfo.id}/Common/ON";
+ topicName = $"/ClientToBusGateWay/{MqttInfoConfig.Current.HomeGatewayInfo.gatewayId}/Common/ON";
if (!string.IsNullOrEmpty(mqttEncryptKey))
{
message = Securitys.EncryptionService.AesEncryptPayload(message, mqttEncryptKey);
@@ -591,7 +746,7 @@
await RemoteMqttClient.PublishAsync(new MqttApplicationMessage { Topic = topicName, Payload = message, Retain = false, QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.AtMostOnce });
break;
case 3:
- topicName = $"/ClientToBusGateWay/{MqttInfoConfig.Current.HomeGatewayInfo.id}/Common/CheckGateway";
+ topicName = $"/ClientToBusGateWay/{MqttInfoConfig.Current.HomeGatewayInfo.gatewayId}/Common/CheckGateway";
Utlis.WriteLine("CheckGateway");
await RemoteMqttClient.PublishAsync(new MqttApplicationMessage { Topic = topicName, Retain = false, QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.AtMostOnce });
break;
--
Gitblit v1.8.0