20元+20行JS,体验物联网设备开发—家庭环境监测站DIY

匿名用户 2018-07-24 19:00:16 23点赞 153收藏 10评论

头图是在网上随意找的...并不是成品...成品如下~

少啰嗦,先看东西

图表图表

20元+20行JS,体验物联网设备开发—家庭环境监测站DIY

〇、 准备清单

开发版

这里我选择的是一款叫做 NodeMCU 的开发版。这个是非常好用方便且便宜的物联网开发板,自带 USB 转串口芯片、WiFi 及多个 GPIO 接口,可连接多个传感器。硬件基于 ESP8266 构建,内置 WiFi 支持。

nodemcu_淘宝搜索s.taobao.com去看看

传感器

传感器方面因为我对精度要求不是很高,所以选择了一款廉价的温湿度传感器——DHT11。这是一款温湿度传感器,可以用来测试环境温湿度。其精度湿度+-5%RH, 温度+-2℃,量程湿度20-90%RH, 温度0~50℃。


dht11_淘宝搜索s.taobao.com去看看

云平台准备

云平台选择

我的目的是要将数据报到云端,然后做个展示,当然你也可以自行搭建 MQTT Broker 及数据存储、展示部分。这里我就方便些,选择一个提供物联网平台的云服务了。

在评估了百度天工物联网平台、阿里物联网套件、腾讯 IoT 套件后,决定选择百度天工。主要是两个方面的考虑:

  • 百度天工支持标准的 MQTT 接入

  • 存储的过程无需编码

  • 提供现成的可视化报表制作工具

不过也有一些问题,但是也算瑕不掩瑜吧:提供了物接入和物管理两个接入入口,但实际上物接入是裸协议,物管理会方便很多;日志查询交互有点反人类,默认进去无内容,需要点一下搜索才出来,排查的时候以为没有报日志上来。

云平台操作

1. 注册百度云天工账号并认证 天工-物联网平台 在左侧「产品服务」-「物联网服务」中,选择「物接入」,购买一个月的套餐(根据情况选择消息条数,因为我上报的数据比较多,所以我这里选了200万条)。 随后,在左侧菜单选择「物管理」。进入物管理后,点击「新建物模型」。 填写「名称」、「添加属性」。这里的属性就是我们需要采集的上报的信息,所以这里我加了两个属性:

  • Temperature 温度 number类型

  • Humidity 湿度 number类型

20元+20行JS,体验物联网设备开发—家庭环境监测站DIY

2. 创建完物模型,接下来创建物影子。名称自定义即可,这个在后面会用到。来自的物模型选择刚才创建的模型,点击创建即可完成。创建完成后,获取连接信息备用(连接信息中,key 是仅在生成后显示一次的)。

20元+20行JS,体验物联网设备开发—家庭环境监测站DIY

至此,准备工作告一段落。后面存储的部分(时序数据库 TSDB)可在这一步骤开启,也可连通之后再开启。

一、 开发版系统选择

这款开发版可支持多种操作系统,如 NodeMCU(lua)、ESPEasy(WebUI)、MicroPython,以及我们今天要使用的 Mongoose OS(NodeJS)。

不管是以上哪个固件,都可以跑通 MQTT。如在百度天工文档中,NodeMCU 固件下的 lua 版本NodeMCU

因为 Mongoose OS 刷系统不需要借助第三方工具,有一个 web 的控制台可以便于管理及调试,所以为了方便,我这次就选择了 Mongoose OS 的固件。

二、 接线

将传感器与板子之间使用杜邦线连接起来。DHT11 一般包含3个接头,但根据生产商不同,标注和顺序有所不同,接线时请查看模块上的标注。我手上这颗是按如下顺序标注的:

  • VCC(+、3.3v等)

  • DATA(D、S、SIG 等)

  • GND(-、G 等)

VCC 和 GND 可与板子上对应标注位连接;DATA 接到 GPIO 口即可。因为 D4距离较近,于是 GPIO 口我就选了 D4 。

接线如图:

20元+20行JS,体验物联网设备开发—家庭环境监测站DIY


实物图:

20元+20行JS,体验物联网设备开发—家庭环境监测站DIY


三、 刷系统

安装驱动

淘宝上可买到的 NodeMCU,所集成的 USB 转串口的芯片一般有 CP2102 和 CH340 两种,驱动下载地址分别为:CP2102 CH-340

安装系统

随后,我们要下载 Mongoose OS。根据你的操作系统,在 MongooseOS 官网 选择对应方式进行安装。

我的是 macOS,所以直接使用以下命令安装。

curl -fsSL https://mongoose-os.com/downloads/mos/install.sh | /bin/bash

~/.mos/bin/mos --help

~/.mos/bin/mos

安装完成后,就会自动打开浏览器。这时候你会看到引导界面。

如果没有启动,可输入 cd .mos/bin/ 或者进入自定义的安装目录,执行 ./mos 来运行管理界面。(Windows 用户直接双击即可)

20元+20行JS,体验物联网设备开发—家庭环境监测站DIY

