| | |
| | | |
| | | //还有种情况是同一个ID 有多个设备用这个id连接(会导致中断) |
| | | string clientId = Shared.Common.Config.Instance.ConnectZigbeeMqttClientId; |
| | | string username = Shared.Common.Config.Instance.ConnectZigbeeMqttBrokerName; |
| | | string username = Shared.Common.Config.Instance.ConnectGuid; |
| | | string passwordRemote = Shared.Common.Config.Instance.ConnectZigbeeMqttBrokerPwd; |
| | | //(1)连接到云端的Mqtt客户端连接参数 |
| | | var connectCloudMqttClientOptions = new MqttClientTcpOptions |
| | |
| | | /// </summary> |
| | | async System.Threading.Tasks.Task SendRemoteMsg(string topicName, byte[] message, MQTTnet.Core.Protocol.MqttQualityOfServiceLevel qosLevel = MQTTnet.Core.Protocol.MqttQualityOfServiceLevel.ExactlyOnce, bool retain = false) |
| | | { |
| | | #region MD5加密 token |
| | | var result = System.Text.Encoding.UTF8.GetBytes(Shared.Common.Config.Instance.Password); |
| | | var md5 = new System.Security.Cryptography.MD5CryptoServiceProvider(); |
| | | var output = md5.ComputeHash(result); |
| | | var md5Password = BitConverter.ToString(output).Replace("-", "").ToUpper(); |
| | | #endregion |
| | | //#region MD5加密 token |
| | | //var result = System.Text.Encoding.UTF8.GetBytes(Shared.Common.Config.Instance.Password); |
| | | //var md5 = new System.Security.Cryptography.MD5CryptoServiceProvider(); |
| | | //var output = md5.ComputeHash(result); |
| | | //var md5Password = BitConverter.ToString(output).Replace("-", "").ToUpper(); |
| | | //#endregion |
| | | |
| | | //(1)生成[用户名:密码] |
| | | var userNameAndPwdStr = string.Concat(Shared.Common.Config.Instance.Account, RemoteOperatorConsts.CAP_NUMBER, md5Password); |
| | | var userNameAndPwdStr = string.Concat(Shared.Common.Config.Instance.Guid, RemoteOperatorConsts.CAP_NUMBER, Shared.Common.Config.Instance.MD5PWD); |
| | | DebugPrintLog($"userNameAndPwdStr:{userNameAndPwdStr} "); |
| | | |
| | | //(2)将(1)转成Base64字符串,生成格式[Base64(用户名:密码)] |
| | | var userNameAndPwdStrBaseSexFour = Convert.ToBase64String(ZigBee.Common.CommonInfo.EncodingUTF8.GetBytes(userNameAndPwdStr)); |
| | |
| | | |
| | | ///[Zigbee.Buspro]App/id(帐号Id)/Base64(DES[Base64(用户名:密码):Timestamp ]/网关唯一Id/转发给网关的主题/XX/XX |
| | | //(4)生成上报主题,主题模式需要为 /ZigbeeApp/id(主子调试帐号Id)/Base64(DES[Base64(用户名:密码):Timestamp ]/网关唯一Id/topicName "000204022022" GateWayId 000204022022 |
| | | var reportTopic = string.Format("/{0}/{1}/{2}/{3}/{4}", RemoteOperatorConsts.ZIGBEE_APP_STARTS_WITH, Shared.Common.Config.Instance.Account, userNameAndPwdStrBaseSexFourAndTimestamp, this.getGatewayBaseInfo?.gwID, topicName); |
| | | var reportTopic = string.Format("/{0}/{1}/{2}/{3}/{4}", RemoteOperatorConsts.ZIGBEE_APP_STARTS_WITH, Shared.Common.Config.Instance.Guid, userNameAndPwdStrBaseSexFourAndTimestamp, this.getGatewayBaseInfo?.gwID, topicName); |
| | | var aa = System.Text.Encoding.UTF8.GetString(message); |
| | | DebugPrintLog($"AAAA发送到云端主题明文:{reportTopic}___BBBBB发送到云端内容明文:{aa}"); |
| | | |
| | | //(5)使用你登录成功时8位key,进行DES加密你需要上报的数据 |
| | | string topicEncStr = reportTopic; |
| | | //文件流不用加密 |
| | | topicEncStr = ZigBee.Common.SecuritySet.AesEncrypt(System.Text.Encoding.UTF8.GetBytes(topicEncStr), Shared.Common.Config.Instance.MqttKey); |
| | | topicEncStr = topicEncStr.Replace("/", "[[$-MQTT_TILT_SYMBOL_REPLACE-$]]").Replace("+", "[[$-MQTT_PLUS_SYMBOL_REPLACE-$]]"); |
| | | message = System.Text.Encoding.UTF8.GetBytes(SecuritySet.AesEncrypt(message, Shared.Common.Config.Instance.MqttKey)); |
| | | var bb = System.Text.Encoding.UTF8.GetString(message); |
| | | DebugPrintLog($"CCCC发送到云端主题秘文:{topicEncStr}___DDDD发送到云端内容秘文:{bb}"); |
| | | |
| | | //(6)构建Mqtt需要发布的数据包,发布给云端的MqttBroker |
| | | await RemoteMqttClient.PublishAsync(new MQTTnet.Core.MqttApplicationMessage(topicEncStr, message, qosLevel, retain)); |
| | |
| | | if (gwa.GwResDataAction != null) |
| | | { |
| | | gwa.GwResDataAction(topic, message); |
| | | if (topic == $"{gatewayID}/DoorLock/DoorLockOperatingEventNotificationCommand") |
| | | { |
| | | Console.WriteLine($"111_DoorLockOperatingEventNotificationCommand:{message}"); |
| | | } |
| | | if (topic == $"{gatewayID}/DoorLock/DoorLockProgrammingEventNotificationCommand") |
| | | { |
| | | Console.WriteLine($"111_DoorLockProgrammingEventNotificationCommand:{message}"); |
| | | } |
| | | } |
| | | gwa.CurrentGateWayId = gatewayID; |
| | | |
| | |
| | | if (topic == gatewayID + "/" + "DeviceInComingRespon") |
| | | { |
| | | //新设备上报,重新发获取所有的设备 |
| | | var deviceID = jobject.Value<int>("Device_ID"); |
| | | switch ((DeviceType)(deviceID)) |
| | | { |
| | | case DeviceType.DimmableLight: |
| | | var dimmableLight = new DimmableLight() { DeviceID = jobject.Value<int>("Device_ID"), DeviceAddr = jobject.Value<string>("DeviceAddr"), DeviceEpoint = jobject.Value<int>("Epoint"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = gwa.getGatewayBaseInfo.gwID }; |
| | | dimmableLight.getNewDeviceInfo = Newtonsoft.Json.JsonConvert.DeserializeObject<DimmableLight.NewDeviceInfoData>(jobject["Data"].ToString()); |
| | | if (gwa.ReportAction != null) |
| | | { |
| | | DebugPrintLog("DeviceInComingRespon已经通知"); |
| | | gwa.ReportAction("DeviceInComingRespon", dimmableLight.getNewDeviceInfo); |
| | | } |
| | | UpdateDeviceInfo(dimmableLight, "DeviceInComingRespon"); |
| | | UpdateDeviceStatus(gwa); |
| | | break; |
| | | case DeviceType.OnOffOutput: |
| | | var toggleLight = new ToggleLight() { DeviceID = jobject.Value<int>("Device_ID"), DeviceAddr = jobject.Value<string>("DeviceAddr"), DeviceEpoint = jobject.Value<int>("Epoint"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = gwa.getGatewayBaseInfo.gwID }; |
| | | toggleLight.getNewDeviceInfo = Newtonsoft.Json.JsonConvert.DeserializeObject<ToggleLight.NewDeviceInfoData>(jobject["Data"].ToString()); |
| | | if (gwa.ReportAction != null) |
| | | { |
| | | DebugPrintLog("DeviceInComingRespon已经通知"); |
| | | gwa.ReportAction("DeviceInComingRespon", toggleLight.getNewDeviceInfo); |
| | | } |
| | | UpdateDeviceInfo(toggleLight, "DeviceInComingRespon"); |
| | | UpdateDeviceStatus(gwa); |
| | | break; |
| | | case DeviceType.AirSwitch: |
| | | var airSwitch = new AirSwitch() { DeviceID = jobject.Value<int>("Device_ID"), DeviceAddr = jobject.Value<string>("DeviceAddr"), DeviceEpoint = jobject.Value<int>("Epoint"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = gwa.getGatewayBaseInfo.gwID }; |
| | | airSwitch.getNewDeviceInfo = Newtonsoft.Json.JsonConvert.DeserializeObject<AirSwitch.NewDeviceInfoData>(jobject["Data"].ToString()); |
| | | if (gwa.ReportAction != null) |
| | | { |
| | | DebugPrintLog("DeviceInComingRespon已经通知"); |
| | | gwa.ReportAction("DeviceInComingRespon", airSwitch.getNewDeviceInfo); |
| | | } |
| | | UpdateDeviceInfo(airSwitch, "DeviceInComingRespon"); |
| | | UpdateDeviceStatus(gwa); |
| | | break; |
| | | case DeviceType.OnOffSwitch: |
| | | var panel = new Panel() { DeviceID = jobject.Value<int>("Device_ID"), DeviceAddr = jobject.Value<string>("DeviceAddr"), DeviceEpoint = jobject.Value<int>("Epoint"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = gwa.getGatewayBaseInfo.gwID }; |
| | | panel.getNewDeviceInfo = Newtonsoft.Json.JsonConvert.DeserializeObject<Panel.NewDeviceInfoData>(jobject["Data"].ToString()); |
| | | if (gwa.ReportAction != null) |
| | | { |
| | | DebugPrintLog("DeviceInComingRespon已经通知"); |
| | | gwa.ReportAction("DeviceInComingRespon", panel.getNewDeviceInfo); |
| | | } |
| | | UpdateDeviceInfo(panel, "DeviceInComingRespon"); |
| | | UpdateDeviceStatus(gwa); |
| | | break; |
| | | case DeviceType.WindowCoveringDevice: |
| | | var curtain = new Rollershade() { DeviceID = jobject.Value<int>("Device_ID"), DeviceAddr = jobject.Value<string>("DeviceAddr"), DeviceEpoint = jobject.Value<int>("Epoint"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = gwa.getGatewayBaseInfo.gwID }; |
| | | curtain.getNewDeviceInfo = Newtonsoft.Json.JsonConvert.DeserializeObject<Rollershade.NewDeviceInfoData>(jobject["Data"].ToString()); |
| | | if (gwa.ReportAction != null) |
| | | { |
| | | DebugPrintLog("DeviceInComingRespon已经通知"); |
| | | gwa.ReportAction("DeviceInComingRespon", curtain.getNewDeviceInfo); |
| | | } |
| | | UpdateDeviceInfo(curtain, "DeviceInComingRespon"); |
| | | UpdateDeviceStatus(gwa); |
| | | break; |
| | | case DeviceType.IASZone: |
| | | var ias = new IASZone() { DeviceID = jobject.Value<int>("Device_ID"), DeviceAddr = jobject.Value<string>("DeviceAddr"), DeviceEpoint = jobject.Value<int>("Epoint"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = gwa.getGatewayBaseInfo.gwID }; |
| | | ias.getNewDeviceInfo = Newtonsoft.Json.JsonConvert.DeserializeObject<IASZone.NewDeviceInfoData>(jobject["Data"].ToString()); |
| | | if (gwa.ReportAction != null) |
| | | { |
| | | DebugPrintLog("DeviceInComingRespon已经通知"); |
| | | gwa.ReportAction("DeviceInComingRespon", ias.getNewDeviceInfo); |
| | | } |
| | | UpdateDeviceInfo(ias, "DeviceInComingRespon"); |
| | | UpdateDeviceStatus(gwa); |
| | | break; |
| | | case DeviceType.Repeater: |
| | | var repeater = new Repeater() { DeviceID = jobject.Value<int>("Device_ID"), DeviceAddr = jobject.Value<string>("DeviceAddr"), DeviceEpoint = jobject.Value<int>("Epoint"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = gwa.getGatewayBaseInfo.gwID }; |
| | | repeater.getNewDeviceInfo = Newtonsoft.Json.JsonConvert.DeserializeObject<Repeater.NewDeviceInfoData>(jobject["Data"].ToString()); |
| | | if (gwa.ReportAction != null) |
| | | { |
| | | DebugPrintLog("DeviceInComingRespon已经通知"); |
| | | gwa.ReportAction("DeviceInComingRespon", repeater.getNewDeviceInfo); |
| | | } |
| | | UpdateDeviceInfo(repeater, "DeviceInComingRespon"); |
| | | UpdateDeviceStatus(gwa); |
| | | break; |
| | | case DeviceType.Thermostat: |
| | | var ac = new AC() { DeviceID = jobject.Value<int>("Device_ID"), DeviceAddr = jobject.Value<string>("DeviceAddr"), DeviceEpoint = jobject.Value<int>("Epoint"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = gwa.getGatewayBaseInfo.gwID }; |
| | | ac.getNewDeviceInfo = Newtonsoft.Json.JsonConvert.DeserializeObject<AC.NewDeviceInfoData>(jobject["Data"].ToString()); |
| | | if (gwa.ReportAction != null) |
| | | { |
| | | DebugPrintLog("DeviceInComingRespon已经通知"); |
| | | gwa.ReportAction("DeviceInComingRespon", ac.getNewDeviceInfo); |
| | | } |
| | | UpdateDeviceInfo(ac, "DeviceInComingRespon"); |
| | | UpdateDeviceStatus(gwa); |
| | | break; |
| | | case DeviceType.Transverter: |
| | | var transverter = new Transverter() { DeviceID = jobject.Value<int>("Device_ID"), DeviceAddr = jobject.Value<string>("DeviceAddr"), DeviceEpoint = jobject.Value<int>("Epoint"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = gwa.getGatewayBaseInfo.gwID }; |
| | | transverter.getNewDeviceInfo = Newtonsoft.Json.JsonConvert.DeserializeObject<Transverter.NewDeviceInfoData>(jobject["Data"].ToString()); |
| | | if (gwa.ReportAction != null) |
| | | { |
| | | DebugPrintLog("DeviceInComingRespon已经通知"); |
| | | gwa.ReportAction("DeviceInComingRespon", transverter.getNewDeviceInfo); |
| | | } |
| | | UpdateDeviceInfo(transverter, "DeviceInComingRespon"); |
| | | UpdateDeviceStatus(gwa); |
| | | break; |
| | | case DeviceType.DoorLock: |
| | | var doorLock = new DoorLock() { DeviceID = jobject.Value<int>("Device_ID"), DeviceAddr = jobject.Value<string>("DeviceAddr"), DeviceEpoint = jobject.Value<int>("Epoint"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = gwa.getGatewayBaseInfo.gwID }; |
| | | doorLock.getNewDeviceInfo = Newtonsoft.Json.JsonConvert.DeserializeObject<DoorLock.NewDeviceInfoData>(jobject["Data"].ToString()); |
| | | if (gwa.ReportAction != null) |
| | | { |
| | | DebugPrintLog("DeviceInComingRespon已经通知"); |
| | | gwa.ReportAction("DeviceInComingRespon", doorLock.getNewDeviceInfo); |
| | | } |
| | | UpdateDeviceInfo(doorLock, "DeviceInComingRespon"); |
| | | UpdateDeviceStatus(gwa); |
| | | break; |
| | | } |
| | | var tempDevice = new CommonDevice() { DeviceID = jobject.Value<int>("Device_ID"), DeviceAddr = jobject.Value<string>("DeviceAddr"), DeviceEpoint = jobject.Value<int>("Epoint"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = gwa.getGatewayBaseInfo.gwID }; |
| | | tempDevice.getNewDeviceInfo = Newtonsoft.Json.JsonConvert.DeserializeObject<CommonDevice.NewDeviceInfoData>(jobject["Data"].ToString()); |
| | | if (gwa.ReportAction != null)
|
| | | {
|
| | | DebugPrintLog("DeviceInComingRespon已经通知");
|
| | | gwa.ReportAction("DeviceInComingRespon", tempDevice.getNewDeviceInfo);
|
| | | }
|
| | | UpdateDeviceInfo(tempDevice, "DeviceInComingRespon");
|
| | | UpdateDeviceStatus(gwa); |
| | | } |
| | | #endregion |
| | | #region 设备在线状态更新反馈 |
| | | else if (topic == gatewayID + "/" + "OnlineStatusChange_Respon") |
| | | { |
| | | var deviceID = jobject.Value<int>("Device_ID"); |
| | | switch ((DeviceType)(deviceID)) |
| | | { |
| | | case DeviceType.DimmableLight: |
| | | var dimmableLight = new DimmableLight() { DeviceID = jobject.Value<int>("Device_ID"), DeviceAddr = jobject.Value<string>("DeviceAddr"), DeviceEpoint = jobject.Value<int>("Epoint"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = gwa.getGatewayBaseInfo.gwID }; |
| | | dimmableLight.IsOnline = Newtonsoft.Json.JsonConvert.DeserializeObject<int>(jobject["Data"]["IsOnline"].ToString()); |
| | | |
| | | if (gwa.ReportAction != null) |
| | | { |
| | | DebugPrintLog("OnlineStatusChange已经通知"); |
| | | gwa.ReportAction("OnlineStatusChange", dimmableLight); |
| | | } |
| | | var lightDimmer = gwa.DeviceList.Find(obj => obj.DeviceID == dimmableLight.DeviceID && obj.DeviceAddr == dimmableLight.DeviceAddr); |
| | | if (lightDimmer == null) |
| | | { |
| | | gwa.DeviceList.Add(dimmableLight); |
| | | UpdateDeviceStatus(dimmableLight); |
| | | UpdateDeviceInfo(dimmableLight, "OnlineStatusChange"); |
| | | } |
| | | else |
| | | { |
| | | if (dimmableLight.DeviceInfo != null) |
| | | { |
| | | dimmableLight.DeviceInfo.IsOnline = dimmableLight.IsOnline; |
| | | } |
| | | UpdateDeviceInfo(dimmableLight, "OnlineStatusChange"); |
| | | UpdateDeviceStatus(dimmableLight); |
| | | } |
| | | |
| | | break; |
| | | case DeviceType.OnOffOutput: |
| | | var toggleLight = new ToggleLight() { DeviceID = jobject.Value<int>("Device_ID"), DeviceAddr = jobject.Value<string>("DeviceAddr"), DeviceEpoint = jobject.Value<int>("Epoint"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = gwa.getGatewayBaseInfo.gwID }; |
| | | toggleLight.IsOnline = Newtonsoft.Json.JsonConvert.DeserializeObject<int>(jobject["Data"]["IsOnline"].ToString()); |
| | | if (gwa.ReportAction != null) |
| | | { |
| | | DebugPrintLog("OnlineStatusChange已经通知"); |
| | | gwa.ReportAction("OnlineStatusChange", toggleLight); |
| | | } |
| | | var toggleInfo = gwa.DeviceList.Find(obj => obj.DeviceID == toggleLight.DeviceID && obj.DeviceAddr == toggleLight.DeviceAddr); |
| | | if (toggleInfo == null) |
| | | { |
| | | gwa.DeviceList.Add(toggleLight); |
| | | UpdateDeviceInfo(toggleLight, "OnlineStatusChange"); |
| | | UpdateDeviceStatus(toggleLight); |
| | | } |
| | | else |
| | | { |
| | | if (toggleLight.DeviceInfo != null) |
| | | { |
| | | toggleLight.DeviceInfo.IsOnline = toggleLight.IsOnline; |
| | | } |
| | | UpdateDeviceInfo(toggleLight, "OnlineStatusChange"); |
| | | UpdateDeviceStatus(toggleLight); |
| | | } |
| | | break; |
| | | case DeviceType.AirSwitch: |
| | | var airSwitch = new AirSwitch() { DeviceID = jobject.Value<int>("Device_ID"), DeviceAddr = jobject.Value<string>("DeviceAddr"), DeviceEpoint = jobject.Value<int>("Epoint"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = gwa.getGatewayBaseInfo.gwID }; |
| | | airSwitch.IsOnline = Newtonsoft.Json.JsonConvert.DeserializeObject<int>(jobject["Data"]["IsOnline"].ToString()); |
| | | if (gwa.ReportAction != null) |
| | | { |
| | | DebugPrintLog("OnlineStatusChange已经通知"); |
| | | gwa.ReportAction("OnlineStatusChange", airSwitch); |
| | | } |
| | | var airSwitchInfo = gwa.DeviceList.Find(obj => obj.DeviceID == airSwitch.DeviceID && obj.DeviceAddr == airSwitch.DeviceAddr); |
| | | if (airSwitchInfo == null) |
| | | { |
| | | gwa.DeviceList.Add(airSwitch); |
| | | UpdateDeviceInfo(airSwitch, "OnlineStatusChange"); |
| | | UpdateDeviceStatus(gwa); |
| | | } |
| | | else |
| | | { |
| | | if (airSwitchInfo.DeviceInfo != null) |
| | | { |
| | | airSwitchInfo.DeviceInfo.IsOnline = airSwitchInfo.IsOnline; |
| | | } |
| | | UpdateDeviceInfo(airSwitchInfo, "OnlineStatusChange"); |
| | | UpdateDeviceStatus(airSwitchInfo); |
| | | } |
| | | break; |
| | | case DeviceType.OnOffSwitch: |
| | | var panel = new Panel() { DeviceID = jobject.Value<int>("Device_ID"), DeviceAddr = jobject.Value<string>("DeviceAddr"), DeviceEpoint = jobject.Value<int>("Epoint"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = gwa.getGatewayBaseInfo.gwID }; |
| | | panel.IsOnline = Newtonsoft.Json.JsonConvert.DeserializeObject<int>(jobject["Data"]["IsOnline"].ToString()); |
| | | if (gwa.ReportAction != null) |
| | | { |
| | | DebugPrintLog("OnlineStatusChange已经通知"); |
| | | gwa.ReportAction("OnlineStatusChange", panel); |
| | | } |
| | | var panelInfo = gwa.DeviceList.Find(obj => obj.DeviceID == panel.DeviceID && obj.DeviceAddr == panel.DeviceAddr); |
| | | if (panelInfo == null) |
| | | { |
| | | gwa.DeviceList.Add(panel); |
| | | UpdateDeviceInfo(panel, "OnlineStatusChange"); |
| | | UpdateDeviceStatus(panel); |
| | | } |
| | | else |
| | | { |
| | | if (panelInfo.DeviceInfo != null) |
| | | { |
| | | panelInfo.DeviceInfo.IsOnline = panelInfo.IsOnline; |
| | | } |
| | | UpdateDeviceInfo(panelInfo, "OnlineStatusChange"); |
| | | UpdateDeviceStatus(panelInfo); |
| | | } |
| | | break; |
| | | case DeviceType.WindowCoveringDevice: |
| | | var curtain = new Rollershade() { DeviceID = jobject.Value<int>("Device_ID"), DeviceAddr = jobject.Value<string>("DeviceAddr"), DeviceEpoint = jobject.Value<int>("Epoint"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = gwa.getGatewayBaseInfo.gwID }; |
| | | curtain.IsOnline = Newtonsoft.Json.JsonConvert.DeserializeObject<int>(jobject["Data"]["IsOnline"].ToString()); |
| | | if (gwa.ReportAction != null) |
| | | { |
| | | DebugPrintLog("OnlineStatusChange已经通知"); |
| | | gwa.ReportAction("OnlineStatusChange", curtain); |
| | | } |
| | | var curtainInfo = gwa.DeviceList.Find(obj => obj.DeviceID == curtain.DeviceID && obj.DeviceAddr == curtain.DeviceAddr); |
| | | if (curtainInfo == null) |
| | | { |
| | | gwa.DeviceList.Add(curtain); |
| | | UpdateDeviceInfo(curtain, "OnlineStatusChange"); |
| | | UpdateDeviceStatus(gwa); |
| | | } |
| | | else |
| | | { |
| | | if (curtain.DeviceInfo != null) |
| | | { |
| | | curtain.DeviceInfo.IsOnline = curtain.IsOnline; |
| | | } |
| | | UpdateDeviceStatus(curtain); |
| | | UpdateDeviceInfo(curtain, "OnlineStatusChange"); |
| | | } |
| | | break; |
| | | case DeviceType.IASZone: |
| | | var ias = new IASZone() { DeviceID = jobject.Value<int>("Device_ID"), DeviceAddr = jobject.Value<string>("DeviceAddr"), DeviceEpoint = jobject.Value<int>("Epoint"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = gwa.getGatewayBaseInfo.gwID }; |
| | | ias.IsOnline = Newtonsoft.Json.JsonConvert.DeserializeObject<int>(jobject["Data"]["IsOnline"].ToString()); |
| | | if (gwa.ReportAction != null) |
| | | { |
| | | DebugPrintLog("OnlineStatusChange已经通知"); |
| | | gwa.ReportAction("OnlineStatusChange", ias); |
| | | } |
| | | var iasInfo = gwa.DeviceList.Find(obj => obj.DeviceID == ias.DeviceID && obj.DeviceAddr == ias.DeviceAddr); |
| | | if (iasInfo == null) |
| | | { |
| | | gwa.DeviceList.Add(iasInfo); |
| | | UpdateDeviceInfo(iasInfo, "OnlineStatusChange"); |
| | | UpdateDeviceStatus(gwa); |
| | | } |
| | | else |
| | | { |
| | | if (iasInfo.DeviceInfo != null) |
| | | { |
| | | iasInfo.DeviceInfo.IsOnline = iasInfo.IsOnline; |
| | | } |
| | | UpdateDeviceInfo(iasInfo, "OnlineStatusChange"); |
| | | UpdateDeviceStatus(iasInfo); |
| | | } |
| | | break; |
| | | case DeviceType.Repeater: |
| | | var repeater = new Repeater() { DeviceID = jobject.Value<int>("Device_ID"), DeviceAddr = jobject.Value<string>("DeviceAddr"), DeviceEpoint = jobject.Value<int>("Epoint"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = gwa.getGatewayBaseInfo.gwID }; |
| | | repeater.IsOnline = Newtonsoft.Json.JsonConvert.DeserializeObject<int>(jobject["Data"]["IsOnline"].ToString()); |
| | | if (gwa.ReportAction != null) |
| | | { |
| | | DebugPrintLog("OnlineStatusChange已经通知"); |
| | | gwa.ReportAction("OnlineStatusChange", repeater); |
| | | } |
| | | var repeaterInfo = gwa.DeviceList.Find(obj => obj.DeviceID == repeater.DeviceID && obj.DeviceAddr == repeater.DeviceAddr); |
| | | if (repeaterInfo == null) |
| | | { |
| | | gwa.DeviceList.Add(repeaterInfo); |
| | | UpdateDeviceInfo(repeaterInfo, "OnlineStatusChange"); |
| | | UpdateDeviceStatus(gwa); |
| | | } |
| | | else |
| | | { |
| | | if (repeaterInfo.DeviceInfo != null) |
| | | { |
| | | repeaterInfo.DeviceInfo.IsOnline = repeaterInfo.IsOnline; |
| | | } |
| | | UpdateDeviceInfo(repeaterInfo, "OnlineStatusChange"); |
| | | UpdateDeviceStatus(repeaterInfo); |
| | | } |
| | | break; |
| | | case DeviceType.Thermostat: |
| | | var ac = new AC() { DeviceID = jobject.Value<int>("Device_ID"), DeviceAddr = jobject.Value<string>("DeviceAddr"), DeviceEpoint = jobject.Value<int>("Epoint"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = gwa.getGatewayBaseInfo.gwID }; |
| | | ac.IsOnline = Newtonsoft.Json.JsonConvert.DeserializeObject<int>(jobject["Data"]["IsOnline"].ToString()); |
| | | if (gwa.ReportAction != null) |
| | | { |
| | | DebugPrintLog("OnlineStatusChange已经通知"); |
| | | gwa.ReportAction("OnlineStatusChange", ac); |
| | | } |
| | | var acInfo = gwa.DeviceList.Find(obj => obj.DeviceID == ac.DeviceID && obj.DeviceAddr == ac.DeviceAddr); |
| | | if (acInfo == null) |
| | | { |
| | | gwa.DeviceList.Add(acInfo); |
| | | UpdateDeviceInfo(acInfo, "OnlineStatusChange"); |
| | | UpdateDeviceStatus(gwa); |
| | | } |
| | | else |
| | | { |
| | | if (acInfo.DeviceInfo != null) |
| | | { |
| | | acInfo.DeviceInfo.IsOnline = acInfo.IsOnline; |
| | | } |
| | | UpdateDeviceInfo(acInfo, "OnlineStatusChange"); |
| | | UpdateDeviceStatus(acInfo); |
| | | } |
| | | break; |
| | | case DeviceType.Transverter: |
| | | var transverter = new Transverter() { DeviceID = jobject.Value<int>("Device_ID"), DeviceAddr = jobject.Value<string>("DeviceAddr"), DeviceEpoint = jobject.Value<int>("Epoint"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = gwa.getGatewayBaseInfo.gwID }; |
| | | transverter.IsOnline = Newtonsoft.Json.JsonConvert.DeserializeObject<int>(jobject["Data"]["IsOnline"].ToString()); |
| | | if (gwa.ReportAction != null) |
| | | { |
| | | DebugPrintLog("OnlineStatusChange已经通知"); |
| | | gwa.ReportAction("OnlineStatusChange", transverter); |
| | | } |
| | | var transverterInfo = gwa.DeviceList.Find(obj => obj.DeviceID == transverter.DeviceID && obj.DeviceAddr == transverter.DeviceAddr); |
| | | if (transverterInfo == null) |
| | | { |
| | | gwa.DeviceList.Add(transverterInfo); |
| | | UpdateDeviceInfo(transverterInfo, "OnlineStatusChange"); |
| | | UpdateDeviceStatus(gwa); |
| | | } |
| | | else |
| | | { |
| | | if (transverterInfo.DeviceInfo != null) |
| | | { |
| | | transverterInfo.DeviceInfo.IsOnline = transverterInfo.IsOnline; |
| | | } |
| | | UpdateDeviceInfo(transverterInfo, "OnlineStatusChange"); |
| | | UpdateDeviceStatus(transverterInfo); |
| | | } |
| | | break; |
| | | case DeviceType.DoorLock: |
| | | var doorLock = new DoorLock() { DeviceID = jobject.Value<int>("Device_ID"), DeviceAddr = jobject.Value<string>("DeviceAddr"), DeviceEpoint = jobject.Value<int>("Epoint"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = gwa.getGatewayBaseInfo.gwID }; |
| | | doorLock.IsOnline = Newtonsoft.Json.JsonConvert.DeserializeObject<int>(jobject["Data"]["IsOnline"].ToString()); |
| | | if (gwa.ReportAction != null) |
| | | { |
| | | DebugPrintLog("OnlineStatusChange已经通知"); |
| | | gwa.ReportAction("OnlineStatusChange", doorLock); |
| | | } |
| | | var doorLockInfo = gwa.DeviceList.Find(obj => obj.DeviceID == doorLock.DeviceID && obj.DeviceAddr == doorLock.DeviceAddr); |
| | | if (doorLockInfo == null) |
| | | { |
| | | gwa.DeviceList.Add(doorLockInfo); |
| | | UpdateDeviceInfo(doorLockInfo, "OnlineStatusChange"); |
| | | UpdateDeviceStatus(gwa); |
| | | } |
| | | else |
| | | { |
| | | if (doorLockInfo.DeviceInfo != null) |
| | | { |
| | | doorLockInfo.DeviceInfo.IsOnline = doorLockInfo.IsOnline; |
| | | } |
| | | UpdateDeviceInfo(doorLockInfo, "OnlineStatusChange"); |
| | | UpdateDeviceStatus(doorLockInfo); |
| | | } |
| | | break; |
| | | var tempDevice = new CommonDevice() { DeviceID = jobject.Value<int>("Device_ID"), DeviceAddr = jobject.Value<string>("DeviceAddr"), DeviceEpoint = jobject.Value<int>("Epoint"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = gwa.getGatewayBaseInfo.gwID };
|
| | | tempDevice.IsOnline = Newtonsoft.Json.JsonConvert.DeserializeObject<int>(jobject["Data"]["IsOnline"].ToString());
|
| | |
|
| | | if (gwa.ReportAction != null)
|
| | | {
|
| | | DebugPrintLog("OnlineStatusChange已经通知");
|
| | | gwa.ReportAction("OnlineStatusChange", tempDevice);
|
| | | }
|
| | | var infoTempDevice = gwa.DeviceList.Find(obj => obj.DeviceID == tempDevice.DeviceID && obj.DeviceAddr == tempDevice.DeviceAddr);
|
| | | if (infoTempDevice == null)
|
| | | {
|
| | | gwa.DeviceList.Add(tempDevice);
|
| | | UpdateDeviceStatus(tempDevice);
|
| | | UpdateDeviceInfo(tempDevice, "OnlineStatusChange");
|
| | | }
|
| | | else
|
| | | {
|
| | | if (infoTempDevice.DeviceInfo != null)
|
| | | {
|
| | | infoTempDevice.DeviceInfo.IsOnline = infoTempDevice.IsOnline;
|
| | | }
|
| | | UpdateDeviceInfo(infoTempDevice, "OnlineStatusChange");
|
| | | UpdateDeviceStatus(infoTempDevice);
|
| | | } |
| | | } |
| | | #endregion |
| | |
| | | { |
| | | foreach (var delD in gatewayTemp.removeDeviceResponseData.DeviceList) |
| | | { |
| | | var deviceID = delD.Device_ID; |
| | | switch ((DeviceType)(deviceID)) |
| | | { |
| | | case DeviceType.OnOffOutput: |
| | | var toggleLight = new ToggleLight() { DeviceAddr = jobject.Value<string>("DeviceAddr"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = gwa.getGatewayBaseInfo.gwID }; |
| | | toggleLight.removeDeviceResponseData = Newtonsoft.Json.JsonConvert.DeserializeObject<ToggleLight.RemoveDeviceResponseData>(jobject["Data"].ToString()); |
| | | if (toggleLight.removeDeviceResponseData == null) |
| | | { |
| | | return; |
| | | } |
| | | else |
| | | { |
| | | UpdateDeviceStatus(toggleLight); |
| | | UpdateDeviceInfo(toggleLight, "RemoveDeviceRespon"); |
| | | if (toggleLight.removeDeviceResponseData.Result == 0) |
| | | { |
| | | var infoToggleLight = gwa.DeviceList.Find((CommonDevice obj) => obj.DeviceID == toggleLight.DeviceID && obj.DeviceAddr == toggleLight.DeviceAddr && obj.DeviceEpoint == toggleLight.DeviceEpoint); |
| | | if (infoToggleLight != null) |
| | | { |
| | | gwa.DeviceList.Remove(infoToggleLight); |
| | | } |
| | | } |
| | | } |
| | | break; |
| | | case DeviceType.AirSwitch: |
| | | var airSwitch = new AirSwitch() { DeviceAddr = jobject.Value<string>("DeviceAddr"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = gwa.getGatewayBaseInfo.gwID }; |
| | | airSwitch.removeDeviceResponseData = Newtonsoft.Json.JsonConvert.DeserializeObject<AirSwitch.RemoveDeviceResponseData>(jobject["Data"].ToString()); |
| | | if (airSwitch.removeDeviceResponseData == null) |
| | | { |
| | | return; |
| | | } |
| | | else |
| | | { |
| | | UpdateDeviceStatus(airSwitch); |
| | | UpdateDeviceInfo(airSwitch, "RemoveDeviceRespon"); |
| | | if (airSwitch.removeDeviceResponseData.Result == 0) |
| | | { |
| | | var infoAirSwitch = gwa.DeviceList.Find((CommonDevice obj) => obj.DeviceID == airSwitch.DeviceID && obj.DeviceAddr == airSwitch.DeviceAddr && obj.DeviceEpoint == airSwitch.DeviceEpoint); |
| | | if (infoAirSwitch != null) |
| | | { |
| | | gwa.DeviceList.Remove(infoAirSwitch); |
| | | } |
| | | } |
| | | } |
| | | break; |
| | | case DeviceType.OnOffSwitch: |
| | | var panelObj = new Panel() { DeviceID = jobject.Value<int>("Device_ID"), DeviceAddr = jobject.Value<string>("DeviceAddr"), DeviceEpoint = jobject.Value<int>("Epoint"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = gwa.getGatewayBaseInfo.gwID }; |
| | | panelObj.removeDeviceResponseData = Newtonsoft.Json.JsonConvert.DeserializeObject<Panel.RemoveDeviceResponseData>(jobject["Data"].ToString()); |
| | | if (panelObj.removeDeviceResponseData == null) |
| | | { |
| | | return; |
| | | } |
| | | else |
| | | { |
| | | UpdateDeviceStatus(panelObj); |
| | | UpdateDeviceInfo(panelObj, "RemoveDeviceRespon"); |
| | | if (panelObj.removeDeviceResponseData.Result == 0) |
| | | { |
| | | var infoPanel = gwa.DeviceList.Find((CommonDevice obj) => obj.DeviceID == panelObj.DeviceID && obj.DeviceAddr == panelObj.DeviceAddr && obj.DeviceEpoint == panelObj.DeviceEpoint); |
| | | if (infoPanel != null) |
| | | { |
| | | gwa.DeviceList.Remove(infoPanel); |
| | | } |
| | | } |
| | | } |
| | | break; |
| | | case DeviceType.WindowCoveringDevice: |
| | | var rollershade = new Rollershade() { DeviceID = jobject.Value<int>("Device_ID"), DeviceAddr = jobject.Value<string>("DeviceAddr"), DeviceEpoint = jobject.Value<int>("Epoint"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = gwa.getGatewayBaseInfo.gwID }; |
| | | rollershade.removeDeviceResponseData = Newtonsoft.Json.JsonConvert.DeserializeObject<Panel.RemoveDeviceResponseData>(jobject["Data"].ToString()); |
| | | if (rollershade.removeDeviceResponseData == null) |
| | | { |
| | | return; |
| | | } |
| | | else |
| | | { |
| | | UpdateDeviceStatus(rollershade); |
| | | UpdateDeviceInfo(rollershade, "RemoveDeviceRespon"); |
| | | if (rollershade.removeDeviceResponseData.Result == 0) |
| | | { |
| | | var infoRoller = gwa.DeviceList.Find((CommonDevice obj) => obj.DeviceID == rollershade.DeviceID && obj.DeviceAddr == rollershade.DeviceAddr && obj.DeviceEpoint == rollershade.DeviceEpoint); |
| | | if (infoRoller != null) |
| | | { |
| | | gwa.DeviceList.Remove(infoRoller); |
| | | } |
| | | } |
| | | } |
| | | break; |
| | | case DeviceType.IASZone: |
| | | var ias = new IASZone() { DeviceAddr = jobject.Value<string>("DeviceAddr"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = gwa.getGatewayBaseInfo.gwID }; |
| | | ias.removeDeviceResponseData = Newtonsoft.Json.JsonConvert.DeserializeObject<IASZone.RemoveDeviceResponseData>(jobject["Data"].ToString()); |
| | | if (ias.removeDeviceResponseData == null) |
| | | { |
| | | return; |
| | | } |
| | | else |
| | | { |
| | | UpdateDeviceStatus(ias); |
| | | UpdateDeviceInfo(ias, "RemoveDeviceRespon"); |
| | | if (ias.removeDeviceResponseData.Result == 0) |
| | | { |
| | | var info = gwa.DeviceList.Find((CommonDevice obj) => obj.DeviceID == ias.DeviceID && obj.DeviceAddr == ias.DeviceAddr && obj.DeviceEpoint == ias.DeviceEpoint); |
| | | if (info != null) |
| | | { |
| | | gwa.DeviceList.Remove(info); |
| | | } |
| | | } |
| | | } |
| | | break; |
| | | case DeviceType.DimmableLight: |
| | | var dimmableLight = new DimmableLight() { DeviceAddr = jobject.Value<string>("DeviceAddr"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = gwa.getGatewayBaseInfo.gwID }; |
| | | dimmableLight.removeDeviceResponseData = Newtonsoft.Json.JsonConvert.DeserializeObject<DimmableLight.RemoveDeviceResponseData>(jobject["Data"].ToString()); |
| | | if (dimmableLight.removeDeviceResponseData == null) |
| | | { |
| | | return; |
| | | } |
| | | else |
| | | { |
| | | UpdateDeviceStatus(dimmableLight); |
| | | UpdateDeviceInfo(dimmableLight, "RemoveDeviceRespon"); |
| | | if (dimmableLight.removeDeviceResponseData.Result == 0) |
| | | { |
| | | var info = gwa.DeviceList.Find((CommonDevice obj) => obj.DeviceID == dimmableLight.DeviceID && obj.DeviceAddr == dimmableLight.DeviceAddr && obj.DeviceEpoint == dimmableLight.DeviceEpoint); |
| | | if (info != null) |
| | | { |
| | | gwa.DeviceList.Remove(info); |
| | | } |
| | | } |
| | | } |
| | | break; |
| | | case DeviceType.Repeater: |
| | | var repeater = new Repeater() { DeviceAddr = jobject.Value<string>("DeviceAddr"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = gwa.getGatewayBaseInfo.gwID }; |
| | | repeater.removeDeviceResponseData = Newtonsoft.Json.JsonConvert.DeserializeObject<DimmableLight.RemoveDeviceResponseData>(jobject["Data"].ToString()); |
| | | if (repeater.removeDeviceResponseData == null) |
| | | { |
| | | return; |
| | | } |
| | | else |
| | | { |
| | | UpdateDeviceStatus(repeater); |
| | | UpdateDeviceInfo(repeater, "RemoveDeviceRespon"); |
| | | if (repeater.removeDeviceResponseData.Result == 0) |
| | | { |
| | | var info = gwa.DeviceList.Find((CommonDevice obj) => obj.DeviceID == repeater.DeviceID && obj.DeviceAddr == repeater.DeviceAddr && obj.DeviceEpoint == repeater.DeviceEpoint); |
| | | if (info != null) |
| | | { |
| | | gwa.DeviceList.Remove(info); |
| | | } |
| | | } |
| | | } |
| | | break; |
| | | case DeviceType.Thermostat: |
| | | var ac = new AC() { DeviceAddr = jobject.Value<string>("DeviceAddr"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = gwa.getGatewayBaseInfo.gwID }; |
| | | ac.removeDeviceResponseData = Newtonsoft.Json.JsonConvert.DeserializeObject<AC.RemoveDeviceResponseData>(jobject["Data"].ToString()); |
| | | if (ac.removeDeviceResponseData == null) |
| | | { |
| | | return; |
| | | } |
| | | else |
| | | { |
| | | UpdateDeviceStatus(ac); |
| | | UpdateDeviceInfo(ac, "RemoveDeviceRespon"); |
| | | if (ac.removeDeviceResponseData.Result == 0) |
| | | { |
| | | var info = gwa.DeviceList.Find((CommonDevice obj) => obj.DeviceID == ac.DeviceID && obj.DeviceAddr == ac.DeviceAddr && obj.DeviceEpoint == ac.DeviceEpoint); |
| | | if (info != null) |
| | | { |
| | | gwa.DeviceList.Remove(info); |
| | | } |
| | | } |
| | | } |
| | | break; |
| | | case DeviceType.Transverter: |
| | | var transverter = new Transverter() { DeviceAddr = jobject.Value<string>("DeviceAddr"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = gwa.getGatewayBaseInfo.gwID }; |
| | | transverter.removeDeviceResponseData = Newtonsoft.Json.JsonConvert.DeserializeObject<Transverter.RemoveDeviceResponseData>(jobject["Data"].ToString()); |
| | | if (transverter.removeDeviceResponseData == null) |
| | | { |
| | | return; |
| | | } |
| | | else |
| | | { |
| | | UpdateDeviceStatus(transverter); |
| | | UpdateDeviceInfo(transverter, "RemoveDeviceRespon"); |
| | | if (transverter.removeDeviceResponseData.Result == 0) |
| | | { |
| | | var info = gwa.DeviceList.Find((CommonDevice obj) => obj.DeviceID == transverter.DeviceID && obj.DeviceAddr == transverter.DeviceAddr && obj.DeviceEpoint == transverter.DeviceEpoint); |
| | | if (info != null) |
| | | { |
| | | gwa.DeviceList.Remove(info); |
| | | } |
| | | } |
| | | } |
| | | break; |
| | | case DeviceType.DoorLock: |
| | | var doorLock = new DoorLock() { DeviceAddr = jobject.Value<string>("DeviceAddr"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = gwa.getGatewayBaseInfo.gwID }; |
| | | doorLock.removeDeviceResponseData = Newtonsoft.Json.JsonConvert.DeserializeObject<DoorLock.RemoveDeviceResponseData>(jobject["Data"].ToString()); |
| | | if (doorLock.removeDeviceResponseData == null) |
| | | { |
| | | return; |
| | | } |
| | | else |
| | | { |
| | | UpdateDeviceStatus(doorLock); |
| | | UpdateDeviceInfo(doorLock, "RemoveDeviceRespon"); |
| | | if (doorLock.removeDeviceResponseData.Result == 0) |
| | | { |
| | | var info = gwa.DeviceList.Find((CommonDevice obj) => obj.DeviceID == doorLock.DeviceID && obj.DeviceAddr == doorLock.DeviceAddr && obj.DeviceEpoint == doorLock.DeviceEpoint); |
| | | if (info != null) |
| | | { |
| | | gwa.DeviceList.Remove(info); |
| | | } |
| | | } |
| | | } |
| | | break; |
| | | var tempDevice = new CommonDevice() { DeviceAddr = jobject.Value<string>("DeviceAddr"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = gwa.getGatewayBaseInfo.gwID };
|
| | | tempDevice.removeDeviceResponseData = Newtonsoft.Json.JsonConvert.DeserializeObject<CommonDevice.RemoveDeviceResponseData>(jobject["Data"].ToString());
|
| | | if (tempDevice.removeDeviceResponseData == null)
|
| | | {
|
| | | return;
|
| | | }
|
| | | else
|
| | | {
|
| | | UpdateDeviceStatus(tempDevice);
|
| | | UpdateDeviceInfo(tempDevice, "RemoveDeviceRespon");
|
| | | if (tempDevice.removeDeviceResponseData.Result == 0)
|
| | | {
|
| | | var infoTempDevice = gwa.DeviceList.Find((CommonDevice obj) => obj.DeviceID == tempDevice.DeviceID && obj.DeviceAddr == tempDevice.DeviceAddr && obj.DeviceEpoint == tempDevice.DeviceEpoint);
|
| | | if (infoTempDevice != null)
|
| | | {
|
| | | gwa.DeviceList.Remove(infoTempDevice);
|
| | | }
|
| | | }
|
| | | } |
| | | } |
| | | } |
| | |
| | | var tempEpoint = jobject.Value<int>("Epoint"); |
| | | var dataId = jobject.Value<int>("Data_ID"); |
| | | |
| | | switch ((DeviceType)(deviceID)) |
| | | { |
| | | case DeviceType.DimmableLight: |
| | | var light = new DimmableLight { DeviceID = deviceID, DeviceAddr = deviceAddr, DeviceEpoint = tempEpoint, DataID = dataId }; |
| | | light.DeviceStatusReport = Newtonsoft.Json.JsonConvert.DeserializeObject<DimmableLight.DeviceStatusReportData>(jobject["Data"].ToString()); |
| | | UpdateDeviceStatus(light); |
| | | UpdateDeviceInfo(light, "DeviceStatusReport"); |
| | | break; |
| | | case DeviceType.OnOffSwitch: |
| | | var lightSwitch = new Panel { DeviceID = deviceID, DeviceAddr = deviceAddr, DeviceEpoint = tempEpoint, DataID = dataId }; |
| | | lightSwitch.DeviceStatusReport = Newtonsoft.Json.JsonConvert.DeserializeObject<Panel.DeviceStatusReportData>(jobject["Data"].ToString()); |
| | | UpdateDeviceStatus(lightSwitch); |
| | | UpdateDeviceInfo(lightSwitch, "DeviceStatusReport"); |
| | | break; |
| | | case DeviceType.OnOffOutput: |
| | | var lighttoggle = new ToggleLight { DeviceID = deviceID, DeviceAddr = deviceAddr, DeviceEpoint = tempEpoint, DataID = dataId }; |
| | | lighttoggle.DeviceStatusReport = Newtonsoft.Json.JsonConvert.DeserializeObject<ToggleLight.DeviceStatusReportData>(jobject["Data"].ToString()); |
| | | UpdateDeviceStatus(lighttoggle); |
| | | UpdateDeviceInfo(lighttoggle, "DeviceStatusReport"); |
| | | break; |
| | | case DeviceType.AirSwitch: |
| | | var airSwitch = new AirSwitch { DeviceID = deviceID, DeviceAddr = deviceAddr, DeviceEpoint = tempEpoint, DataID = dataId }; |
| | | airSwitch.DeviceStatusReport = Newtonsoft.Json.JsonConvert.DeserializeObject<AirSwitch.DeviceStatusReportData>(jobject["Data"].ToString()); |
| | | UpdateDeviceStatus(airSwitch); |
| | | UpdateDeviceInfo(airSwitch, "DeviceStatusReport"); |
| | | break; |
| | | case DeviceType.WindowCoveringDevice: |
| | | var curtain = new Rollershade { DeviceID = deviceID, DeviceAddr = deviceAddr, DeviceEpoint = tempEpoint, DataID = dataId }; |
| | | curtain.DeviceStatusReport = Newtonsoft.Json.JsonConvert.DeserializeObject<Rollershade.DeviceStatusReportData>(jobject["Data"].ToString()); |
| | | UpdateDeviceStatus(curtain); |
| | | UpdateDeviceInfo(curtain, "DeviceStatusReport"); |
| | | break; |
| | | case DeviceType.OtaDevice: |
| | | case DeviceType.OtaPanelDevice: |
| | | var ota = new OTADevice { DeviceID = deviceID, DeviceAddr = deviceAddr, DeviceEpoint = tempEpoint, DataID = dataId }; |
| | | ota.DeviceStatusReport = Newtonsoft.Json.JsonConvert.DeserializeObject<OTADevice.DeviceStatusReportData>(jobject["Data"].ToString()); |
| | | UpdateDeviceStatus(ota); |
| | | UpdateDeviceInfo(ota, "DeviceStatusReport"); |
| | | break; |
| | | case DeviceType.IASZone: |
| | | var ias = new IASZone { DeviceID = deviceID, DeviceAddr = deviceAddr, DeviceEpoint = tempEpoint, DataID = dataId }; |
| | | ias.DeviceStatusReport = Newtonsoft.Json.JsonConvert.DeserializeObject<IASZone.DeviceStatusReportData>(jobject["Data"].ToString()); |
| | | UpdateDeviceStatus(ias); |
| | | UpdateDeviceInfo(ias, "DeviceStatusReport"); |
| | | break; |
| | | case DeviceType.Repeater: |
| | | var repeater = new Repeater { DeviceID = deviceID, DeviceAddr = deviceAddr, DeviceEpoint = tempEpoint, DataID = dataId }; |
| | | repeater.DeviceStatusReport = Newtonsoft.Json.JsonConvert.DeserializeObject<Repeater.DeviceStatusReportData>(jobject["Data"].ToString()); |
| | | UpdateDeviceStatus(repeater); |
| | | UpdateDeviceInfo(repeater, "DeviceStatusReport"); |
| | | break; |
| | | case DeviceType.Thermostat: |
| | | var ac = new AC { DeviceID = deviceID, DeviceAddr = deviceAddr, DeviceEpoint = tempEpoint, DataID = dataId }; |
| | | ac.DeviceStatusReport = Newtonsoft.Json.JsonConvert.DeserializeObject<AC.DeviceStatusReportData>(jobject["Data"].ToString()); |
| | | UpdateDeviceStatus(ac); |
| | | UpdateDeviceInfo(ac, "DeviceStatusReport"); |
| | | break; |
| | | case DeviceType.Transverter: |
| | | var transverter = new Transverter { DeviceID = deviceID, DeviceAddr = deviceAddr, DeviceEpoint = tempEpoint, DataID = dataId }; |
| | | transverter.DeviceStatusReport = Newtonsoft.Json.JsonConvert.DeserializeObject<Transverter.DeviceStatusReportData>(jobject["Data"].ToString()); |
| | | UpdateDeviceStatus(transverter); |
| | | UpdateDeviceInfo(transverter, "DeviceStatusReport"); |
| | | break; |
| | | case DeviceType.DoorLock: |
| | | var doorLock = new DoorLock { DeviceID = deviceID, DeviceAddr = deviceAddr, DeviceEpoint = tempEpoint, DataID = dataId }; |
| | | doorLock.DeviceStatusReport = Newtonsoft.Json.JsonConvert.DeserializeObject<DoorLock.DeviceStatusReportData>(jobject["Data"].ToString()); |
| | | UpdateDeviceStatus(doorLock); |
| | | UpdateDeviceInfo(doorLock, "DeviceStatusReport"); |
| | | break; |
| | | } |
| | | var tempDevice = new CommonDevice { DeviceID = deviceID, DeviceAddr = deviceAddr, DeviceEpoint = tempEpoint, DataID = dataId };
|
| | | tempDevice.DeviceStatusReport = Newtonsoft.Json.JsonConvert.DeserializeObject<CommonDevice.DeviceStatusReportData>(jobject["Data"].ToString());
|
| | | UpdateDeviceStatus(tempDevice);
|
| | | UpdateDeviceInfo(tempDevice, "DeviceStatusReport"); |
| | | } |
| | | #endregion |
| | | #region IAS安防信息上报 |