public void DoWork() { int index = 0; //while (true) while (index < LoopSize) { //FsMessage msg = newMessage(string.Format("T1 msg {0},To Somone, from alarm.", index)); FsMessage msg = newMessage(string.Format("你好 {0},To Somone, from alarm.", index)); bus.Publish(Topic, msg.ToJson()); index++; } }
private void SensorChangedHandler(FsMessage msg, EtService service) { //string r = msg.Header.R; try { var senopera = ObjectDeserializeHelper.Json2SensorOperation(msg.Body.ToString()); service.Dtm.UpdateSensorConfig(senopera); } catch (Exception ex) { _log.ErrorFormat("Update sensor info error :{0}", ex.Message); } }
private void ColInfoConfigChanged(FsMessage msg, DacService service) { string r = msg.Header.R; if (r.Contains("dtu")) { this.DtuChangedHandler(msg, service); } if (r.Contains("sensor")) { this.SensorChangedHandler(msg, service); } }
public void OnMessageReceived(string buff) { try { FsMessage msg = FsMessage.FromJson(buff); Log.InfoFormat("pull({0})", buff); _msgHelper.DealMsg(msg, this); } catch (Exception ce) { Log.ErrorFormat("err {0}!", ce.Message); } }
/// <summary> /// 即时采集 /// </summary> /// <param name="msg"></param> /// <param name="service"></param> private void InstantCol(FsMessage msg, EtService service) { string tid = msg.Header.U.ToString(); uint dtu = msg.BodyValue <uint>("dtu"); uint[] sensors = msg.BodyValues <uint>("sensors"); var sensorList = new List <uint>(sensors); int taskId = service.Dtm.ArrangeInstantTask(tid, dtu, sensorList, null); msg.Body = JObject.FromObject(new { tid = taskId }); _log.DebugFormat("Resp.OnMessageReceived: {0}-{1}, dtu = {2}, sensors={3},resp={4}", msg.Header.S, msg.Header.R, dtu, sensors.Length, msg.Body); service.Push(msg.Header.S, msg); }
public FsMessage DataStatusMsg(SensorAcqResult result) { try { result.Sensor = DbAccessor.DbConfigAccessor.GetSensorInfo(result.Sensor.SensorID); } catch (Exception e) { } if (!this._sensorDataStatuses.ContainsKey((int)result.Sensor.SensorID)) { this._sensorDataStatuses.TryAdd((int)result.Sensor.SensorID, new SensorDataStatus { SensorId = (int)result.Sensor.SensorID, StructId = (int)result.Sensor.StructId, Time = result.AcqTime }); } this._sensorDataStatuses[(int)result.Sensor.SensorID].GetSensorColResult(result); if (!this._sensorDataStatuses[(int)result.Sensor.SensorID].IsContinuum || this._sensorDataStatuses[(int)result.Sensor.SensorID].IsRequireWarning) { SensorDataStatus dataStatus = this._sensorDataStatuses[(int)result.Sensor.SensorID]; var msg = new DataContinuWarningMsg { Id = Guid.NewGuid(), StructId = dataStatus.StructId, DeviceTypeId = SENSORDEVICETYPEID, DeviceId = dataStatus.SensorId, WarningTypeId = dataStatus.IsContinuum ?((int)Errors.SUCCESS).ToString():((int)Errors.ERR_DATA_BREACH).ToString(), WarningTime = dataStatus.Time, DateTime = DateTime.Now, WarningContent = string.Format(dataStatus.IsContinuum ? "数据恢复" : EnumHelper.GetDescription(Errors.ERR_DATA_BREACH)), DataStatus = dataStatus.IsContinuum }; var warningmsg = new FsMessage { Header = new FsMessageHeader { A = "PUT", R = "/warning/datacontinu", U = Guid.NewGuid(), T = Guid.NewGuid(), D = _warningAppName, M = "Warning" }, Body = JsonConvert.SerializeObject(msg) }; return(warningmsg); } return(null); }
public void OnMessageReceived(string buff) { try { FsMessage msg = FsMessage.FromJson(buff); // real-time DAC: // body:{"dtu":1,"sensors":[17,20]} Log.InfoFormat("pull({0})", buff); _msgHelper.DealMsg(msg, this); } catch (Exception ce) { Log.ErrorFormat("err {0}!", ce.Message); } }
public static void SendToAgg(FsMessage msg) { if (_instance != null && msg != null) { try { _instance.Push("agg", msg); } catch (Exception ex) { log.ErrorFormat("Send to agg msg falied : msg: {0},error:{1}", msg.ToJson(), ex); } } }
private string GetSensorStatus(FsMessage msg, EtService service) { SensorIds obj = JsonConvert.DeserializeObject <SensorIds>(msg.Body.ToString()); if (obj == null || obj.sensorIds == null || obj.sensorIds.Length == 0) { msg.Body = JsonConvert.SerializeObject(new[] { new { sensorId = 0, dacStatus = "N/A" } }); return(msg.ToJson()); } Senstatus[] statuses = service.GetSensorDacStatus(obj.sensorIds, obj.structId); msg.Body = JsonConvert.SerializeObject(statuses); return(msg.ToJson()); }
public void Push(FsMessage msg) { if (msg != null) { msg.Header.S = MyName; Log.DebugFormat("push msg {0}", msg.ToJson()); try { Push(msg.Header.D, msg); } catch (Exception ex) { Log.ErrorFormat("push msg failed : msg {0}, error: {1}", msg.ToJson(), ex); } } }
static FsMessage newMessage(string body) { Guid token = Guid.NewGuid(); Guid msgId = Guid.NewGuid(); FsMessage msg = new FsMessage(); msg.Header = new FsMessageHeader(); msg.Header.A = "GET"; msg.Header.D = "LOG"; msg.Header.L = 20; msg.Header.R = "log"; msg.Header.S = "中文"; msg.Header.T = token; msg.Header.U = msgId; msg.Body = body; return(msg); }
public static FsMessage GetAggConfigChangedMsg() { var msg = new FsMessage { Header = new FsMessageHeader { A = "PUT", R = "/agg/config/", U = Guid.NewGuid(), T = Guid.NewGuid(), D = "agg", M = "config" }, }; return(msg); }
public void TestJson() { var msg = newMessage(new { structId = 3 }); string str = msg.ToJson(); msg = FsMessage.FromJson(str); var i = msg.BodyValue <uint>("structId"); Console.WriteLine(i); }
private void ColInfoConfigChanged(FsMessage msg, EtService service) { string r = msg.Header.R; if (r.Contains("dtu")) { DtuChangedHandler(msg, service); } if (r.Contains("sensor")) { SensorChangedHandler(msg, service); } if (r.EndsWith("sengroup")) { SensorGroupChangedHandler(service); } }
public FsMessage GetSensorMsg(SensorAcqResult result) { try { result.Sensor = DbAccessor.DbConfigAccessor.GetSensorInfo(result.Sensor.SensorID); } catch (Exception e) { } if (result.ErrorCode == (int)Errors.SUCCESS || result.ErrorCode == (int)Errors.ERR_DEFAULT || result.ErrorCode == (int)Errors.ERR_COMPILED || result.ErrorCode == (int)Errors.ERR_CREATE_CMD) { this._log.WarnFormat("[ StructId:{2},SID:{3} -Location:{4}] error code :{0}, msg :{1}", (Errors)result.ErrorCode, EnumHelper.GetDescription((Errors)result.ErrorCode), result.Sensor.StructId, result.Sensor.SensorID, result.Sensor.Name); return(null); } var msg = new RequestWarningReceivedMessage { Id = Guid.NewGuid(), StructId = (int)result.Sensor.StructId, DeviceTypeId = SENSORDEVICETYPEID, DeviceId = (int)result.Sensor.SensorID, WarningTypeId = result.ErrorCode.ToString(), WarningTime = DateTime.Now, DateTime = DateTime.Now, WarningContent = EnumHelper.GetDescription((Errors)result.ErrorCode) //string.Format(result.Response == null ? "采集超时" : result.ErrorMsg) }; var warningmsg = new FsMessage { Header = new FsMessageHeader { A = "PUT", R = "/warning/sensor", U = Guid.NewGuid(), T = Guid.NewGuid(), D = _warningAppName, M = "Warning" }, Body = JsonConvert.SerializeObject(msg) }; return(warningmsg); }
public static FsMessage GetSensorConfigChangedMsg(SensorOperation senopera) { var msg = new FsMessage { Header = new FsMessageHeader { A = "PUT", R = "/et/config/sensor/", U = Guid.NewGuid(), T = Guid.NewGuid(), D = "et", M = "config" }, Body = JsonConvert.SerializeObject(senopera) }; return(msg); }
public static FsMessage GetSensorGroupMessage() { var msg = new FsMessage { Header = new FsMessageHeader { A = "PUT", R = "/et/config/sengroup", U = Guid.NewGuid(), T = Guid.NewGuid(), D = "et", M = "config" }, Body = JsonConvert.SerializeObject(null) }; return(msg); }
private void OnMessageReceived(string buff) { try { FsMessage msg = FsMessage.FromJson(buff); if (msg == null) { log.Error("pull.OnMessageReceived, msg is NULL!"); return; } string sender = msg.Header.S; var warningmsg = msg.Body.ToString(); warningmm.AddWarningMsg(sender, msg.Header.R, warningmsg); } catch (Exception ex) { log.ErrorFormat("Error {0}:", ex.Message); } }
public void OnMessageReceived(string buff) { try { FsMessage msg = FsMessage.FromJson(buff); // real-time DAC: // body:{"dtu":1,"sensors":[17,20]} Log.InfoFormat("pull({0})", buff); if (msg != null && msg.Header.R == @"/agg/config/") { jobManage.StopWork(); List <BaseAggConfig> configs = BaseAggConfig.Create(SeclureCloudDbHelper.Instance().Accessor.GetConfig()); jobManage.ReStart(configs); } } catch (Exception ce) { Log.ErrorFormat("err {0}!", ce.Message); } }
/// <summary> /// DTU状态变更告警 /// </summary> /// <param name="msg"></param> private void DTUConnectionStatusChangedHandler(DTUConnectionStatusChangedMsg msg) { try { FsMessage fsmsg = _warningHelper.GetDtuStatusMsg(msg); if (fsmsg != null) { Push(fsmsg); } if (!msg.IsOnline) { etDataStatus.ClearOffLineSensorStatus(msg.DTUID); } } catch (Exception ex) { Log.ErrorFormat("DTU状态变更告警推送失败 : {0}", ex.Message); } }
public string DealMsg(string buff, NGEtService service) { FsMessage msg = FsMessage.FromJson(buff); //if (String.Compare(msg.Header.R, "/et/status/structs/abnormalsensorCount", StringComparison.OrdinalIgnoreCase) == 0) //{ // return GetAbnormalSensorCount(msg, service); //} //if (String.Compare(msg.Header.R, "/et/status/sensors", // StringComparison.OrdinalIgnoreCase) == 0) //{ // return GetSensorStatus(msg, service); //} //if (String.Compare(msg.Header.R, "/et/status/struct/allSensors", // StringComparison.OrdinalIgnoreCase) == 0) //{ // return GetAllSensors(msg, service); //} msg.Body = string.Empty; return(msg.ToJson()); }
public void TestFsMessageToJson() { Guid token = Guid.NewGuid(); Guid msgId = Guid.NewGuid(); FsMessage msg = new FsMessage(); msg.Header = new FsMessageHeader(); msg.Header.A = "GET"; msg.Header.D = "LOG"; msg.Header.L = 20; msg.Header.R = "log/all"; msg.Header.S = "中文"; msg.Header.T = token; msg.Header.U = msgId; msg.Body = new { name = "Hello", intv = 1, data = "2012-2-2", av = new[] { 1, 2, 3, 4.2 }, bv = true }; string json = msg.ToJson(); // {"Body":{"Data":null},"Header":{"A":"GET","D":"LOG","L":20,"R":"log\/all","S":"Tester","T":"69623642-264c-4260-a7b4-bea916b8cf0c","U":"661f43ca-7d52-418a-8f46-12854a25561d"}} Console.WriteLine("json = {0}", json); Assert.IsNotNull(json); FsMessage msg2 = FsMessage.FromJson(json); Assert.AreEqual(msg.Header.T, msg2.Header.T); Assert.AreEqual(JsonConvert.SerializeObject(msg2.Body), JsonConvert.SerializeObject(msg.Body)); JObject body = (JObject)msg2.Body; int iv1 = msg2.BodyValue <int>("intv"); double[] sensors = msg2.BodyValues <double>("av"); Assert.AreEqual(1, iv1); Assert.AreEqual(4, sensors.Length); Assert.AreEqual(4.2, sensors[3]); Assert.AreEqual(true, msg2.BodyValue <bool>("bv")); Assert.AreEqual("Hello", msg2.BodyValue <string>("name")); }
public object GetSensorRealtimeRequest(int dtu, string sensors) { log.DebugFormat("Instant DAC: DTU={0}, sensors={1}", dtu, sensors); Guid guid = Guid.NewGuid(); FsMessage msg = new FsMessage(); msg.Header.U = guid; msg.Header.R = "/et/dtu/instant/dac"; //request url. msg.Header.S = "WebClient"; msg.Header.M = "GET"; msg.Header.T = Guid.NewGuid(); msg.Body = new { dtu = dtu, sensors = ToIntArray(sensors), }; WebClientService.SendToET(msg); using (var entity = new SecureCloud_Entities()) { var strGuid = guid.ToString(); var query = from ti in entity.T_TASK_INSTANT where ti.MSG_ID == strGuid select new { msgid = ti.MSG_ID }; var result = true; var list = query.ToList(); if (list.Count == 0) { result = false; } var json = new JObject( new JProperty("msgid", guid), new JProperty("result", result)); return(json); } }
public object GetDtuRestartRequest(int dtuId) { var guid = Guid.NewGuid(); var msg = new FsMessage { Header = { S = "WebClient", A = "GET", R = "/et/dtu/instant/at-restart", U = guid, T = Guid.NewGuid() }, Body = new { dtuId } }; WebClientService.SendToET(msg); // 向ET Push DTU重启消息 using (var entity = new SecureCloud_Entities()) { var strGuid = guid.ToString(); var query = from ti in entity.T_TASK_INSTANT where ti.MSG_ID == strGuid select new { msgid = ti.MSG_ID }; var result = true; var list = query.ToList(); if (list.Count == 0) { result = false; } var json = new JObject( new JProperty("msgid", guid), new JProperty("result", result)); return(json); } }
/// <summary> /// 发送传感器阈值告警 /// </summary> /// <param name="sensorId">传感器编号</param> /// <param name="structId"></param> /// <param name="thresholdAlarm"></param> public static void SendWarning(int sensorId, int structId, ThresholdAlarm thresholdAlarm) { var msg = new RequestWarningReceivedMessage { Id = Guid.NewGuid(), StructId = structId, DeviceTypeId = DEVICETYPEID, DeviceId = sensorId, WarningTypeId = GetWarningTypeId(thresholdAlarm.AlarmDetails.Min(d => d.ThresholdLevel)), WarningTime = DateTime.Now, WarningContent = thresholdAlarm.ToString(), DateTime = DateTime.Now }; var warningMsg = new FsMessage { Header = new FsMessageHeader { A = "PUT", R = "/warning/sensor", U = Guid.NewGuid(), T = Guid.NewGuid(), D = WarningAppName, M = "Warning" }, Body = JsonConvert.SerializeObject(msg) }; try { Service.Push(warningMsg.Header.D, warningMsg); } catch (Exception ex) { Log.ErrorFormat("push msg failed ,msg : {0}, error : {1}", warningMsg.ToJson(), ex); } }
private string GetAbnormalSensorCount(FsMessage msg, EtService service) { try { StructureIds obj = JsonConvert.DeserializeObject <StructureIds>(msg.Body.ToString()); if (obj == null || obj.structIds == null || obj.structIds.Length == 0) { msg.Body = JsonConvert.SerializeObject(new[] { new { structId = 0, abnormalSensorCount = -1 } }); return(msg.ToJson()); } AbnormalCount[] counts = service.GetAbnormalSensorCount(obj.structIds); string msgbody = JsonConvert.SerializeObject(counts); msg.Body = msgbody; return(msg.ToJson()); } catch (Exception ex) { _log.ErrorFormat("GetAbnormalSensorCount error: {0}", ex.Message); return(string.Empty); } }
private void OnResponsedFromET(string buffer) { try { FsMessage msg = FsMessage.FromJson(buffer); log.DebugFormat("response({0})", buffer); if (msg == null) { log.Error("response.OnResponsedFromET, msg is NULL!"); return; } string url = msg.Header.R; if (url == "/et/status/structs/abnormalSensorCount") // 从ET Response 结构物下异常传感器个数 { // 获取消息: 结构物下异常传感器个数 GetMessageFromET(msg); } } catch (Exception ex) { log.ErrorFormat("error: {0}", ex.Message); } }
private static void OnPulledFromET(string buffer) { try { FsMessage msg = FsMessage.FromJson(buffer); log.DebugFormat("pull({0})", buffer); if (msg == null) { log.Error("pull.OnPulledFromET, msg is NULL!"); return; } string url = msg.Header.R; if (url == "/et/dtu/instant/at") // DTU远程配置 { // 获取DTU远程配置消息 GetMessageFromET(msg); } } catch (Exception ex) { log.ErrorFormat("error: {0}", ex.Message); } }
private static void SendAggConfigChangedMsg() { FsMessage msg = ConfigChangedMsgHelper.GetAggConfigChangedMsg(); WebClientService.SendToAgg(msg); }
public static FsMessage GetMessageFromET(FsMessage msg) { return(msg); }