From 990ba9ce7bfe098efe9ddd5c1053b0fcb1a98c69 Mon Sep 17 00:00:00 2001 From: TianMaiCheng <746290578@qq.com> Date: Tue, 3 Mar 2026 17:18:43 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=B8=80=E4=BA=9BBUG?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修改碳达人问题,增加小数,增加门锁的支持 --- CRICS_V3_1124.suo | Bin 12780544 -> 12780544 bytes CommonEntity/CommonEntity.csproj | 1 + CommonEntity/LMRegisterInfo.cs | 26 +++++ CommonEntity/TCLToken.cs | 35 +++++-- RCUHost/Implement/HostSearchReceiver.cs | 8 +- RCUHost/Implement/HostServer.cs | 105 +++++++++++++++++++- RCUHost/Implement/New_RoomStatusReceiver.cs | 1 - WebSite/Controllers/IoTController.cs | 17 +++- 8 files changed, 171 insertions(+), 22 deletions(-) create mode 100644 CommonEntity/LMRegisterInfo.cs diff --git a/CRICS_V3_1124.suo b/CRICS_V3_1124.suo index df7ac96640e2f2af86737f03da96ec32c01c3595..ceb19bf347b80e8565704a43f0f7a2d6b6d22f7e 100644 GIT binary patch delta 8037 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 + diff --git a/CommonEntity/LMRegisterInfo.cs b/CommonEntity/LMRegisterInfo.cs new file mode 100644 index 0000000..5d0212f --- /dev/null +++ b/CommonEntity/LMRegisterInfo.cs @@ -0,0 +1,26 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace CommonEntity +{ + public class LMRegisterInfo + { + // 基础信息 + public string HotelCode { get; set; } + public string RoomNumber { get; set; } + public string HostNumber { get; set; } + public string MAC { get; set; } + + // 网络信息 + public string EndPoint { get; set; } + public byte[] Original_Data { get; set; } + public string CurrentDateTime { get; set; } + public long UnixTime { get; set; } + //public string ConfigVersion { get; set; } + //public string SubnetMask { get; set; } + //public string Gateway { get; set; } + //public string DNS { get; set; } + } +} diff --git a/CommonEntity/TCLToken.cs b/CommonEntity/TCLToken.cs index d948f95..bc10a32 100644 --- a/CommonEntity/TCLToken.cs +++ b/CommonEntity/TCLToken.cs @@ -21,6 +21,17 @@ namespace CommonEntity public long deadline { get; set; } public string refresh_token { get; set; } } + public class TCLBell + { + public string cuid { get; set; } + public string sceneCode { get; set; } + public string botId { get; set; } + public PPP @params { get; set; } + } + public class PPP + { + public string url { get; set; } + } public class TCLCommon { @@ -59,7 +70,7 @@ namespace CommonEntity /// /// /// - public static void SendData(string hotelcode, string roomnum, string CUID, string skillid, string sceneCode, int count = 0,Dictionary extra_params=null) + public static void SendData(string hotelcode, string roomnum, string CUID, string skillid, string sceneCode, int count = 0, Dictionary extra_params = null) { try { @@ -77,7 +88,7 @@ namespace CommonEntity dic1.Add("cuid", roomnum); dic1.Add("sceneCode", sceneCode); dic1.Add("botId", skillid); - dic1.Add("params",Newtonsoft.Json.JsonConvert.SerializeObject(extra_params)); + dic1.Add("params", Newtonsoft.Json.JsonConvert.SerializeObject(extra_params)); logger.Error("TCL send data"); @@ -108,12 +119,22 @@ namespace CommonEntity request1.AddHeader("Authorization", "Bearer " + T.data.access_token); - Dictionary dic = new Dictionary(); - dic.Add("cuid", CUID); - dic.Add("sceneCode", sceneCode); - dic.Add("botId", skillid); + //Dictionary dic = new Dictionary(); + //dic.Add("cuid", CUID); + //dic.Add("sceneCode", sceneCode); + //dic.Add("botId", skillid); + //dic.Add("params", Newtonsoft.Json.JsonConvert.SerializeObject(extra_params)); - request1.AddJsonBody(dic); + TCLBell tsa = new TCLBell(); + tsa.cuid = CUID; + tsa.sceneCode = sceneCode; + tsa.botId = skillid; + if (extra_params != null && extra_params.Count > 0) + { + tsa.@params = new PPP() { url = extra_params["url"] }; + } + + request1.AddJsonBody(tsa); var QQQ = client1.Execute(request1); string ddd = QQQ.Content; diff --git a/RCUHost/Implement/HostSearchReceiver.cs b/RCUHost/Implement/HostSearchReceiver.cs index c1d64d4..d5e7d7c 100644 --- a/RCUHost/Implement/HostSearchReceiver.cs +++ b/RCUHost/Implement/HostSearchReceiver.cs @@ -85,10 +85,10 @@ namespace RCUHost.Implement int startIndex = StructConverter.SizeOf(context.SystemHeader); SearchHostPacketReply? reply = DecodeSearchHostPacketReply(context.Data, startIndex); - SearchHostPacketReplyV2? reply2 = null; + SearchHostPacketReplyV2? C_Xilie_zhuji = null; if (context.Data.Length > 100)//V2版本新补充的内容 { - reply2 = DecodeSearchHostPacketReplyV2(context.Data, 58); + C_Xilie_zhuji = DecodeSearchHostPacketReplyV2(context.Data, 58); } if (reply.HasValue) { @@ -103,7 +103,7 @@ namespace RCUHost.Implement Host exitEntity = null; StringBuilder sbSQL = new StringBuilder(); sbSQL.Append("UPDATE tb_Hosts SET "); - if (reply2.HasValue)//C系列主机处理:只能靠后台手工添加 + if (C_Xilie_zhuji.HasValue)//C系列主机处理:只能靠后台手工添加 { #region C系列主要 if (string.IsNullOrEmpty(context.SystemHeader.Value.HostNumber.ToString())) @@ -140,7 +140,7 @@ namespace RCUHost.Implement MemoryCacheHelper.Set(KKK1, EEE); MemoryCacheHelper.SlideSet(KKK2, EEE); } - exitEntity.DNS = string.Join(".", reply2.Value.DNS); + exitEntity.DNS = string.Join(".", C_Xilie_zhuji.Value.DNS); sbSQL.Append("DNS='" + exitEntity.DNS + "'"); if (!version.ToUpper().StartsWith("C")) { diff --git a/RCUHost/Implement/HostServer.cs b/RCUHost/Implement/HostServer.cs index 667ac38..79e0239 100644 --- a/RCUHost/Implement/HostServer.cs +++ b/RCUHost/Implement/HostServer.cs @@ -1231,6 +1231,15 @@ namespace RCUHost.Implement }, TS); } + public static SearchHostPacketReply? DecodeSearchHostPacketReply(byte[] data, int startIndex) + { + return StructConverter.BytesToStruct(data, startIndex, typeof(SearchHostPacketReply)) as SearchHostPacketReply?; + } + + public static SearchHostPacketReplyV2? DecodeSearchHostPacketReplyV2(byte[] data, int startIndex) + { + return StructConverter.BytesToStruct(data, startIndex, typeof(SearchHostPacketReplyV2)) as SearchHostPacketReplyV2?; + } //private static readonly RecyclableMemoryStreamManager manager = new RecyclableMemoryStreamManager(); /// /// 处理数据 @@ -1335,6 +1344,45 @@ namespace RCUHost.Implement } #endregion + ///注册指令 也要推送 + if (cmdType == 0x01) + { + string RoomNUMBER = CSRedisCacheHelper.HMGet(5, CacheKey.RoomNumber_HostNumber, HostNNN)[0]; + if (string.IsNullOrEmpty(RoomNUMBER)) + { + return; + } + int startIndex = StructConverter.SizeOf(context111.SystemHeader); + SearchHostPacketReply? reply = DecodeSearchHostPacketReply(context111.Data, startIndex); + //SearchHostPacketReplyV2? C_Xilie_zhuji = null; + //if (context111.Data.Length > 100)//V2版本新补充的内容 + //{ + // C_Xilie_zhuji = DecodeSearchHostPacketReplyV2(context111.Data, 58); + //} + string MAC = ""; + if (reply.HasValue) + { + MAC = BitConverter.ToString(reply.Value.MAC); + //string version = reply.Value.Version; + //var ConfigVersion = String.Join(".", reply.Value.ConfigVersion); + //var SubnetMask = String.Join(".", reply.Value.SubnetMask); + //var Gateway = String.Join(".", reply.Value.Gateway); + } + + LMRegisterInfo lma = new LMRegisterInfo(); + lma.HotelCode = CODE; + lma.RoomNumber = RoomNUMBER; + lma.HostNumber = HostNNN; + lma.MAC = MAC; + lma.Original_Data = context111.Data; + + string ti = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); + lma.CurrentDateTime = ti; + lma.UnixTime = Tools.GetUnixTime(); + + string sss = Newtonsoft.Json.JsonConvert.SerializeObject(lma); + CSRedisCacheHelper.Publish("redis-0X01", sss); + } try { @@ -2286,7 +2334,7 @@ namespace RCUHost.Implement var CarbonVIP = reader.ReadByte(); int Bright_Va = -1; - if (Version == 0x03) + if (Version == 0x03 || Version == 0x04) { var LiangDu = reader.ReadBytes(4); Bright_Va = (int)LiangDu[0]; @@ -2298,6 +2346,40 @@ namespace RCUHost.Implement { CarbonVIP = 0x00; } + + ///碳达人状态更新 + if (!string.IsNullOrEmpty(HostID)) + { + string KKey = CacheKey.HostModalStatus_Prefix + "_" + HostID + "_" + "054000001"; + //var OldHostModal = CSRedisCacheHelper.Get_Partition(KKey); + //OldHostModal.Status = CarbonVIP; + + //CSRedisCacheHelper.Set_Partition(KKey,OldHostModal); + + + StringBuilder sb = new StringBuilder(); + sb.Append(CacheKey.CarbonVIP_Prefix); + sb.Append("_"); + sb.Append(HostID.ToString()); + string Key = sb.ToString(); + + string current_status_new = ""; + if (CarbonVIP == 0x01) + { + current_status_new = "open"; + } + else if (CarbonVIP == 0x02) + { + current_status_new = "close"; + } + else + { + current_status_new = "unknow"; + } + + CSRedisCacheHelper.Set(Key, current_status_new); + } + var DeviceCount = reader.ReadByte(); int DeviceCount_I = (int)DeviceCount; @@ -2307,7 +2389,11 @@ namespace RCUHost.Implement List kongtiaoList = new List(); for (int i = 0; i < DeviceCount_I; i++) { - var QA = reader.ReadBytes(4); + byte[] QA = reader.ReadBytes(4); + //if (Version == 0x04) + //{ + // QA = reader.ReadBytes(5); + //} //说明是能耗设备 #region 能耗 if (QA[0] == 0x39) @@ -2413,6 +2499,14 @@ namespace RCUHost.Implement ///ushort StatusReceiver = reader.ReadUInt16(); ushort StatusReceiver = BitConverter.ToUInt16(reader.ReadBytes(2).Reverse().ToArray(), 0); + int XiaoShu_BuFen = 0; + float xiaoshu_l = 0.0f; + if (Version == 0x04) + { + var XiaoShu = reader.ReadByte(); + XiaoShu_BuFen = XiaoShu; + xiaoshu_l = XiaoShu_BuFen / 10; + } if (true) { @@ -2436,7 +2530,7 @@ namespace RCUHost.Implement kkk.address = address; kkk.model = mode; kkk.speed = fanspeed; - kkk.now_temp = currentTemp; + kkk.now_temp = Convert.ToInt32((currentTemp + xiaoshu_l) * 10); kkk.set_temp = temperature; kkk.solenoid_valve = valve; kongtiaoList.Add(kkk); @@ -2556,8 +2650,9 @@ namespace RCUHost.Implement } catch (Exception ex) { - logger.Error("定是上报出错:" + ex.Message); - logger.Error("定是上报出错:" + ex.StackTrace); + logger.Error("定时上报出错:" + Tools.ByteToString(context111.Data)); + logger.Error("定时上报出错:" + ex.Message); + logger.Error("定时上报出错:" + ex.StackTrace); } } #endregion diff --git a/RCUHost/Implement/New_RoomStatusReceiver.cs b/RCUHost/Implement/New_RoomStatusReceiver.cs index 4650c4d..6821c8e 100644 --- a/RCUHost/Implement/New_RoomStatusReceiver.cs +++ b/RCUHost/Implement/New_RoomStatusReceiver.cs @@ -583,7 +583,6 @@ namespace RCUHost.Implement if (!string.IsNullOrEmpty(ebell_rtsp)) { ddd.Add("url",ebell_rtsp); - ddd.Add("display_duration",du.ToString()); } TCLCommon.SendData(hotelcode, roomnum, TCLcuid, skillid, "DOORBELL",0,ddd); diff --git a/WebSite/Controllers/IoTController.cs b/WebSite/Controllers/IoTController.cs index a11ae87..f826636 100644 --- a/WebSite/Controllers/IoTController.cs +++ b/WebSite/Controllers/IoTController.cs @@ -475,15 +475,22 @@ namespace WebSite.Controllers actions.Add("setVolumeMute"); break; default: - if ((hostModal.Modal.Name != null && hostModal.Modal.Name.IndexOf("灯") > -1) || - (hostModal.Modal.EnglishName != null && hostModal.Modal.EnglishName.ToLower().IndexOf("light") > -1) || - (hostModal.Modal.TWName != null && hostModal.Modal.TWName.IndexOf("燈") > -1)) + if (hostModal.Modal.ModalAddress.Equals("004000010")) { - applianceTypes.Add("LIGHT"); + applianceTypes.Add("DOOR_LOCK"); } else { - applianceTypes.Add("SWITCH"); + if ((hostModal.Modal.Name != null && hostModal.Modal.Name.IndexOf("灯") > -1) || + (hostModal.Modal.EnglishName != null && hostModal.Modal.EnglishName.ToLower().IndexOf("light") > -1) || + (hostModal.Modal.TWName != null && hostModal.Modal.TWName.IndexOf("燈") > -1)) + { + applianceTypes.Add("LIGHT"); + } + else + { + applianceTypes.Add("SWITCH"); + } } actions.Add("turnOn"); actions.Add("turnOff");