增加微信锁电量功能

This commit is contained in:
2026-03-23 08:48:22 +08:00
parent e46b19016b
commit 1840794f40
10 changed files with 131 additions and 93 deletions

Binary file not shown.

View File

@@ -132,6 +132,11 @@ namespace CommonEntity
/// 济南同派 特殊处理
/// </summary>
public static string JiNan_TongPai_Spec = "jntp_spec";
/// <summary>
/// 微信 锁电量
/// </summary>
public static string DianLiang = "DL";
}
public class ChangLiangValue
{

View File

@@ -270,6 +270,11 @@ namespace CommonEntity
/// </summary>
public int IdentityInfo { get; set; }
public int Bright_G { get; set; }
/// <summary>
/// 微信锁电量
/// </summary>
public int WeiXinSuo_DianLiang { get; set; }
}
/// <summary>

View File

@@ -25,6 +25,11 @@ namespace ConsoleApplication666
static void Main(string[] args)
{
ushort abb=0x6440;
var gs1= BitConverter.GetBytes(abb);
var f1= gs1[0];
var f2= gs1[1];
bool NewResult = true || false;
BigInteger hugeNumber = BigInteger.Parse("1234567890123456789012345678901234567890");
var H= hugeNumber.ToByteArray();

View File

@@ -604,31 +604,6 @@ namespace RCUHost.Implement
MemoryCacheHelper.Set(ShiJianLanJie, 1, DateTimeOffset.Now.AddSeconds(50));
}
if (VVV.CmdType == 0x01)
{
//后面出问题了,这个功能先不用
//升级之后,会上报注册指令,不能被跳过
//string Key = "Upgrade_UpdateSQL_" + hostnumber1;
//object OOO1 = MemoryCacheHelper.Get(Key);
//if (OOO1 == null)
//{
//string RegisterKey2 = "SearchHostFilter";
//上报注册指令太快会被拦截
//string KKK = "RegisterKey_" + hostnumber1;
//object OOO = MemoryCacheHelper.Get(KKK);
//if (OOO != null)
//{
// RCUHost.RCUHostCommon.tools.LanJieData(RegisterKey2, hotelCode);
// return;
//}
//}
}
string LanJieKey = "Intercept";
ConcurrentBag<string> RoomNumberList = null;
bool isexists = DataTongJi.BlockLowerMachineList.TryGetValue(hotelCode, out RoomNumberList);
@@ -652,19 +627,11 @@ namespace RCUHost.Implement
//如果不存在就处理
else
{
GaiXie g = new GaiXie();
g.Data = receiveBuffer111;
g.IPEndPoint = remoteEP111.ToString();
var data = Newtonsoft.Json.JsonConvert.SerializeObject(g);
CSRedisCacheHelper.StreamAdd(1, "All_UDPPackage_Data", data);
//ProcessData(context, hotelCode);
//var ts1 = new Tuple<ReceiverContext, string>(context, hotelCode);
//Task.Factory.StartNew((actor_state) =>
// {
// var gg = actor_state as Tuple<ReceiverContext, string>;
// ProcessData(gg.Item1, gg.Item2);
// }, ts1);
}
}
else
@@ -681,19 +648,12 @@ namespace RCUHost.Implement
}
else
{
//ProcessData(context, hotelCode);
GaiXie g = new GaiXie();
g.Data = receiveBuffer111;
g.IPEndPoint = remoteEP111.ToString();
var data = Newtonsoft.Json.JsonConvert.SerializeObject(g);
CSRedisCacheHelper.StreamAdd(1, "All_UDPPackage_Data", data);
var ts1 = new Tuple<ReceiverContext, string>(context, hotelCode);
//Task.Factory.StartNew((actor_state) =>
// {
// var gg = actor_state as Tuple<ReceiverContext, string>;
// ProcessData(gg.Item1, gg.Item2);
// }, ts1);
}
}
#endregion
@@ -1325,7 +1285,7 @@ namespace RCUHost.Implement
//var TTT111= CSRedisCacheHelper.Get_Partition<string>(HostNNN,7);
//if ((string.IsNullOrEmpty(EEE) && ssspan.TotalMinutes > 5)||string.IsNullOrEmpty(TTT111))
//if ((string.IsNullOrEmpty(EEE) && ssspan.TotalMinutes > 5))
if (string.IsNullOrEmpty(EEE))
if (string.IsNullOrEmpty(EEE))
{
CSRedisCacheHelper.Publish("redis-on_off_line", n);
//CSRedisCacheHelper.Set_PartitionWithForever(HostNNN,"1",7);
@@ -1376,41 +1336,41 @@ namespace RCUHost.Implement
///注册指令 也要推送
if (cmdType == 0x01)
{
string RoomNUMBER = CSRedisCacheHelper.HMGet<string>(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版本新补充的内容
//string RoomNUMBER = CSRedisCacheHelper.HMGet<string>(5, CacheKey.RoomNumber_HostNumber, HostNNN)[0];
//if (string.IsNullOrEmpty(RoomNUMBER))
//{
// C_Xilie_zhuji = DecodeSearchHostPacketReplyV2(context111.Data, 58);
// 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);
//}
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;
//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 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);
//string sss = Newtonsoft.Json.JsonConvert.SerializeObject(lma);
//CSRedisCacheHelper.Publish("redis-0X01", sss);
}
try
@@ -2389,8 +2349,8 @@ namespace RCUHost.Implement
///碳达人状态更新
if (!string.IsNullOrEmpty(HostID))
{
CarbonVIPReport(HostID, CarbonVIP,"054001000");
CarbonVIPReport(HostID, CarbonVIP,"054000001");
CarbonVIPReport(HostID, CarbonVIP, "054001000");
CarbonVIPReport(HostID, CarbonVIP, "054000001");
}
var DeviceCount = reader.ReadByte();
@@ -2541,7 +2501,7 @@ namespace RCUHost.Implement
{
if (fanspeed == 2 || fanspeed == 3)
{
string KKKSpec = HostNNN + "_" + address+"_"+HostID;
string KKKSpec = HostNNN + "_" + address + "_" + HostID;
if (status == 1)
{
string ReportTime111 = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
@@ -2573,7 +2533,7 @@ namespace RCUHost.Implement
string KKey = CacheKey.HostModalStatus_Prefix + "_" + HostID + "_" + address;
var HHostModalData = CSRedisCacheHelper.Get_Partition<HostModal_Cache>(KKey);
if (HHostModalData==null)
if (HHostModalData == null)
{
HHostModalData = new HostModal_Cache();
HHostModalData.HostID = int.Parse(HostID);
@@ -2582,7 +2542,7 @@ namespace RCUHost.Implement
HHostModalData.Modal = new RoomTypeModalCache()
{
ModalAddress = address
};
};
}
if (HHostModalData != null)
{
@@ -2627,6 +2587,17 @@ namespace RCUHost.Implement
}
#region
short usa = 0;
string DLKey = CacheKey.DianLiang + "_" + HostNNN;
string dianliang = CSRedisCacheHelper.Get_Partition<string>(DLKey, 5);
if (!string.IsNullOrEmpty(dianliang))
{
short.TryParse(dianliang, out usa);
}
else
{
usa = -1;
}
long tf0 = Tools.GetUnixTime();
NengHao4BaoJing ns2 = new NengHao4BaoJing()
{
@@ -2652,7 +2623,8 @@ namespace RCUHost.Implement
//CardID = IdentityInfo,
CardEvent = NOCardInfo,
PMS_Status = PMS_CurrentStatus,
Bright_G = Bright_Va
Bright_G = Bright_Va,
WeiXinSuo_DianLiang=usa
};
string mns = Newtonsoft.Json.JsonConvert.SerializeObject(ns2);
@@ -2743,9 +2715,9 @@ namespace RCUHost.Implement
/// <param name="HostID"></param>
/// <param name="CarbonVIP"></param>
/// <param name="Address"></param>
private static void CarbonVIPReport(string HostID, byte CarbonVIP,string Address)
private static void CarbonVIPReport(string HostID, byte CarbonVIP, string Address)
{
string KKey = CacheKey.HostModalStatus_Prefix + "_" + HostID + "_" +Address;
string KKey = CacheKey.HostModalStatus_Prefix + "_" + HostID + "_" + Address;
var OldHostModal = CSRedisCacheHelper.Get_Partition<HostModal_Cache>(KKey);
if (OldHostModal != null)
{

View File

@@ -123,7 +123,7 @@ namespace RCUHost.Implement
if (status.Devices != null && status.Devices.Count > 0)
{
//来一个数据,把所有的地址拼接起来
ProcessModal_NEW_NEW(host, status.Devices, isTriggerWelcomeMsg, context.MessageID, context.IsMonitor,context.RemoteEndPoint.ToString());//更新灯光及其他回路状态
ProcessModal_NEW_NEW(host, status.Devices, isTriggerWelcomeMsg, context.MessageID, context.IsMonitor, context.RemoteEndPoint.ToString());//更新灯光及其他回路状态
}
if (status.Faults != null && status.Faults.Count > 0)
@@ -183,7 +183,7 @@ namespace RCUHost.Implement
public static string Missionsys_Address = ConfigurationManager.AppSettings["missionsys_address"];
public static string MQTTInfo_report_url = ConfigurationManager.AppSettings["debug_log_report_url"].ToString();
private void ProcessModal_NEW_NEW(Host host, ConcurrentDictionary<string, Device> devices, bool IsTriggerWelcomeMsg, string ContextMessageId, bool ismonitor,string EEndPoint)
private void ProcessModal_NEW_NEW(Host host, ConcurrentDictionary<string, Device> devices, bool IsTriggerWelcomeMsg, string ContextMessageId, bool ismonitor, string EEndPoint)
{
string UUID = "9dc6a0ee-dcf1-4385-b05f-09cb463838cd";
UUID = host.FCS_locationUUID;
@@ -1146,27 +1146,49 @@ namespace RCUHost.Implement
//MemoryModal.Mode = mode;
break;
case DeviceType.WXLock://微信锁
status = device.Value.StatusReceiver & 0x00FF;
if (status == 1)//设备开
//status = device.Value.StatusReceiver & 0x00FF;
status = device.Value.StatusReceiver;
var gs1 = BitConverter.GetBytes(status);
var f1 = gs1[0];
var f2 = gs1[1];
if (f1 == 1)//设备开
{
if (hostModal.Status != 1)//设备有变化时才去更改状态
{
hostModal.Status = 1;
//sbSQL.Append("Status=1,");
//MemoryModal.Status = 1;
}
}
else//设备关
else if (f1 == 2)//设备关
{
if (hostModal.Status != 2)//设备有变化时才去更改状态
{
hostModal.Status = 2;
//sbSQL.Append("Status=2,");
//MemoryModal.Status = 2;
}
}
//2026-03-29 阿文说 电量上报动作和 开关动作分两包数据上报
else if (f1 == 0x40)
{
//杨格锁:
//P4:
//Bit7:
//门锁动作上报
//Bit6:
//门锁电量上报
//P5:
//门锁动作上报:
//0xE1防撬报警
//0xE2假锁
//0xE3反锁
//0xE4门磁
//0xE5钥匙开锁
//0xE6门锁常开
//门锁电量报警:
//电量0-100
ushort dianliang = (ushort)f2;
string DLKey = CacheKey.DianLiang + "_" + HOSTNUMBER;
CSRedisCacheHelper.Set_PartitionWithForever(DLKey,dianliang.ToString(),5);
}
//更新主机主表
if (hostModal.Modal.Sort == 1)//.ModalAddress == "020001000")
{

View File

@@ -7460,7 +7460,7 @@ namespace WebSite.Controllers
var name = item.applianceName;
var area = item.area;
List<HostModal> q1 = new List<HostModal>();
if (name.Equals("灯"))
if (name.Equals("灯")||name.Equals("所有灯"))
{
q1 = hostModals.Where(A => A.Modal.Name.Contains("灯")).ToList();
}

View File

@@ -362,6 +362,22 @@ namespace WebSite.Controllers
var roomnum = room.RoomNumber;
var roomModel = new RoomModel();
#region
string DLKey = CacheKey.DianLiang + "_" + room.HostNumber;
string dianliang = CSRedisCacheHelper.Get_Partition<string>(DLKey, 5);
if (!string.IsNullOrEmpty(dianliang))
{
ushort usa = 0;
ushort.TryParse(dianliang, out usa);
roomModel.WeiXinSuo_DianLiang = usa.ToString();
}
else
{
roomModel.WeiXinSuo_DianLiang = "";
}
#endregion
#region
StringBuilder sb = new StringBuilder();
sb.Append(CacheKey.CarbonVIP_Prefix);

View File

@@ -114,6 +114,11 @@ namespace WebSite.Models
/// </summary>
public string CarbonVIP { get; set; }
/// <summary>
/// 微信锁电量
/// </summary>
public string WeiXinSuo_DianLiang { get; set; }
/// <summary>
/// 功率
/// </summary>

View File

@@ -231,7 +231,8 @@ function loadRooms(opts, callback) {
strHtml += "<dl><dt>" + r.Data[i].FloorRooms[j].RoomNumber;
var CarbonVIP_Status = r.Data[i].FloorRooms[j].CarbonVIP;
console.log("VIP:"+CarbonVIP_Status);
var WeiXinSuo_DianLiang = r.Data[i].FloorRooms[j].WeiXinSuo_DianLiang;
console.log("VIP:" + WeiXinSuo_DianLiang);
if (CarbonVIP_Status == "open")
{
strHtml += "<img src='../../Images/ECO/eco_g.png' width='16' height='16' style='margin-right:5px;'/>" + r.Data[i].FloorRooms[j].RoomNumber + "</dt>";
@@ -261,7 +262,14 @@ function loadRooms(opts, callback) {
{
//strHtml += "<dd>" + r.Data[i].FloorRooms[j].Power + "</dd>";
strHtml += "<dd>" + r.Data[i].FloorRooms[j].RoomStatus + "&nbsp;" + r.Data[i].FloorRooms[j].Power + "</dd>";
strHtml += "<dd>" + lang.Identity + ":" + r.Data[i].FloorRooms[j].Identity + "&nbsp" + r.Data[i].FloorRooms[j].PowerSupplyName + "</dd>";
if (WeiXinSuo_DianLiang != "")
{
strHtml += "<dd>" + lang.Identity + ":" + r.Data[i].FloorRooms[j].Identity + "&nbsp;" + r.Data[i].FloorRooms[j].PowerSupplyName + "&nbsp;E:" + r.Data[i].FloorRooms[j].WeiXinSuo_DianLiang + "</dd>";
}
else
{
strHtml += "<dd>" + lang.Identity + ":" + r.Data[i].FloorRooms[j].Identity + "&nbsp;" + r.Data[i].FloorRooms[j].PowerSupplyName + "</dd>";
}
strHtml += "<dd>" + r.Data[i].FloorRooms[j].AirStatusName + "&nbsp;" + strRoomTemp + r.Data[i].FloorRooms[j].RoomTemp + "℃</font>&nbsp;" + r.Data[i].FloorRooms[j].SettingTemp + "℃" + "</dd>";
strHtml += "<dd>" + r.Data[i].FloorRooms[j].ValveName + "&nbsp;" + airMode(r.Data[i].FloorRooms[j].Mode) + "&nbsp;" + fanSpeed(r.Data[i].FloorRooms[j].FanSpeed) + "</dd>";
if (r.Data[i].FloorRooms[j].Peripheral != "")