Пример #1
0
        public void Test_VoltageStats()
        {
            var dataService = new MockDataService();
            var spg         = new SparkPlugGenerator(new MockLogger(), dataService, publishTopic);
            var inputMqtt   = new MockMQTTWrapper();
            var outputMqtt  = new MockMQTTWrapper();
            var deviceEUI   = "123";

            inputMqtt.MessageReceived   += spg.ProcessMessage;
            spg.MessageProcessed        += outputMqtt.Publish;
            outputMqtt.MessagePublished += OnMessagePublished;

            var voltageStats = new Ppuplink.VoltageStatsMessage()
            {
                Deviceeui = deviceEUI,
                Timesent  = 1612234855,
                Starttime = "2021/01/01",
                Stoptime  = "2021/01/02",
                Phaseid   = 1,
                H0213     = 1,
                H213215   = 1,
                H215217   = 0,
                H217219   = 10,
                H219221   = 2,
                H221223   = 5,
                H223225   = 0,
                H225227   = 1,
                H227229   = 4,
                H229231   = 0,
                H231233   = 12,
                H233235   = 500,
                H235237   = 2,
                H237239   = 0,
                H239241   = 2,
                H241243   = 0,
                H243245   = 0,
                H245247   = 0,
                H247249   = 0,
                H249300   = 1,
                Mean      = 12.4,
                Variance  = 234.6
            };

            // trigger DBIRTH and voltagestats
            var topic = $"application/powerpilot/uplink/voltagestats/{deviceEUI}";

            inputMqtt.InjectMessage(new MQTTMessageArgs(topic, voltageStats.ToByteArray()));

            Thread.Sleep(10);
            var messages = outputMqtt.GetMessagesReceived();

            // expect voltagestats
            var voltagestats = messages.Find(m => m.Topic == $"spBv1.0/DTX/{SparkPlugMessageTypes.DDATA}/PowerPilotCS/{deviceEUI}");

            Assert.NotNull(voltagestats);
            var payload = Payload.Parser.ParseFrom(voltagestats.Payload);

            Assert.Equal(24, payload.Metrics.Count);
        }