本解决方案为系列文章,包含上、下两篇。在上周的《使用开源技术和Azure公有云服务快速搭建云端IoT解决方案(上)》一文中,我们为大家介绍了Raspberry Pi的设置和温度传感器的安装调试;本篇,我们会为大家继续介绍接下来的关于“Azure相关服务的创建和配置、Python Azure应用程序的代码逻辑以及通过Power BI进行数据验证”的流程,最后对解决方案进行总结。
本文作者介绍:
微软Azure专家级架构师,江湖人称“槐长清”,曾连续5年被评为微软最有价值专家,多年云计算从业经验,对微软公有云解决方案有深入研究。
解决方案流程:
* 有关解决方案架构和前半部分流程1. 对Raspberry Pi进行OS的安装和设置, 2. Raspberry Pi的无线LAN的设置和与PC的连接,以及3.温度传感器的安装调试,请阅读《使用开源技术和Azure公有云服务快速搭建云端IoT解决方案(下)》。
4. Azure相关服务设置:
本环节分为三个部分: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的定义:
-
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