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:
選擇相應的配置,就能夠把數據以折線的形式展示出來:
至此,全部的工做結束。