树莓派笔记18: Raspberry Pi+Node-Red+OneNET构建简单的物联网系统

最近在物联网领域Node-Red比较火热,Node-Red是一个基于Node.js的图形化程序开发平台,我们可以利用Node-Red快速开发IoT应用。本篇博文利用Node-Red和移动的OneNET平台建立一个简单的物联网系统,部署在树莓派上的Node-Red会读取温湿度数据并上传IoT云进行显示

1 用到哪些东西

  • 树莓派3B
  • DH11温湿度传感器模块
  • OneNET账号

2 OneNET应用配置

OneNET中国移动物联网有限公司的物联网平台,我们可以利用它作为我们的物联网云平台收集分析数据。当然目前物联网平台厂商遍地开花,也可以选择阿里、百度等平台。
首先我们去OneNET的官网(地址)注册一个账号,登录后进入开发者中心,在显示的服务中点击"多协议接入"服务进入该服务的管理中心。
树莓派笔记18: Raspberry Pi+Node-Red+OneNET构建简单的物联网系统_第1张图片点击"添加产品"来创建一个HTTP产品
树莓派笔记18: Raspberry Pi+Node-Red+OneNET构建简单的物联网系统_第2张图片在创建的新产品中继续新建一个设备,相当于新建一个访问地址,我们的传感器数据将向这个地址传送数据
树莓派笔记18: Raspberry Pi+Node-Red+OneNET构建简单的物联网系统_第3张图片在新建的设备中,打开"数据流模板"页面,我们添加humidity和temperature数据流,这样当我们以json格式({humidity:“90”,temperature:“30”})将数据发过来时,会自动匹配并存储到这两个数据流里面
树莓派笔记18: Raspberry Pi+Node-Red+OneNET构建简单的物联网系统_第4张图片为了更直观的监控数据流变化,我们可以为设备创建一个应用。在"应用管理"中创建一个新应用
树莓派笔记18: Raspberry Pi+Node-Red+OneNET构建简单的物联网系统_第5张图片在应用的图形化编辑页面中,我们可以为温度和湿度两个数据流绑定两个仪表盘,这样每当温湿度有更新时会在仪表盘中显示
树莓派笔记18: Raspberry Pi+Node-Red+OneNET构建简单的物联网系统_第6张图片至此IoT端已经配置好了,不过我们需要记下几个参数以供Node-Red访问。一个是创建的设备的API地址,在设备详情中可以看到。在Node-Red中需要访问由该地址和“datapoints?type=3”拼接成的url,这个为3的type参数的具体意思可以参考官方文档。
树莓派笔记18: Raspberry Pi+Node-Red+OneNET构建简单的物联网系统_第7张图片另一个参数是APIKey,可以点击"添加APIKey"为该设备添加独有的APIKey,或者直接使用产品的APIKey, 该key可以访问产品下所有的设备
树莓派笔记18: Raspberry Pi+Node-Red+OneNET构建简单的物联网系统_第8张图片

3 Node-Red应用开发

登录树莓派,参照Node-Red的官方文档,运行bash <(curl -sL https://raw.githubusercontent.com/node-red/raspbian-deb-package/master/resources/update-nodejs-and-nodered)执行脚本来安装Node-Red。安装完成后输入node-red运行node-red,默认的访问地址是"http://localhost:1880/",我们打开浏览器访问该地址就可以看到node-red的主界面了
树莓派笔记18: Raspberry Pi+Node-Red+OneNET构建简单的物联网系统_第9张图片然后我们从左侧的面板中拖入结点来构成一个应用。下图是我画好的上传温湿度数据的node应用
树莓派笔记18: Raspberry Pi+Node-Red+OneNET构建简单的物联网系统_第10张图片我们一个一个结点的看。timestamp是最常用的输入结点,可以用来做手动或自动触发整个数据流的启动开关,这里我把它配置成10s循环触发模式
树莓派笔记18: Raspberry Pi+Node-Red+OneNET构建简单的物联网系统_第11张图片rpi-dht11结点是一个获取DHT11或DHT22数据的专用结点,这个结点默认的结点面板是没有的,所幸在node-red社区已经有人写好该结点了,我们只需要在"Manage Palette"窗口的install页中搜索"node-red-contrib-dht-sensor"并安装就行了。在dht结点中,我们配置Sensor model为DHT11, 信号的输入引脚为7
树莓派笔记18: Raspberry Pi+Node-Red+OneNET构建简单的物联网系统_第12张图片PostParams结点是一个function结点,我们通常在这个结点中写JS代码进行一些定制化逻辑的编写。在这个结点中,我们需要提取出dht结点获取的数据中温湿度信息,然后构造新的message供后续的http结点使用,这里的api-key就是上面在OneNET中创建的设备的api-key
树莓派笔记18: Raspberry Pi+Node-Red+OneNET构建简单的物联网系统_第13张图片最后是ReportData结点,这个结点专门用来向指定地址发送http请求,这个结点的类型也需要下载,搜索"node-red-contrib-http-request"并下载,可以在function列中找到"http request"结点。在这个节点中,我们配置好在IoT平台创建好的访问地址
树莓派笔记18: Raspberry Pi+Node-Red+OneNET构建简单的物联网系统_第14张图片剩下的两个是debug结点,分别用来查看dht结点的输出和http请求的返回结果

4 监控数据流

点击node-red右上角的deploy部署并使应用生效,不过之前不要忘了将传感器模块在树莓派上接好,DHT11只有一根信号线,上面配置的是物理引脚7,我们就接到物理顺序的7号引脚。部署后点一下timestamp结点触发数据流,如果debug窗口中没有报错信息,那么node-red应用就成功运行了。
再打开OneNET中我们创建的应用,查看数据的实时变化
树莓派笔记18: Raspberry Pi+Node-Red+OneNET构建简单的物联网系统_第15张图片

你可能感兴趣的:(树莓派笔记)