腾云驾物—使用Azure IoT Hub接收树莓派传感数据展现到Power BI

    一直用业余时间零零碎碎地学习一些IoT的东西,也想把了解到的一些东西组成一个系统来看看IoT能玩些什么。最近微软的文档也更新了,有了一个非常不错的例子,通过树莓派收集传感器数据,传递给Azure的IoT Hub消息,再经过初步的处理传给Power BI,形成直观好看的报表。这个例子很能说明未来的应用,与人/物连接的边缘计算收集和初步处理数据,云平台汇集、重构和展现数据,再回到与人/物连接的边缘计算设备。

    很有代表性的一个场景,简单的示意图如下:

image

    整个事情有这么些步骤:

    1、把传感器连接到树莓派,让传感器工作起来

    2、申请一个Azure账号,启用IoT Hub服务,把树莓派连接到IoT Hub服务

    3、启用Stream Analytics服务,让从树莓派传输到IoT Hub的数据,传递给Power BI

    4、启用Power BI对数据进行展现

    为了随时能做这个实验,我选择使用在线的树莓派模拟器来做IoT设备。后续有时间再上物理的传感器和树莓派。

    树莓派模拟器是树莓派虚拟化?看着很像啊,其实不是啦。为了便于没有树莓派硬件的情况下,能够很简单的开始测试使用Azure的IoT Hub等物联网服务,微软做了一个在线的树莓派加传感器的模拟器。算起来应该是第一批用户了,并且从GitHub(https://github.com/Azure-Samples/raspberry-pi-web-simulator)上看像是紫竹园区的兄弟参与写的哦!所以非常有必要支持一下写一笔。

   要使用树莓派模拟器只需要打开:https://azure-samples.github.io/raspberry-pi-web-simulator/ 站点。

image

    模拟器已经自带了模拟的传感器。当前暂时还不能修改传感器啥的,不过我想以后应该能用不同的传感器或者电路吧。右边浅黄区域就是代码区,都省了自己写代码的工作了。当然,可以对代码做一些调整修改。右边浅灰区域是显示代码输出的区域。代码运行时可以看到输出。

image

    测试的目的是把数据传出去处理,所以需要注册一个Azure账号并创建IoT Hub,然后再IoT Hub中创建一个设备。Azure IoT Hub会给每个设备分配主密钥和副密钥。点击设备就能够查看并复制这个设备的主密钥。即使是树莓派的模拟器,也需要使用密钥来连接IoT Hub并进行信息的收发。

image

    复制密钥之后,在代码区把[You……]那一串替换成设备的主密钥,就可以运行程代码了。运行时,能够在控制台区域显示如下消息:

输出 - 从 Raspberry Pi 发送到 IoT 中心的传感器数据

    可以看到,模拟器模拟了带有温度、湿度、气压的传感器BME280。这个传感器将在测试物理传感器和树莓派时再介绍。这里先略过。

     以上步骤也可以查看详细说明:https://docs.microsoft.com/zh-cn/azure/iot-hub/iot-hub-raspberry-pi-web-simulator-get-started

    完成传感器及边缘设备的配置之后,就需要对上传到Azure IoT Hub的数据进行处理了。可以配置内部终结点的使用者组,让后续的服务可以读取IoT Hub上的数据。

image

    为了把数据导入到Power BI,需要使用Stream Analysitcs服务。按照介绍,这个服务有点类似桥梁,能够把不同来源的信息和数据处理后转发给存储,或者展现到仪表板,或者用来触发应用工作流。

image

    为了让数据自动的从IoT Hub导入到Power BI,需要为Stream Analytics服务配置一个数据输入和一个数据输出,以及对数据执行处理的查询。输入的源可以是事件中心、Blob存储或IoT Hub,输出的目标可以是SQL数据库、Blob存储、事件中心、服务总线、Power BI等各种。我们的目标输出是Power BI,所以需要提供Power BI订阅的凭据。运行这个流分析作业的时候,会自动在Power BI中创建目标的数据集。

image  image  image

        这里有一个坑。新建输入、输出的时候,命名规则是可以接受“-”,“_”的,但是,在编写查询的时候,格式要求不允许这两种符号。结果我只好删了重建重新截图。

image

    有了输入输出,有了用于处理数据的查询,就可以对流分析作业进行测试。

image    image

    测试不会真的写入目标,会从源数据抽取部分用于测试,然后按照查询展现要写到目标的数据。可以在测试之后再根据结果决定是否正式启用流分析作业。

image

    在启动流分析作业之前,测试的Power BI里是一片空白。启动流分析作业之后,出现了新的数据集。利用这个数据集,就可以进行报表的设计。 image

    设计好的报表,就能够很直观的看到从树莓派上的传感器获得的温度和湿度数据了,即使这是个模拟器~

image

    回到Azure,能够在IoT Hub的指标上看到传输到IoT Hub的数据量。模拟器默认的代码是2000 ms发送一次数据,所以每分钟的指标就是30次。同样在流分析作业的指标上,也能够看到数据吞吐的情况,接近每分钟30次。

image    image

    顺便说一句,VS Code的各种插件真不错。Azure插件套件中就有对IoT的支持,可以直接使用IoT Hub的Policy的ID连接到Azure IoT Hub,进行设备的查询和各种消息处理,例如发送C2D/D2C的消息等等。

image

    看上去挺复杂的一次IoT测试,很简单就这么完成了。会有更有意思的东西在前面等着我们学习的~

IoT的终结点参考:https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-devguide-endpoints#list-of-built-in-iot-hub-endpoints

流分析作业的查询参考:https://docs.microsoft.com/en-us/azure/stream-analytics/stream-analytics-stream-analytics-query-patterns

此条目发表在IoT, 死磕和掰活分类目录,贴了, , , 标签。将固定链接加入收藏夹。

发表评论

Fill in your details below or click an icon to log in:

WordPress.com 徽标

You are commenting using your WordPress.com account. Log Out /  更改 )

Google photo

You are commenting using your Google account. Log Out /  更改 )

Twitter picture

You are commenting using your Twitter account. Log Out /  更改 )

Facebook photo

You are commenting using your Facebook account. Log Out /  更改 )

Connecting to %s