标签:c azure azure-storage-blobs iot azure-iot-hub
我有一个带有2个IoT设备的IoT Hub,它们都发送环境数据(温度和湿度)我创建了一个自定义端点并路由到我的Azure存储帐户,它被保存在那里我可以回顾一下.问题是它发送原始遥测数据,包括奇怪的字符和类似的东西.我发现它是CSV格式但我仍然无法解析它.
我的问题是,
我想直接从blob获取原始遥测数据,并使用C#将其解析为SensorResult类.
我想出了如何读取解析遥测数据所需的blob数据.但我无法弄明白这一部分.
原始遥测数据片段:
Objavro.codecnullavro.schemaÐ{"type":"record","name":"Message","namespace":"Microsoft.Azure.Devices","fields":[{"name":"EnqueuedTimeUtc","type":"string"},{"name":"Properties","type":{"type":"map","values":"string"}},{"name":"SystemProperties","type":{"type":"map","values":"string"}},{"name":"Body","type":["null","bytes"]}]}°ÈF¬êYâS:á…ð82018-06-29T18:34:10.4320000Z temperatureAlert
falsemessageIdmessage_0correlationIdcorrelation_0$connectionDeviceIdraspi(connectionAuthMethodœ{"scope":"device","type":"sas","issuer":"iothub","acceptingIpFilterRule":null}8connectionDeviceGenerationId$0enqueuedTime82018-06-29T18:34:10.4320000Z¨{"deviceId": "Raspberry Pi - Python","temperature": 28.801060,"humidity": 40.097196}82018-06-29T18:34:12.3400000Z temperatureAlert
第一行是遥测的标题,下面的所有行都只是来自物联网设备的消息.
谢谢.
解决方法:
以下是avro阅读器的代码片段:
using Microsoft.Hadoop.Avro.Container;
// ...
using (var reader = AvroContainer.CreateGenericReader(myBlob))
{
while (reader.MoveNext())
{
foreach (dynamic record in reader.Current.Objects)
{
var bodyText = Encoding.UTF8.GetString(record.Body);
log.Info($"AvroRecord = {bodyText}");
}
}
}
标签:c,azure,azure-storage-blobs,iot,azure-iot-hub 来源: https://codeday.me/bug/20190701/1346485.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。