public static void DataProcessing(DUT_MQTT_TEMPHUMIDITY packet, ConcurrentQueue <DataMessage> queue) { if (packet.Status != 0) { return; } int siteid = ENV.SiteId; int rccid = ENV.RccId; string dc_topic_name = $"hubbub/{siteid}/DC/AI"; DateTime timestamp = DateTime.FromFileTime(packet.Header.Timestamp); string timestamp_string = timestamp.ToString("yyyyMMddHHmmss"); queue.Enqueue(CreateMessage(packet, 6, timestamp)); }
protected override async Task OnApplicationMessageReceived(string ClientId, string Topic, string ContentType, uint QosLevel, byte[] payload) { try { if (Topic.StartsWith("site")) { DUT_MQTT_COMMON_HEADER header = PacketParser.ByteToStruct <DUT_MQTT_COMMON_HEADER>(payload); switch (header.Category) { case PmsCategoryTypes.ESS: DUT_MQTT_ESS ess = PacketParser.ByteToStruct <DUT_MQTT_ESS>(payload); ModelConverter.DataProcessing(ess, _queues); ModelConverter.EventProcessing(this, ess); break; case PmsCategoryTypes.TEMPERATUREANDHUMIDITY: DUT_MQTT_TEMPHUMIDITY temp = PacketParser.ByteToStruct <DUT_MQTT_TEMPHUMIDITY>(payload); ModelConverter.DataProcessing(temp, _queues); break; } } else if (Topic.EndsWith("control")) { string msg = Encoding.UTF8.GetString(payload); ModbusControlModel model = JsonConvert.DeserializeObject <ModbusControlModel>(msg); MqttApplicationMessage mqtt_msg = ConvertControlMessage(model); await MqttClient.PublishAsync(mqtt_msg); var logger = NLog.LogManager.GetLogger("control_logger"); logger.Info($"[{model.userid}] [DeviceIndex:{model.deviceindex}] {model.commandcode} REF:{model.commandvalue}"); } //if(ModelConverter.TryConvertPcs(ess, DateTime.Now, out MqttApplicationMessage[] pcs_messages, // out MqttApplicationMessage[] bat_messages)) //{ //} } catch (Exception ex) { logger.LogError(ex, ex.Message); } //throw new NotImplementedException(); }