TimeValue datetime SensorId int MainValue double TimeValue время созда

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
{
"TimeValue":datetime,
"SensorId": int,
MainValue : double
}
TimeValue время создания события,
SensorId идентификатор устройства, сгенерировавшего событие,
MainValue показание сенсора.
Генератор событий реализован на языке C#. Метод генерирующий события приведен ниже.
//подключение к концентратору событий
var eventHubClient = EventHubClient.Create("smarthome-eventhub");
Random rnd = new Random();
//создаем 99 параллельно работающих генераторов
Parallel.For(1, 100, async (id) =>
{
int count = 1;
//каждый генератор имеет свой базовый уровень показаний
int mbase = rnd.Next(20, 50);
//генерируем бесконечное (пока не остановим) количество событий
while (true)
{
int p = 5;
//псевдовероятность появления шума в данных ~25%
if ((rnd.Next()%2 == 0) && (rnd.Next()%2 == 0))
{
p = 20;
}
Console.WriteLine("Sending event nr {0} for device {1}", count, id);
//заполнение события
var reading = new SmartHomeEvent
{
sensorId = id,
mainValue = mbase + p * rnd.NextDouble(),
timeValue = DateTime.Now
};
EventData msg = new EventData(Encoding.UTF8.GetBytes(reading.ToJson()));
//отправка события с ожиданием выполнения
await eventHubClient.SendAsync(msg);