У меня есть несколько устройств IoT (код Java), которые в свою очередь подключены к нескольким устройствам локально. Каждый из этих модулей сообщает данные устройству IoT, а устройство IoT публикует все данные в массиве переменных вложенных объектов, которые также имеют массивы:
{
"data":{
"version":"1.2.3",
"sensorData":{
"a":18.50733137829912,
"b":8.165982404692084,
"c":20.75894428152493,
},
"units":[
{
"address":"192.168.254.16",
"name":"Unit 1",
"connectors":[
{
"id":1,
"measurement":{
"a":13.44,
"b":0.0,
"c":0.0
},
"status":"running"
}
]
},
{
"address":"192.168.254.17",
"name":"Unit 2",
"connectors":[
{
"id":1,
"measurement":{
"a":0.0,
"b":0.0,
"c":0.0
},
"status":"initialized",
}
]
}
]
},
"notificationType":"Status",
"type":"Notification"
}
В идеале я хочу иметь возможность перейти на какое-нибудь приложение панели мониторинга, например, пример Contoso, щелкнуть это устройство IoT и просмотреть график, показывающий a, b, c на sensorData, который является плоским и фиксированным, но также показывает " Единица 1 "и" Единица 2 "отдельно представлены в виде кривых, как, например," Единица 1 - а "," Единица 1 - b "," Единица 1 - с ", или объединить их в сумму как" Единица 1 - общая сумма ". Возможно ли это с представленными данными?
Итак, я
- Опубликовать эти данные "как есть" и каким-то образом использовать нотацию для получения вложенных данных и агрегирования?
- Обработайте его на устройстве IoT для выравнивания, например, unit1_name, unit1_address, unit1_connector_1_a, unit1_connector_1_b, unit1_connector_1_c и т. Д.
- Отправьте эти данные "как есть" и обработайте / выровняйте данные в лазури так же, как я бы делал это локально, прежде чем они достигнут приложения (через потоковую аналитику?)
Все образцы, которые я видел, имеют "плоскую" структуру, такую как температура и давление на корневой объект json, поэтому я не уверен, каков наилучший способ продвинуться здесь.
Как это вписывается в Application Insights? У меня также есть такие события, как «запущен», «остановлен» и т. Д. Следует ли мне использовать для этого клиента телеметрии (в Application Insights for Java)? Как насчет регистрации? Использование log4j2. Все проходит через DeviceClient, а затем анализируется и распространяется через Stream Analytics?
Спасибо!