首页 > 代码库 > “云中论道”之——使用开源技术和Azure公有云服务快速搭建云端IoT解决方案(下)

“云中论道”之——使用开源技术和Azure公有云服务快速搭建云端IoT解决方案(下)

技术分享

本解决方案为系列文章,包含上、下两篇。在上周的《使用开源技术和Azure公有云服务快速搭建云端IoT解决方案(上)》一文中,我们为大家介绍了Raspberry Pi的设置和温度传感器的安装调试;本篇,我们会为大家继续介绍接下来的关于“Azure相关服务的创建和配置、Python Azure应用程序的代码逻辑以及通过Power BI进行数据验证”的流程,最后对解决方案进行总结。

本文作者介绍:

 

微软Azure专家级架构师,江湖人称“槐长清”,曾连续5年被评为微软最有价值专家,多年云计算从业经验,对微软公有云解决方案有深入研究。


解决方案流程:

* 有关解决方案架构和前半部分流程1. 对Raspberry Pi进行OS的安装和设置, 2. Raspberry Pi的无线LAN的设置和与PC的连接,以及3.温度传感器的安装调试,请阅读《使用开源技术和Azure公有云服务快速搭建云端IoT解决方案(下)》。

4Azure相关服务设置:

本环节分为三个部分:Event HUB的创建和设置,SQL Database的创建和设置,和StreamAnalytics的创建和设置。

  • EVENT HUB创建和设置:

  • 技术分享

    注意记录事件集线器名称和命名空间名称,后面流程会用到。格式是:https://ksevent.servicebus.chinacloudapi.cn/ksevent 其中前面的ksevent是命名空间名称,后面的ksevent是事件集线器名称。

    指定分区和消息保留有效期:

  • 技术分享

    Stream analytics访问共享的访问策略设置:

     技术分享

      • SQL数据库创建和设置:技术分享

      • 技术分享

        创建AvgReadings表:

        AvgReadings表中WinStartTime,WinEndTime,DeviceID,SensorID,SensorType,SensorValue

        AvgSensorValue,Eventcount的定义:

    技术分享
                                                                 
    Stream Analytics的创建和设置: 
  • 技术分享

    EventHUB?Streamanalytics?SQL

    EventHUB?Streamanalytics?BI

    这2个Streamanalytics的定义:

    Input设置(指定EventHub):

    选择前面步骤中创建的EventHub,选择EventHub中的时间中心策略名:

     技术分享

    Output设置(指定SQL服务器):

    选择前面步骤中创建的SQLDatabase,选择AvgReadings表:

  • 技术分享

    Stream Analytics的Query设置:

    kseventin从EVENT HUB筛选DeviceId, SensorId, SensorType,SensorValue数据:

技术分享

可以看到SQL数据库中收到的经过StreamAnalytics进行筛选后的数据:

技术分享

5.    RaspberryPi Python Azure 程序

经过上面对Azure相关服务的创建和设置步骤的分享,大家应该能够发现:1,服务创建和配置非常简单;2,不同服务间的连接完全是Azure原生提供,完全不再需要用户去处理不同服务间的衔接问题。

而本步骤,则是本解决方案的重中之重,也是唯一需要用户自己写代码的地方,不过不用担心,代码量之少,可能是大家想象不到的。

安装和更新Python、PHP、Socket、HTTP/REST、AzureSDK等一系列相关模块:

root@raspberrypi:/home/pi# apt-get update

root@raspberrypi:/home/pi# apt-get upgrade

root@raspberrypi:/home/pi# apt-get install python-requests

root@raspberrypi:/home/pi# apt-get installssl-cert

root@raspberrypi:/home/pi# apt-get install php5-json

root@raspberrypi:/home/pi# apt-get install php5-dev

root@raspberrypi:/home/pi# curl https://bootstrap.pypa.io/get-pip.py | sudo python

root@raspberrypi:/home/pi# pip install SoftLayerrequests==2.5.3

