树莓派+PowerBI DIY自己的温湿度IoT实时监控平台

2019-08-04 08:00:00 199点赞 1643收藏 99评论

笔者将在本文中详细介绍如何通过树莓派和Office 365的PowerBI组件打造自己的温湿度IoT实时监控平台。

【征稿活动】年度挑战赛第五期:“万物皆可DIY” !#DIY#大赛邀你来晒!本篇内容来自#DIY#征稿活动,关注话题,分享自己亲手制作的东东,挑战自我并享受其中的快乐。你DIY过哪些好物?不妨晒出来吧!欢迎参与投稿。>点击了解详情<年度挑战赛,第五期如约而至~在开题之前,小小值要带大家再感受一下挑战赛的总玩法~往下看!只要征稿内容符合我们的主题,文章热度高高高~你就会成为被活动小小值| 28 评论10 收藏88查看详情

选择这一主题是因为树莓派应该是最适合DIY的IT单品了,只要插插线,输入几行代码,就可以轻松实现一系列看似繁琐的功能。而且喜欢研究树莓派的爱好者很多,在网上可以轻易找到一系列资源,真正需要自定义的东西并不多。而PowerBI作为Office 365中的重要组件,因其在数据可视化方面的超强功能而在企业中广泛受到重视。

我要实现的功能就是一个简单的IoT场景,即实现某一特定环境的温度湿度监控,同时通过动态实时的方式将数据展现出来。这里引用百度百科,给大家简单科普一下IoT也就是“物联网”的概念。

物联网(The Internet of Things,简称IOT)是指通过 各种信息传感器、射频识别技术、全球定位系统、红外感应器、激光扫描器等各种装置与技术,实时采集任何需要监控、 连接、互动的物体或过程,采集其声、光、热、电、力学、化 学、生物、位置等各种需要的信息,通过各类可能的网络接入,实现物与物、物与人的泛在连接,实现对物品和过程的智能化感知、识别和管理。物联网是一个基于互联网、传统电信网等的信息承载体,它让所有能够被独立寻址的普通物理对象形成互联互通的网络 。


需要准备的材料

树莓派


树莓派+PowerBI DIY自己的温湿度IoT实时监控平台

淘宝上的3代树莓派开发板一个,一般是200多块钱,可以自己选择配件,比如外壳、电源、TF卡、散热风扇等等。

杜邦线/面包线

树莓派+PowerBI DIY自己的温湿度IoT实时监控平台

非必需品,只是为了测试方便,特别是树莓派上插线过多的情况。

温湿度传感器

树莓派+PowerBI DIY自己的温湿度IoT实时监控平台

树莓派上可以应用的温湿度传感器其实有不少,比如DT11,DT22,DS18B20等等,淘宝上的价格从几元到几十元不等。我这里买的是精度较高的BME280,这是一款集成温度、湿度、气压,三位一体的环境传感器。具有高精度,多功能,小尺寸等特点。DFRobot Gravity I2C BME280环境传感器采用Gravity-I2C接口设计,同时预留预留SPI接口,可以方便快捷的搭建产品原型,应用于环境监测,楼层高度检测,物联网控制等各种应用场景。Gravity I2C BME280环境传感器使用BOSCH最新MEMS微机电传感器,具备良好的稳定性。气压测量在整个温区非常稳定的,偏置温度系数±1.5 pa/k,当温度变化时,1摄氏度的温度变化导致的误差仅在12.6厘米。这种稳定性,连同其多功能的特点,使得BME280可以适用于各种应用场景。

O365/PowerBI

如果是O365的企业用户就可以直接使用了,个人用户可以去官网免费试用。

树莓派的安装

首先就是给树莓派安装操作系统,推荐直接到官网下载,下载地址。我这里下载的是标准版RASPBIAN。

树莓派+PowerBI DIY自己的温湿度IoT实时监控平台

RASPBERRY还包括完整版和轻量版,我选择下载了完整版,下载完整可以验证SHA-256保证数据完整性。

