예제 #1
0
        public void ReceiveHeartBeat(xmlMessage InputData)
        {
            // Parse Mqtt Topic
            string[] Topic     = InputData.MQTTTopic.Split('/'); // /IEW/GateWay/Device/Status/HeartBeat
            string   GateWayID = Topic[2].ToString();
            string   DeviceID  = Topic[3].ToString();

            cls_HeartBeat hb = new cls_HeartBeat();

            hb = JsonConvert.DeserializeObject <cls_HeartBeat>(InputData.MQTTPayload.ToString());

            if (ObjectManager.MonitorManager != null)
            {
                //cls_Monitor_Gateway_Info gw = ObjectManager.MonitorManager.monitor_list.Where(p => p.gateway_id == GateWayID).FirstOrDefault();
                //if (gw != null)
                //{

                /*
                 *  cls_Monitor_Device_Info dv = gw.device_list.Where(p => p.device_id == DeviceID).FirstOrDefault();
                 *  if (dv != null)
                 *  {
                 *      gw.gateway_status = hb.Status;
                 *      gw.hb_report_time = DateTime.ParseExact(hb.HBDatetime, "yyyyMMddHHmmssfff", CultureInfo.InvariantCulture);
                 *      gw.hb_status = hb.Status;
                 *
                 *      dv.device_status = hb.Status;
                 *      dv.hb_status = hb.Status;
                 *      dv.hb_report_time = DateTime.ParseExact(hb.HBDatetime, "yyyyMMddHHmmssfff", CultureInfo.InvariantCulture);
                 *  }
                 */
                cls_Monitor_Device_Info mdv = ObjectManager.MonitorManager.device_list.Where(o => o.gateway_id == GateWayID && o.device_id == DeviceID).FirstOrDefault();
                if (mdv != null)
                {
                    mdv.device_status  = hb.Status;
                    mdv.hb_status      = hb.Status;
                    mdv.hb_report_time = DateTime.ParseExact(hb.HBDatetime, "yyyyMMddHHmmssfff", CultureInfo.InvariantCulture);
                }

                this.ObjectManager.OnHeartBeatEventCall(null);
                //}
            }
        }
예제 #2
0
        public void SetOnlineMonitorEDCReportStatus(string gw_id, string dv_id, string payload)
        {
            if (ObjectManager.MonitorManager != null)
            {
                //cls_Monitor_Gateway_Info gw = ObjectManager.MonitorManager.monitor_list.Where(p => p.gateway_id == gw_id).FirstOrDefault();
                //if (gw != null)
                //{
                //cls_Monitor_Device_Info dv = gw.device_list.Where(p => p.device_id == dv_id).FirstOrDefault();
                cls_Monitor_Device_Info mdv = ObjectManager.MonitorManager.device_list.Where(o => o.gateway_id == gw_id && o.device_id == dv_id).FirstOrDefault();
                if (mdv != null)
                {
                    cls_HeartBeat hb = new cls_HeartBeat();

                    cls_read_data_reply CollectData = null;
                    CollectData       = JsonConvert.DeserializeObject <cls_read_data_reply>(payload);
                    mdv.last_edc_time = DateTime.ParseExact(CollectData.Time_Stamp, "yyyyMMddHHmmssfff", CultureInfo.InvariantCulture);

                    mdv.last_edc_time = DateTime.ParseExact(CollectData.Time_Stamp, "yyyyMMddHHmmssfff", CultureInfo.InvariantCulture);
                }
                //}
            }
        }