Raspberry Pi是一款基于Linux的单板机电脑。它由英国的树莓派基金会所开发,目的是以低价硬件及自由软件刺激在学校的基本计算机科学教育。树莓派配备一枚博通(Broadcom)出产的ARM架构700MHz BCM2835处理器,256MB內存(B型已升级到512MB内存),使用SD卡看成存储媒体,且拥有一个Ethernet、两个USB接口、以及HDMI(支持声音输出)和RCA端子输出支持。树莓派只有一张信用卡大小,体积大概是一个火柴盒大小,能够运行像《雷神之锤III竞技场》的游戏和进行1080p视频的播放。操做系统采用开源的Linux系统如Debian、ArchLinux,自带的Iceweasel、KOffice等软件,可以知足基本的网络浏览、文字处理以及电脑学习的须要。 python
固然Raspberry Pi也能够成为最佳的IOT的终端设备,经过传感器收集数据,以供后台系统进行分析等。 数据库
一.Raspberry Pi的数据采集 json
本文采用Raspberry Pi 2B,有4个USB接口,一个Ethernet接口,一个HDMI接口,一个MicroSD插槽,一个3.5毫米音频插孔和复合视频,摄像头接口(CSI),显示接口(DSI),另外还有一个40Pin的GPIO接口。 windows
我购买的淘宝连接: api
https://item.taobao.com/item.htm?spm=a1z10.5-c.w4002-11372085286.12.V3rWzS&id=522217122138 网络
价格在210元左右。 架构
另外,Raspberry Pi的传感器有多种多样。能够经过GPIO的接口进行链接。本文采用的是集成的传感器: Sense Hat。 python2.7
Sense Hat保护多种传感器:陀螺仪、加速度计、磁力仪、温度、气压、湿度。另外还包含一个8×8 RGB LED matrix和一个Joystick的活动手柄。 tcp
我购买的淘宝连接为: 学习
https://item.taobao.com/item.htm?spm=a1z09.2.0.0.MivT32&id=522031087011&_u=7bp4gm8c97
价格在240元左右。
将Sense Hat与Pi链接,而后系统开机上电。默认的操做系统为Linux系统Raspbian,是从Debian演进来的。关于其由来能够参考:
在Bash Shell中编写Python2.7的程序,得到温度传感器数据:
#!/usr/bin/python
from sense_hat import SenseHat
sense = SenseHat()
sense.clear()
temp = sense.get_temperature()
print(temp)
运行此程序,能够在屏幕上打印目前的温度。
一样,能够经过get_humidity()和get_pressure()等方法得到其余传感器的数值。
具体的Sense-hat的各类python方法,请参考:
https://pythonhosted.org/sense-hat/api/
二.在Azure上建立Event Hub、Stream Analytics和SQL Azure DB
1.建立Event hub:
选择Custom create:
填写相应的信息后输入:
这样就建立了Event Hub的一个PaaS的服务。在配置中,建立一个Shared Access Policies:
Save之后能够得到其SharedAccessKey:
2.建立SQL Azure Database
在Azure管理界面中选择SQL DB。在Server中选择Add:
输入用户名和密码。建立SQL Server。
而后选择建立SQL Database:
建立好后,把本机的地址加入SQL的白名单:
使用SQL的客户端链接数据库:
在Options中选择数据库:
登录后建立table:
Create table [dbo].[hwtest1] (
Time Datetime2 (6) Null,
DeviceId Varchar (16) Null,
Temperature Float (53) Null,
Humidity Float (53) Null
);
GO
Create clustered index [hwtest1] on [dbo].[hwtest1] ([DeviceId] ASC);
3.建立Stream Analytics
建立成功后,在Input中添加Input:
选择Event Hub:
而后添加Event Hub的设置:
在事件格式中选择JSON和UTF8
建立Output:
选择SQL Database,添加SQL的配置:
在Query的设置中加入下面的配置:
这里的DeviceId,Temperature,Humidity等参数必须在Python程序、Stream Analytics和SQL中相同。不然数据将不能取到。
Input、Output和Query设置好后就能够启动此Job了。
三.将Raspberry Pi的数据上传到Azure的Event Hub
在Raspberry Pi上安装Azure的SDK:
pip install azure
安装完成后,更改Azure Service Bus的endpoint。请参考:
https://msdn.microsoft.com/en-us/library/azure/dn578439.aspx
对于Python的endpoint更改:
在/usr/local/lib/python2.7/dist-packages/azure/servicebus/constants.py
修改31行的配置
#SERVICE_BUS_HOST_BASE = '.servicebus.windows.net'
SERVICE_BUS_HOST_BASE = '.servicebus.chinacloudapi.cn'
建立Python程序:
#!/usr/bin/python
from azure.servicebus import ServiceBusService
from sense_hat import SenseHat
from time import sleep
import json;
sense = SenseHat()
sbs = ServiceBusService("hwtest", shared_access_key_name="hwtest", shared_access_key_value="xxxxxx=")
while True:
temp1 = sense.get_temperature()
humi = sense.get_humidity()
press = sense.get_pressure()
temp= {'DeviceId': 'dev-01', 'Temperature': temp1, 'Humidity': humi}
sbs.send_event('hwtest', json.dumps(temp))
sleep(60)
调试程序让其后台运行。
四.查看数据
Raspberry Pi运行后,数据将发送到Azure的Event Hub。
在Pi上能够经过tcpdump查看是否有https的包发送:
tcpdump port 443
在Stream Analytics上能够查看事件的状况:
若是既有input又有output,说明配置正常。
在Sql客户端上查询:
Select * from hwtest1;
五.经过Excel和PowerBI对数据进行分析
目前Raspberry Pi的数据已经上传到了Event Hub,通过Stream Analytics发送到了SQL Server的表中。用户的展示能够经过Exel,PowerBI实现。
1.Exel的展示:
在Excel中选择数据,选择"自其余来源",选择"来自SQL Server"。
设置SQL Server:
选择相应的数据库和相应的表:
导入数据后,能够选择"插入",选择"数据透视图":
在进行相应的选择后,将显示数据透视图:
2.经过PowerBI实现展示
打开网站: http://powerbi.microsoft.com
下载Desktop的软件,进行安装。
在客户端软件上进行SQL的链接配置:
此时能够看到SQL中的表:
选择import:
选择相应的配置,就能够把数据以折线的形式展示出来:
至此,全部的工做结束。