Esempio n. 1
0
        public async Task SimulateTemperatureSensor(int messageDelay, int n)
        {
            var deviceSimulator = DeviceTelemetryFactory.CreateTemperatureSimulator("none", "", true);

            int messageCount = 0;

            foreach (var temperature in deviceSimulator.Measure())
            {
                var dataPoint = new
                {
                    Temperature = temperature
                };

                var messageString = JsonSerializer.Serialize(dataPoint);
                await Send(messageString, null);


                if (n > 0)
                {
                    messageCount = messageCount + 1;
                    if (messageCount >= n)
                    {
                        Console.WriteLine("All messages sent");
                        break;
                    }
                }

                await Task.Delay(messageDelay);
            }

            await Task.CompletedTask;
        }
Esempio n. 2
0
        public async Task SimulateTemperatureSensor(int messageDelay, int n, string pattern, string patternPeriod)
        {
            var deviceSimulator = DeviceTelemetryFactory.CreateTemperatureSimulator(pattern.ToLower(), patternPeriod, true);

            DeviceClient dc = CreateDeviceClient(TransportType.Mqtt);

            int messageCount = 0;

            foreach (var temperature in deviceSimulator.Measure())
            {
                var dataPoint = new
                {
                    Temperature = temperature
                };

                var messageString = JsonSerializer.Serialize(dataPoint);
                await Device2CloudMessage(messageString, dc, "UTF-8", "application/json");


                if (n > 0)
                {
                    messageCount = messageCount + 1;
                    if (messageCount >= n)
                    {
                        Console.WriteLine("All messages sent");
                        break;
                    }
                }

                await Task.Delay(messageDelay);
            }

            await Task.CompletedTask;
        }
Esempio n. 3
0
        public async Task SimulateTemperatureSensorPair(int messageDelay, int n)
        {
            var deviceSimulator = DeviceTelemetryFactory.CreateTemperatureSimulator("none", "", true);
            var tempEnumerator  = deviceSimulator.Measure().GetEnumerator();

            DeviceClient dc           = CreateDeviceClient(TransportType.Mqtt);
            int          messageCount = 0;

            while (true)
            {
                var messageString = CreateSimulatedSensorPairDataPoint(tempEnumerator);
                await Device2CloudMessage(messageString, dc, "UTF-8", "application/json");


                if (n > 0)
                {
                    messageCount = messageCount + 1;
                    if (messageCount >= n)
                    {
                        Console.WriteLine("All messages sent");
                        break;
                    }
                }

                await Task.Delay(messageDelay);
            }

            await Task.CompletedTask;
        }
Esempio n. 4
0
        public async Task SimulateTemperatureBattery(int messageDelay, int n, string deviceName, int batteryPeriod = 100)
        {
            var deviceSimulator = DeviceTelemetryFactory.CreateTemperatureSimulator("none", "", true);

            int messageCount   = 0;
            int batteryPercent = 100;
            int batteryCount   = 0;

            foreach (var temperature in deviceSimulator.Measure())
            {
                var dataPoint = new
                {
                    DeviceId    = deviceName,
                    Temperature = temperature
                };

                batteryCount = batteryCount + 1;

                IDictionary <string, object> properties = null;

                if (batteryCount % batteryPeriod == 0)
                {
                    properties = new Dictionary <string, object>();
                    properties.Add("MessageType", "battery");
                    var batteryPoint = new
                    {
                        DeviceId = deviceName,
                        Battery  = batteryPercent
                    };
                    var batteryMessageString = JsonSerializer.Serialize(batteryPoint);
                    await Send(batteryMessageString, null, properties);

                    batteryPercent = Math.Max(batteryPercent - 1, 0);
                    if (batteryPercent == 0)
                    {
                        batteryPercent = 100;
                    }
                }
                var messageString = JsonSerializer.Serialize(dataPoint);
                await Send(messageString, null, null);


                if (n > 0)
                {
                    messageCount = messageCount + 1;
                    if (messageCount >= n)
                    {
                        Console.WriteLine("All messages sent");
                        break;
                    }
                }

                await Task.Delay(messageDelay);
            }

            await Task.CompletedTask;
        }
Esempio n. 5
0
        public async Task SimulateMultipleTemperatureSensors(string[] deviceContext, int messageDelay, int n, string pattern, string patternPeriod, OutputFormat of)
        {
            var deviceSimulators  = new IDeviceTelemetrySimulator[deviceContext.Length];
            var deviceTemperature = new IEnumerator <double> [deviceContext.Length];
            var deviceClients     = new DeviceClient[deviceContext.Length];

            try
            {
                for (int i = 0; i < deviceContext.Length; i++)
                {
                    deviceSimulators[i]  = DeviceTelemetryFactory.CreateTemperatureSimulator(pattern, patternPeriod, true);
                    deviceTemperature[i] = deviceSimulators[i].Measure().GetEnumerator();
                    var client = CreateDeviceClient(deviceContext[i], TransportType.Mqtt);

                    if (client == null)
                    {
                        Console.WriteLine($"Device context {deviceContext[i]} not found");
                        return;
                    }
                    deviceClients[i] = client;
                }

                int messageCount = 0;

                if (of == OutputFormat.Csv)
                {
                    Console.WriteLine("TimeStamp,Sensor,Telemetry");
                }

                while (true)
                {
                    for (int i = 0; i < deviceContext.Length; i++)
                    {
                        deviceTemperature[i].MoveNext();
                        var temperature = deviceTemperature[i].Current;

                        var dataPoint = new
                        {
                            Temperature = temperature
                        };

                        if (of == OutputFormat.Json)
                        {
                            var messageString = JsonSerializer.Serialize(dataPoint);
                            await Device2CloudMessage(messageString, deviceClients[i], "UTF-8", "application/json", deviceContext[i]);
                        }
                        else if (of == OutputFormat.Csv)
                        {
                            var message = string.Format("{0},{1},{2}", DateTime.Now, deviceContext[i], temperature);
                            var dc      = deviceClients[i];
                            await Device2CloudMessage(message, deviceClients[i], "UTF-8", "application/json", null, "{1}");
                        }
                    }

                    if (n > 0)
                    {
                        messageCount = messageCount + 1;
                        if (messageCount >= n)
                        {
                            Console.WriteLine("All messages sent");
                            break;
                        }
                    }

                    await Task.Delay(messageDelay);
                }
            }
            finally
            {
                // Clean up
                foreach (var e in deviceTemperature)
                {
                    e.Dispose();
                }
            }


            await Task.CompletedTask;
        }