Esempio n. 1
0
        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));
        }
Esempio n. 2
0
        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();
        }