接下来是烧录固件。将板子用 Micro-USB 的数据线与电脑连接,在引导界面,选择板子对应的接口,点击 Select。

平台会默认选择(ESP8266),App 的部分我选择了 demo-js,后面我会在这个 App 基础上进行改动以将数据采集并上报。

WiFi 的部分填写你希望板子连接到的热点(注意:仅支持2.4G)。随后点击 Done 即可,这时板子上指示灯会以较快频率闪动。

四、 采集并上报数据

烧录完成后,即可在浏览器中看到代码编辑界面。系统启动后会执行init.js ,我们的代码足够少,所以这里我们就全部写到此文件。

20元+20行JS,体验物联网设备开发—家庭环境监测站DIY

代码如下

其中

  • pin 是按 ESP8266 的编号,我们上面接线的 D4 对应 ESP8266 2 号 GPIO 口,所以这里填的2。

  • $baidu/iot/shadow/xxxxxxxxxxx/update 中的 xxxxxxxxxxx 替换为你在前面百度天工中创建的物影子名称。

load('api_dht.js');

load('api_mqtt.js');

load('api_timer.js');


// GPIO pin which has a DHT sensor data wire connected

let pin = 2;


// Initialize DHT library

let dht = DHT.create(pin, DHT.DHT11);


// This function reads data from the DHT sensor every 10 second

Timer.set(10000 /* milliseconds */, Timer.REPEAT, function() {

let t = dht.getTemp();

let h = dht.getHumidity();


if (isNaN(h) || isNaN(t)) {

print('Failed to read data from sensor');

return;

}

let data = {"reported":{ temperature:t, humidity:h }};

let myData = JSON.stringify(data);

let ok = MQTT.pub("$baidu/iot/shadow/xxxxxxxxxxx/update", myData, 1);

print('Published:', ok ? 'yes' : 'no', ',message:', myData);

print('Temperature:', t, '*C');

print('Humidity:', h, '%');

}, null);

你一定会好奇,前面的连接信息哪里去了。在 MongooseOS 里,MQTT 的连接信息是写在配置文件的。

点击 MongooseOS 浏览器界面左侧的 DeviceConf ,可看到 MQTT 配置界面。将前面的连接信息填写进来,点击左上角的 Save 即可

20元+20行JS,体验物联网设备开发—家庭环境监测站DIY

再回到 Projects 的代码编写界面,点击那个长得像上传的图标(如图),保存文件并传输到板子上重启。

20元+20行JS,体验物联网设备开发—家庭环境监测站DIY


这时,你就可以看到 Logs 里在打印温湿度信息,并显示上报成功(Yes)。如果为 no,可以配合本地 Log 及天工里「平台通用功能」-「日志」进行错误排查。

传输成功后,在天工「物影子详情」页面上就可以看到刚刚上报的数据了。

20元+20行JS,体验物联网设备开发—家庭环境监测站DIY

至此,就完成了数据采集到上报的全过程。

等一哈...一开始的第二张图不是有个"好看"的图么,难道也和头图一样是假的?

当然不是。接下来的部分不需要写代码了,直接在云平台上配置即可。

五、 数据存储

我展示的图表里,有实时值和折线图。其中折线图是过去一段时间的历史数据。所以,我们需要将数据存下来。在一开始,我想着把数据存到 MySQL 或者 MongoDB,在看了一些物联网平台,尤其是百度这个天工之后,发现「时序数据库 TSDB」是一个更好的选择。

随后发现,在天工里,我们上报到物影子的数据,如果需要简单存储到 TSDB,压根不用写代码。不过如果需要复杂的逻辑处理,好像还是要写代码,或者用一个叫规则引擎的服务。

扯远了,这次我们要存的东西比较简单,所以就用现成的功能了。在「物详情」页面(之前获取连接信息那有图),点击编辑,开启「存储配置」,把「不存储」改成「上报即存储」,选择需要存到哪个数据库(没有的话先创建个,默认配置就够用),度量名称填写 monitor ,点击保存即可。

20元+20行JS,体验物联网设备开发—家庭环境监测站DIY

这样存储的部分就配置好了,每次上报的数据,都会自动给存到 TSDB 里。可以在左侧导航选择「时序数据库」,点对应数据库的「查询面板」查看存进去的历史数据了。

六、 做个好看的报表

数据存好了,接下来就是展示出来。

同样的,继续使用天工的一个叫「物可视」的功能。这也是我选用百度这套平台的主要原因之一。

这个功能的引导略少,我是看文档才了解怎么用,会了之后发现超级超级简单方便。

我以做一张我截图那种报表为例,来大概说一下步骤:

  1. 首先进到物可视,点创建「仪表盘」

  2. 进入后,顶上有俩标签,选择「数据表」

  3. 左侧新建数据表,因为我有俩仪表指针图和一个时序折线图,所以这一步我要创建两个数据表,一个时序数据库类型,一个物管理类型

  4. 创建完后,返回「仪表盘」。将需要的图拖动到空白处,点对应的图,右侧设置一下绑定数据,如下图