树莓派+PowerBI DIY自己的温湿度IoT实时监控平台

下面就是拿出TF卡烧录系统了,我是购买的闪迪的16GB TF卡,RASPBIAN裸系统也就2GB左右。

树莓派+PowerBI DIY自己的温湿度IoT实时监控平台

选择镜像文件,对应的读卡器所在盘符,等待写入完成。

树莓派+PowerBI DIY自己的温湿度IoT实时监控平台

然后将TF卡装到树莓派开发板中。

树莓派+PowerBI DIY自己的温湿度IoT实时监控平台

考虑到这个检测装置长期使用,我还加装了风扇。


树莓派+PowerBI DIY自己的温湿度IoT实时监控平台

连接方法可以参照下图,红线接4针脚,黑线接6针脚。

树莓派+PowerBI DIY自己的温湿度IoT实时监控平台

接好后如图。

树莓派+PowerBI DIY自己的温湿度IoT实时监控平台

另外选用了一个黑色的树莓派硬壳,将风扇用螺丝固定在外壳上,连线太长打了个结。

树莓派+PowerBI DIY自己的温湿度IoT实时监控平台

然后再将外壳扣上去,就很完美了。



树莓派+PowerBI DIY自己的温湿度IoT实时监控平台

连接传感器

下面是连接BME280的传感器,实物非常小巧。

树莓派+PowerBI DIY自己的温湿度IoT实时监控平台

按照下图的方法依次将几根不同颜色的彩线连接到树莓派的接线板上。

树莓派+PowerBI DIY自己的温湿度IoT实时监控平台

最后的结果是这样的,注意板上有几个口是同样的用途,如果树莓派上连接了多个设备,也可以酌情替换。

树莓派+PowerBI DIY自己的温湿度IoT实时监控平台

树莓派的基本配置

可以通过树莓派的HDMI口连接显示器,树莓派有图形化系统,使用很方便。

可以通过Putty以SSH的方式连接22端口,实现远程。

树莓派+PowerBI DIY自己的温湿度IoT实时监控平台

我的习惯,先安装VNC,然后再远程实现控制。具体方法这里就不赘述了,请自行百度。

树莓派+PowerBI DIY自己的温湿度IoT实时监控平台

这里要用到GPIO口的I2C,这里简单介绍一下I2C。

I2C总线是由Philips公司开发的一种简单、双向二线制同步串行总线。它只需要两根线即可在连接于总线上的器件之间传送信息。主器件用于启动总线传送数据,并产生时钟以开放传送的器件,此时任何被寻址的器件均被认为是从器件.在总线上主和从、发和收的关系不是恒定的,而取决于此时数据传送方向:如果主机要发送数据给从器件,则主机首先寻址从器件,然后主动发送数据至从器件,最后由主机终止数据传送;如果主机要接收从器件的数据,则主机器件寻址从器件.然后主机接收从器件发送的数据,最后由主机终止接收过程。在这种情况下,主机主要是负责产生定时时钟和终止数据传送。

首先就开启I2C口。

命令行界面输入以下命令。

sudo raspi-config

按照下列截图依次进入选项。

树莓派+PowerBI DIY自己的温湿度IoT实时监控平台


树莓派+PowerBI DIY自己的温湿度IoT实时监控平台

回车开启ARM I2C口。

树莓派+PowerBI DIY自己的温湿度IoT实时监控平台

输入命令检查I2C是否已被开启:可见红框中圈出的位置说明已被开启

lsmod

树莓派+PowerBI DIY自己的温湿度IoT实时监控平台

然后输入以下命令安装工具查看设备是否正常连接。

sudo apt-get install i2c-tools

sudo i2cdetect -y 1

树莓派+PowerBI DIY自己的温湿度IoT实时监控平台

如此说明传感器已经正确连接。

树莓派+PowerBI DIY自己的温湿度IoT实时监控平台

通过wget的方法下载bme280的Python程序:

wget -0 bme280.py http://bit.ly/bme280py

