/// <summary> /// 1.请求主机房间列表 /// user:DAJCHSF_Server type:other msg:DAJCHSF_2047DABEF936;8;835;admin$/r$ /// 2.主机返回房间列表 /// user:DAJCHSF_2047DABEF936 type:other msg:DAJCHSF_2047DABEF936;835;admin;Zip;H4sIAAAAAAAAAIuuViotTi3KTFGyUlLSUSouSSxJBTJLikpTgdzkjMy8xLzEXJDQs46Jz2e1PF23DSiemZyfB9GQmZuYngrTXZBfDGYaQNgFiUWJSlbVSimpZSX5JYk5QBlDS5AliWmpxaklJZl56TCrasEaSioLUqHa40EGGego+aWWB6Um5xcBeSCFtTrY3Yvm1qfrFj3ta8Xh0KL8/FxDJNcaGhgbmpoYG1iam5iiOJzajupd/nTdEtIcBcRmBjR1VNe8p61rSHaXkampBW0Da13nyxmbSHOUsYmBkTl5jooFAHQFerEIAwAA$/r$ /// </summary> /// <param name="msg">user:DAJCHSF_Server type:other msg:DAJCHSF_2047DABEF936;8;835;admin$/r$</param> public static string Host835(string msg) { try { if (msg.Split(';').Length >= 3) { string appUser = msg.Split(';')[0]; if (appUser.Contains("_")) { string account = appUser.Split('_')[0];//DAJCHSF,一个家庭可能有多个用户,mac不同,只取账户 List <host_room> roomList = null; //获取当前房间的设备列表,先找缓存 string msgResult = service.HashGet("Room", account); if (string.IsNullOrEmpty(msgResult)) { using (HsfDBContext hsfDBContext = new HsfDBContext()) { roomList = hsfDBContext.host_room.Where(t => t.Account == account && t.DeleteMark == 0).ToList(); msgResult = $";835;admin;Zip;{EncryptionHelp.Encryption(JsonConvert.SerializeObject(roomList), true)}$/r$"; //不能缓存用户信息 //缓存当前账户房间列表返回字符串 service.HashSet("Room", account, msgResult); } } msgResult = appUser + msgResult;//带上用户信息 log.Debug($"835 OK,返回房间列表成功!返回信息:{msgResult}"); return(msgResult); } else { log.Debug($"835 Fail,命令不符合规范!"); return(null); } } else { log.Debug($"835 Fail,命令不符合规范!"); return(null); } } catch (Exception) { throw; } }
public IActionResult Index() { zCustomUser uu = new zCustomUser() { Gender = 0, Name = "fd" }; _redisHashService.HashSet("mm", "pp0", uu); _redisHashService.HashSet("mm", "pp1", new zCustomUser() { Gender = 1, Name = "官方公告" }); _redisStringService.StringSet("aa", uu); string val = _redisStringService.StringGet("aa"); zCustomUser getuu = _redisHashService.HashGet<zCustomUser>("mm", "pp"); Log4helper<HomeController>.Info($"进入了{nameof(HomeController)} 的 {nameof(Index)}"); Log4helper<HomeController>.Errror(new System.Exception("测试Error的写入信息")); Log4helper<HomeController>.Debug($"测试Debug写入信息"); // services.Configure<InterExample>(configuration.GetSection("InterExample")); //配置为 InterExample 注入对象成功,可以获取对象信息 // InterExample interExample = (InterExample)HttpContext.RequestServices.GetService(typeof(InterExample)); _logger.LogError("控制台显示"); return View(); }
//启动监听 public static async Task LoginStartListenAsync(string ip, string prot, string user, string pwd) { Console.WriteLine($"使用线程ID:{Thread.CurrentThread.ManagedThreadId}"); loghelper.loginfo.Info($"使用线程ID:{Thread.CurrentThread.ManagedThreadId}"); NETClient.Init(disConnectCallBack, IntPtr.Zero, null); //初始化设置断线回掉 NETClient.SetAutoReconnect(haveReConnectCallBack, IntPtr.Zero); //设定自动重连 lLoginID = NETClient.Login(ip, Convert.ToUInt16(prot), user, pwd, EM_LOGIN_SPAC_CAP_TYPE.TCP, IntPtr.Zero, ref device); DaHuaSDKHelper daHuaSDK = new DaHuaSDKHelper(); var alarmdata = httpHelper.GetAlarmsByHostIP(ip); var alarminfo = daHuaSDK.GetAlarmStatus(lLoginID); var onlineinfo = daHuaSDK.GetConnectionStatus(lLoginID); var defenceinfo = daHuaSDK.GetDefenceArmMode(lLoginID); lock (locker) { foreach (var item in alarmdata) { AppAlarmStatus appAlarmStatus = new AppAlarmStatus(); var der = alarminfo.Where(u => u.Key == item.Channel_ID - 1).FirstOrDefault().Value; if (!string.IsNullOrEmpty(der)) //报警数据导入 { appAlarmStatus.IsAlarm = 1; } else { appAlarmStatus.IsAlarm = 0; } // if (onlineinfo.Where(u => u.Key == item.Channel_ID - 1).FirstOrDefault().Key > 0) //异常数据 { appAlarmStatus.IsAnomaly = int.Parse(onlineinfo.Where(u => u.Key == item.Channel_ID - 1).FirstOrDefault().Value); } var defn = defenceinfo.Where(u => u.Key == item.Channel_ID - 1).FirstOrDefault().Value; if (!string.IsNullOrEmpty(defn)) { if (defn == EM_DEFENCEMODE.ARMING.ToString()) { appAlarmStatus.IsDefence = 1; //布防 } else if (defn == EM_DEFENCEMODE.DISARMING.ToString()) { appAlarmStatus.IsDefence = 2; //撤防 } else { appAlarmStatus.IsDefence = -1; //未知 } } //布防数据 lock (locker) //访问http加锁 { // var defg = httpHelper.GetAlarmManageStates(item.Alarm_ID).FirstOrDefault(); //if (defg != null) //{ // if (defg.TreatmentTimeState != null)//处理状态 // { // appAlarmStatus.TreatmentState = 0; // } // else // { appAlarmStatus.TreatmentState = 1; // } // } appAlarmStatus.Channel_ID = item.Channel_ID; appAlarmStatus.IsOpenDoor = item.IsOpenOrClosed;//开岗数据 appAlarmStatus.LastModificationTime = DateTime.Now.ToString(); appAlarmStatus.Alarm_ID = item.Alarm_ID; appAlarmStatus.AlarmHostIP = ip; } service.HashSet <AppAlarmStatus>("AlarmStatus_" + item.Alarm_ID, "data", appAlarmStatus);//把数据存到Redis Console.WriteLine($"ip:{ip},通道:{item.Channel_ID},初始化成功!,时间:{appAlarmStatus.LastModificationTime}"); loghelper.WriteLog($"ip:{ip},通道:{item.Channel_ID},初始化成功"); } } NETClient.SetDVRMessCallBack(messCallBackEx, IntPtr.Zero);//设置报警回掉 if (IntPtr.Zero != lLoginID) { bool result = NETClient.StartListen(lLoginID); if (result) { Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine($"IP:{ip}开启监听模式"); } } else { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine($"IP:{ip}登陆失败"); } }
private void MyServer_NewRequestReceived(HansAppSession session, HansRequestInfo requestInfo) { Task.Run(() => { string msg = requestInfo.Body.StartMark + requestInfo.Body.BodyString + requestInfo.Body.EndMark;//encoding.GetString(requestInfo.Body.BodyBuffer); string[] sArray = Regex.Split(msg, "}{", RegexOptions.IgnoreCase); for (int i = 0; i < sArray.Length; i++) { if (!sArray[i].StartsWith("{")) { sArray[i] = "{" + sArray[i]; } int _left = Regex.Matches(sArray[i], "{").Count; int _right = Regex.Matches(sArray[i], "}").Count; int cha = _left - _right; for (int b = 0; b < cha; b++) { sArray[i] = sArray[i] + "}"; } var res = DynamicJson.Parse(sArray[i]); if (res.IsDefined("code")) { double code = res.code; if (code == 101) { TimeSpan ts = DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0); session.Send("{\"code\":1001,\"res\":0,\"timestamp\": " + Convert.ToInt64(ts.TotalSeconds) + "}"); break; } if (code == 010) { session.Send("alive"); break; } else { log.Debug($"收到消息: {msg}"); switch (code) { case 104: //{"code":104,"control":2,"id":"010000124b0014c6aaee","ol":true,"ep":1,"pid":260,"did":0,"st":{"on":false}} if (res.IsDefined("control")) { if (res.control == 2) { //缓存设备状态 if (res.ol == true) //在线 { if (res.IsDefined("st")) //可能有不存在on的 { var st = res.st; if (st.IsDefined("on")) { service.HashSet <string>("DeviceStatus", res.id + "_" + res.ep, st.on.ToString()); //mac_port, } else { //在线没有on,但是没有开关状态的情况,默认关闭 service.HashSet <string>("DeviceStatus", res.id + "_" + res.ep, "False"); //mac_port, } } else { //在线没有st,但是没有开关状态的情况,默认关闭 service.HashSet <string>("DeviceStatus", res.id + "_" + res.ep, "False"); //mac_port, } } else { service.HashSet <string>("DeviceStatus", res.id + "_" + res.ep, ""); //离线为"" } } } break; case 1002: if (res.IsDefined("zigbee")) { Gateway_SessionDic[res.zigbee].Send(sArray[i]); } else { log.Debug($"请求网关的session不存在 {res.zigbee}: {msg}"); } break; case 5001: if (res.IsDefined("zigbee")) { if (Gateway_SessionDic.ContainsKey(res.zigbee)) { Gateway_SessionDic[res.zigbee].Send(sArray[i]); } else { log.Debug($"请求网关的session不存在 {res.zigbee}: {msg}"); } } break; case 501: foreach (var item in res.device) { //if (item.ol != false && item.st.on != null) //{ // service.HashSet<string>("DeviceStatus", item.id + "_" + item.ep, item.st.on.ToString());//mac_port, //} //else //{ // service.HashSet<string>("DeviceStatus", item.id + "_" + item.ep, "");//离线为"" //} if (item.ol == true) //在线 { if (item.IsDefined("st")) //可能有不存在on的 { var st = item.st; if (st.IsDefined("on")) { service.HashSet <string>("DeviceStatus", item.id + "_" + item.ep, st.on.ToString()); //mac_port, } else { //在线没有on,但是没有开关状态的情况,默认关闭 service.HashSet <string>("DeviceStatus", item.id + "_" + item.ep, "False"); //mac_port, } } else { //在线没有st service.HashSet <string>("DeviceStatus", item.id + "_" + item.ep, "False"); //mac_port, } } else { service.HashSet <string>("DeviceStatus", item.id + "_" + item.ep, ""); //离线为"" } } break; default: break; } } } else if (res.IsDefined("mac") && res.IsDefined("id")) { //缓存当前socket连接,初次连接心跳之前会收到网关注册信息{"id":"00ff2c2c2c6a6f005979","mac":"2c:6a:6f:00:59:79"} //Func<string, HansAppSession, HansAppSession> dd = (key,oldValue)=>session; //当网关重新连接的时候,ip换了的时候,替换之前的session Gateway_SessionDic.AddOrUpdate(res.id, session, (Func <string, HansAppSession, HansAppSession>)((key, oldValue) => session)); service.HashSet <string>("DeviceStatus", res.id + "_13579", "True"); //mac_port, //网关会自动上传104所有设备状态 log.Debug($"收到消息缓存session: {session.RemoteEndPoint} ,网关状态信息: {msg}"); } else if (res.IsDefined("lot")) { SmartHome_Session = session; log.Debug($"收到Lot长连接session: {session.RemoteEndPoint} 信息: {msg}"); } else { log.Info($"{session.RemoteEndPoint.ToString()} 未识别信息: {sArray[i]}"); } } }); }