20元+20行JS,体验物联网设备开发—家庭环境监测站DIY

另外,在仪表盘列表页面,可以将创建好的图表分享出来或 copy 代码来直接放到自己的项目里。例如

这里介绍了一小部分功能,需要展示更多的部分,可以再看看文档。

结束

至此,整个搭建到展示的过程完成。

一共花费为 20 元 = (NodeMCU板 14.5 元)+ (DHT11传感器 4.5元) + (时序数据库 1 元)

这是套最基础的温湿度采集上报系统,我主要用于学习物联网设备的开发模型,同时丢家里监测下环境。在此基础上,也可以做一些梗复杂的事情。比如加个红外,当温湿度到指定阈值,就触发开关空调;做个手机 App 或微信小程序,控制板子上的红外遥控……

场景还是很多的,就不一一引申了。

展开 收起

贝德弗3D人脸识别智能锁门锁全自动家用防盗门指纹锁指静脉电子猫眼密码锁 ME21B典雅黑 大屏猫眼版

贝德弗3D人脸识别智能锁门锁全自动家用防盗门指纹锁指静脉电子猫眼密码锁 ME21B典雅黑 大屏猫眼版

599元起

领普科技小米IOT联动触控智能开关QT 超薄AG玻璃触控按键震动 零火单键灰 QT1零火单键灰

领普科技小米IOT联动触控智能开关QT 超薄AG玻璃触控按键震动 零火单键灰 QT1零火单键灰

暂无报价

际工米家通断器小爱同学语音wifi手机智能开关灯情景蓝牙mesh控制模块 10A米家Mesh通断器1个

际工米家通断器小爱同学语音wifi手机智能开关灯情景蓝牙mesh控制模块 10A米家Mesh通断器1个

39元起

眼爸爸 Read7国AA级儿童护眼台灯智能台灯学习护眼台灯中小学习卧室读写台灯 远程操控 YB-read7白色 远程遥控

眼爸爸 Read7国AA级儿童护眼台灯智能台灯学习护眼台灯中小学习卧室读写台灯 远程操控 YB-read7白色 远程遥控

569元起

usp/国际电工 国际电工(USP)已接入米家智能通断器小爱同学控制模块蓝牙mesh连接支持凌动开关 蓝牙Mesh通断器

usp/国际电工 国际电工(USP)已接入米家智能通断器小爱同学控制模块蓝牙mesh连接支持凌动开关 蓝牙Mesh通断器

29.8元起

小米米家床头灯2+巨能写1支套装 智能台灯 卧室炫彩柔光小夜灯 通体发光多种语音控制

小米米家床头灯2+巨能写1支套装 智能台灯 卧室炫彩柔光小夜灯 通体发光多种语音控制

169元起

领普接入米.家智能开关E2自定义文字远程无线手机控制多功能家用开关 【零火双开】灰色

领普接入米.家智能开关E2自定义文字远程无线手机控制多功能家用开关 【零火双开】灰色

189元起

linptech 领普 键盘

linptech 领普 键盘

暂无报价

HOPE 向往C10背景音乐主机系统套装 吸顶天花吊顶喇叭音箱 米家智能家居 米家音响 C10【10寸屏】单主机

HOPE 向往C10背景音乐主机系统套装 吸顶天花吊顶喇叭音箱 米家智能家居 米家音响 C10【10寸屏】单主机

1919元起

SONOFF NSPanel智能开关面板智能家居控制中心远程控制小爱小度语音控制 NSPanel-EU羌色(零火线)

SONOFF NSPanel智能开关面板智能家居控制中心远程控制小爱小度语音控制 NSPanel-EU羌色(零火线)

299元起

linptech压力有无传感器 可接入米家

linptech压力有无传感器 可接入米家

98.99元起

360 电子锁

360 电子锁

1999元起

卡萨帝(Casarte)掌静脉人脸识别带可视猫眼密码锁入户门带摄像头指纹锁电子锁智能门锁CFA-X70-CAU1罗曼金

卡萨帝(Casarte)掌静脉人脸识别带可视猫眼密码锁入户门带摄像头指纹锁电子锁智能门锁CFA-X70-CAU1罗曼金

6009元起

米家led智能调光驱动控制器电源小爱语音控制无极调色吸顶灯改造 12-24W*2 蓝牙Mesh版 支持灵动

米家led智能调光驱动控制器电源小爱语音控制无极调色吸顶灯改造 12-24W*2 蓝牙Mesh版 支持灵动

48元起

龙代(longdai)磁力锁 磁吸锁12V电磁锁门禁锁 明装双门款-280kg拉力

龙代(longdai)磁力锁 磁吸锁12V电磁锁门禁锁 明装双门款-280kg拉力

213.8元起

linptech 领普 WD2 智能平开窗推窗器 锂电版

linptech 领普 WD2 智能平开窗推窗器 锂电版

299元起
10评论

  • 精彩
  • 最新
提示信息

取消
确认
评论举报

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

相关文章推荐

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