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

2019-08-04 08:00:00 207点赞 1648收藏 106评论

笔者将在本文中详细介绍如何通过树莓派和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的网页实时动态呈现效果,领导肯定要夸我机灵又能干,年终奖必然要翻番啊!

展开 收起
  • DIY
    话题:DIY 关注
106评论

  • 精彩
  • 最新
  • 买个温湿度计和摄像头,让摄像头对着温湿度计是不是更方便些 [狂汗] 就是看历史数据麻烦些

    校验提示文案

    提交
    攻城狮这么干会被开除的 [喷血]

    校验提示文案

    提交
    我怎么没想到?

    校验提示文案

    提交
    还有10条回复
    收起所有回复
  • 可以让python把数据写到influxdb,再用grafana显示,会更灵活一些,这样数据和服务都在本地。

    校验提示文案

    提交
    一看就是同行 [得意]

    校验提示文案

    提交
    学习了......因为公司都是Windows平台+O365,所以用了微软的方案

    校验提示文案

    提交
    还有4条回复
    收起所有回复
  • 能不能提供一下,需要所有物品的购买链接,谢谢

    校验提示文案

    提交
    我所有配件是在tb上一家叫得芯电子商城的店买的,搜这个店名就可以找到

    校验提示文案

    提交
    ?好的,非常感谢!

    校验提示文案

    提交
    收起所有回复
  • 你把自己的key暴露了

    校验提示文案

    提交
    后面的删除了

    校验提示文案

    提交
    收起所有回复
  • 请问你这个powerbi是什么版本的?我们感觉跟desktop不太一样

    校验提示文案

    提交
    这是PowerBI Online的,Desktop版本貌似没有Streaming的吧

    校验提示文案

    提交
    收起所有回复
  • 楼主,小米系的温度计多少钱?

    校验提示文案

    提交
    其实就是想利用手头设备做个小实验,学习下而已

    校验提示文案

    提交
    收起所有回复
  • 公司买得起powerbi买不起机房安防系统?

    校验提示文案

    提交
    其实就是利用手中现有设备学习一下而已,不会用作工作用途

    校验提示文案

    提交
    收起所有回复
  • 用树莓派做个智能镜子,可以对话那种,这个难不难,求大神指点

    校验提示文案

    提交
    淘宝上已经有现成的,几百块

    校验提示文案

    提交
    请告知关键字,谢谢

    校验提示文案

    提交
    还有2条回复
    收起所有回复
  • 楼主,我才发现你这篇文章有些东西是翻译的博客: 去看看

    校验提示文案

    提交
    bme280的介绍是拷贝的

    校验提示文案

    提交
    收起所有回复
  • 能接入米家或阿里APP吗?

    校验提示文案

    提交
    powerbi是有手机app的

    校验提示文案

    提交
    收起所有回复
  • 老哥 你的模块我搜了下要100?

    校验提示文案

    提交
    不会啊,一般不到30,你按销量排个续

    校验提示文案

    提交
    来个关键词 [棒棒哒]

    校验提示文案

    提交
    还有4条回复
    收起所有回复
  • 我想知道你这powerbi 是花钱买的吧?

    校验提示文案

    提交
    公司里所有账号都是o365的E3的license,都包括了power bi的免费版本,我自己还申请了pro,实在是工作需要

    校验提示文案

    提交
    web好像是要pro吧?

    校验提示文案

    提交
    收起所有回复
  • 有个问题,支持esp8266不?一个监控点一个树莓派成本很高啊。最多搞个esp32

    校验提示文案

    提交
    都可以的,其实对传感器没什么要求

    校验提示文案

    提交
    收起所有回复
  • 我是接了一个lcd直接可读数,另外直接写csv方便一点

    校验提示文案

    提交
    这样也可以

    校验提示文案

    提交
    收起所有回复
  • 可以考虑在pythonanywhere上起个Django收数据,拿echarts作脸,这样全套免费还可以随时访问?

    校验提示文案

    提交
    来个教程。树莓派有了,echarts也尝试用过,其余的influxdb,grafana就不大懂。请赐教

    校验提示文案

    提交
    你说这俩应该用不上吧?等我买个温度计然后发一篇。

    校验提示文案

    提交
    还有1条回复
    收起所有回复
  • 谢谢分享。同时推荐influxdb + grafana,开源免费而且更加灵活

    校验提示文案

    提交
  • 讲道理 还不如esphome的方案来的正常

    校验提示文案

    提交
    期待写原创教程!

    校验提示文案

    提交
    收起所有回复
  • esp8266+dht11,每个iot温湿度计约十块出头。mqtt或hass比这实现方式来的更合适吧

    校验提示文案

    提交
    我用的ESP01S,感觉板子自身发热量也蛮可观的,便宜倒是蛮便宜。

    校验提示文案

    提交
    收起所有回复
  • esp32,你值得拥有

    校验提示文案

    提交
  • 动手能力满分 [喜极而泣]

    校验提示文案

    提交
提示信息

取消
确认
评论举报

相关文章推荐

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