树莓派+PowerBI DIY自己的温湿度IoT实时监控平台

为了给大家看清楚代码,我用文本编辑器打开。

可以看到默认的端口地址是0x76,这里要按照之前的结果改为0x77

树莓派+PowerBI DIY自己的温湿度IoT实时监控平台

尝试运行一下这个Python程序,可以看到能够正确获取到温度、湿度和气压的数据了。

树莓派+PowerBI DIY自己的温湿度IoT实时监控平台

上传数据到PowerBI

数据已经拿到了,随后就是考虑如何上传到Power BI中动态显示了。

首先下载这一代码,这里是通过DT22传感器获取数据上传到Power BI,将代码稍加改动即可。

树莓派+PowerBI DIY自己的温湿度IoT实时监控平台

下面演示一下如何获取Power BI中的API。

登录Power BI的网页界面,然后选择Streaming Datasets

树莓派+PowerBI DIY自己的温湿度IoT实时监控平台

选择右上角新建New streaming dataset -> API

树莓派+PowerBI DIY自己的温湿度IoT实时监控平台

然后,输入以下信息:

需要以下数值:timestamp显示当前日期时间,temperature显示温度,pressure显示大气压,humidity显示湿度,后三个都是数值型数据。

树莓派+PowerBI DIY自己的温湿度IoT实时监控平台

创建完成后会有一个推送的Push URL,格式见下图。

树莓派+PowerBI DIY自己的温湿度IoT实时监控平台

之后我们给它添加定制化的动态显示效果。



树莓派+PowerBI DIY自己的温湿度IoT实时监控平台

这里选择Line chart,也就是最简单的折线图。

横轴就是我们的时间戳timestamp,纵轴是大气压。重复这一操作添加二张折线图分别显示温度和湿度。

树莓派+PowerBI DIY自己的温湿度IoT实时监控平台

我们来看看之前下载的代码,分类说明一下:

import bme280

import urllib, urllib2, time

from datetime import datetime

# REST API endpoint, given to you when you create an API streaming dataset

# Will be of the format: https://api.powerbi.com/beta//datasets/< dataset id>/rows?key=

REST_API_URL = "https://api.powerbi.com/beta/5d2d3f03-286e-4643-8f5b-10565608e5f8/datasets/885bc12f-ce3f-412b-8fcf-587d06468653/rows?key=FPYnCSWcE3Wt4neoA24GGQQWHUH%2F2aVa7KwaRo5CM9vc9b76C7bX3M"

# Gather temperature and sensor data and push to Power BI REST API

while True:

try:

# read and print out humidity and temperature from sensor

temperature,pressure,humidity = bme280.readBME280All()

# ensure that timestamp string is formatted properly

now = datetime.strftime(datetime.now(), "%Y-%m-%dT%H:%M:%S%Z")

# data that we're sending to Power BI REST API

data = '[{{ "timestamp": "{0}", "temperature": "{1:0.1f}", "pressure": "{2:0.1f}", "humidity": "{3:0.1f}" }}]'.format(now, temperature, pressure, humidity)

# make HTTP POST request to Power BI REST API

req = urllib2.Request(REST_API_URL, data)

response = urllib2.urlopen(req)

print("POST request to Power BI with data:{0}".format(data))

print("Response: HTTP {0} {1}n".format(response.getcode(), response.read()))

time.sleep(1)

except urllib2.HTTPError as e:

print("HTTP Error: {0} - {1}".format(e.code, e.reason))

except urllib2.URLError as e:

print("URL Error: {0}".format(e.reason))

except Exception as e:

print("General Exception: {0}".format(e))

关键就是REST_API_URL要改成自己之前创建的DataSet的API地址。随后代码就可以利用Python中的urllib2类向API发送数据。

运行python之后如果发觉HTTP返回的数值是200,这就说明发送成功了,如图:

树莓派+PowerBI DIY自己的温湿度IoT实时监控平台