root@raspberrypi:/home/pi# pip install httplib2

root@raspberrypi:/home/pi# pip install certifi

root@raspberrypi:/home/pi# pip install urllib3

root@raspberrypi:/home/pi# apt-get installlibio-pty-perl

root@raspberrypi:/home/pi# pip install stdeb

root@raspberrypi:/home/pi# apt-get install python-dev libffi-dev libssl-dev

root@raspberrypi:/home/pi# pip install SoftLayerrequests== six-1.9.0

root@raspberrypi:/home/pi# pip install --upgrade ndg-httpsclient

root@raspberrypi:/home/pi# pip install azure

root@raspberrypi:/home/pi# pip install SoftLayer azure==1.0.0

获得EVENTHUB SharedAccessName和SharedAccessKey:

选择kseventEvent Hub,查看Endpoint和SharedAccessKey:

技术分享

技术分享

技术分享

技术分享

技术分享

至此,代码已经完成,几十行的代码量。

6.    数据验证:

技术分享

数据被从温度传感器通过树莓派收取到EventHub,StreamAnalytics对其进行了筛选,筛选完成后的数据已经存放到了SQLDatabase中,下一步,我们便可以通过PowerBI对数据进行分析展现:

Power BI有专门的接口,可以非常方便的连接到SQL Database(下图左);之后,便可以使用PowerBI对SQLDatabase中存储的温度湿度等数据进行分析展现(下图右):

技术分享

另外,PowerBI不仅可以接受SQLDatabase中存储数据的输入,也可以接受StreamAnalytics的输入,从而可以对Stream数据进行实时展现:

技术分享

Tips:

若想成功连接Power  BI和中国版Azure  SQL Database,需要将Power BI的IP地址范围加入到Azure  SQL Database的“允许的IP地址”列表,比如我使用的是微软MSIT提供的Power  BI服务,我就可以把MSIT提供Power  BI服务所使用的IP地址范围191.238.0.0-191.238.255.255进行添加:

技术分享

之后便可以使用PowerBI对中国版AzureSQL Database中的数据进行分析展现了。

总结:

至此,IoT解决方案的所有流程已经完成,从前端的数据收取,到后端的数据分析展现。对Azure用户来说,只需要自己完成非常少的代码,其余整个流程,Azure都会帮你完成。整个解决方案的搭建和完成,不会超过半天时间。另外整个系统不再需要用户自己进行运维管理,可以说完全是对IoT行业的变革。

另外,本解决方案基于树莓派,基于Linux平台,使用Python语言,为大家提供了更高难度升级下的解决方案。如果大家使用Windows10 IoT操作系统,使用.Net进行开发,那样会更简单,代码量会更少。我有客户使用Arduino进行传感器数据的收发,因为硬件过于简单、并只支持HTTP协议,安装AzureSDK的方便度低于Linux平台和Windows平台,但在双方努力下,微软团队利用AzureEvent Hub提供的RESTAPI,成功帮助客户使用Azure相关服务,并快速搭建起了IoT解决方案。

除了本文列举的服务之外,还可以:

  • 与Azure提供的MediaService服务进行集成,构建智能监控解决方案;

  • 与HDInsight服务进行集成,构建大数据分析解决方案;也可以

  • 与Mobile Service服务进行集成,构建移动端解决方案等解决方案。

更多解决方案,等您来发掘! 

Azure一直都在奉行一个理念:降低技术成本,让用户关注自己的的业务逻辑;而Azure帮您解决了数据的收取,数据的筛选,数据的分析展现等一系列相关流程,同时还帮您对这些相关系统进行管理和维护,而其他的业务逻辑,则是读者您大显身手的地方!使用Azure搭建IoT解决方案,快人十步!

最后,小编还有一个呼吁:

 

立即访问http://market.azure.cn

 

“云中论道”之——使用开源技术和Azure公有云服务快速搭建云端IoT解决方案(下)