回到PowerBI的网页上,就可以看到实时显示温湿度气压的效果。我们办公室里的环境还是非常适宜的,温度非常稳定。

树莓派+PowerBI DIY自己的温湿度IoT实时监控平台

动态呈现的效果大概是这样的:

树莓派+PowerBI DIY自己的温湿度IoT实时监控平台

为了防止断电或者操作系统意外,我需要将这个Python程序设置为自动运行,方法可以参见我之前的文章最后的内容。此外还可以增加其他定制内容,比如温度湿度异常的时候通过邮件通知等等。

利用Python+OpenCV在树莓派上轻松实现人脸识别小编注:想获得更多专属福利吗?金币加成、尊享众测、专属勋章、达人福利任务你想要吗?如果想要,赶紧来申请认证站内生活家!猛击此链接上次在什么值得买发布了一篇关于人工智能认知服务的初级文章,是关于如何利用微软的云平台打造自己的QnA/FAQ自动应答聊天机器人,其实实现功能还是挺简单,如果对于流程熟悉的话LifeIsKillingMe| 33 评论16 收藏308查看详情


如果我将这个树莓派带到机房里,就可以实时监测机房里的环境情况;然后我放个大显示屏在机房外面,打开PowerBI的网页实时动态呈现效果,领导肯定要夸我机灵又能干,年终奖必然要翻番啊!

展开 收起

公牛迷你插座两脚小型插排正品多孔面板排查多用功能拖线板便携插头家用插线板电源延长线二插带线插板接线板

公牛迷你插座两脚小型插排正品多孔面板排查多用功能拖线板便携插头家用插线板电源延长线二插带线插板接线板

17.9元起

小米(MI) 米家显示器挂灯 充电台灯护眼灯 学习学生屏幕挂灯灯管 米家显示器挂灯

小米(MI) 米家显示器挂灯 充电台灯护眼灯 学习学生屏幕挂灯灯管 米家显示器挂灯

119元起

EZVIZ 萤石 C6CN 1080P云台网络摄像头 标准版

EZVIZ 萤石 C6CN 1080P云台网络摄像头 标准版

132元起

MIJIA 米家 1S 智能台灯

MIJIA 米家 1S 智能台灯

89.5元起

MI 小米 米家 智能多模网关

MI 小米 米家 智能多模网关

129元起

MIJIA 米家 LYWSD03MMC 米家蓝牙温湿度计2 白色

MIJIA 米家 LYWSD03MMC 米家蓝牙温湿度计2 白色

19.9元起

华为智选 DL-27W Pro 智能台灯2 白色

华为智选 DL-27W Pro 智能台灯2 白色

91.5元起

MI 小米 小米体重秤 2

MI 小米 小米体重秤 2

44.71元起

小米米家 智能插座2 蓝牙网关版

小米米家 智能插座2 蓝牙网关版

49元起

小米 米家智能LED卧室吸顶灯450 圆形客厅卧室灯现代简约书房餐厅灯智能控制 45W

小米 米家智能LED卧室吸顶灯450 圆形客厅卧室灯现代简约书房餐厅灯智能控制 45W

249元起

MI 小米 智能摄像机 云台版pro

MI 小米 智能摄像机 云台版pro

175元起

华为智选 读写台灯 智能灯 白色

华为智选 读写台灯 智能灯 白色

91.5元起

小米 1.5寸米家蓝牙温湿度计 白色

小米 1.5寸米家蓝牙温湿度计 白色

19.8元起

MIJIA 米家 自动洗手机 标配版

MIJIA 米家 自动洗手机 标配版

35.25元起

MI 小米 米家智能摄像机 云台版 1080P

MI 小米 米家智能摄像机 云台版 1080P

139元起

MI 小米 电子温湿度计 Pro

MI 小米 电子温湿度计 Pro

50元起
99评论

发表评论请 登录
  • 最新
  • 最热
评论举报

请选择举报理由

相关好价推荐
查看更多好价

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
1.6K
扫一下,分享更方便,购买更轻松