氦氪云入门教程03-使用氦氪透传协议的温湿度计-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 6696|回复: 0

氦氪云入门教程03-使用氦氪透传协议的温湿度计

[复制链接]
发表于 2017-8-8 17:09 | 显示全部楼层 |阅读模式
本帖最后由 lawrencedon 于 2017-8-8 17:41 编辑

上一篇教程我们介绍了如何基于氦氪通用演示产品制作一个具体的作品,但是那个作品并没有涉及到我们氦氪控制台的操作和设备控制页面的编写。本次的教程我们会制作一个和上一篇教程中的作品功能相同的作品,但是需要我们自己在氦氪控制台上设计产品通信协议和编写设备控制页面(HTML5)。

我们氦氪控制台的网址是http://console.hekr.me/ ,请先注册一个账号,然后登录之后,申请开通个人开发者权限,申请之后一般24小时内会有审核结果,如超过24小时没有结果,请到我们的官方QQ群:氦氪智能硬件云 102738520 找管理员处理。

作品功能:
APP端:
1.控制小夜灯的亮灭。
2.显示设备端侦测到的温度和湿度。

设备端:
1.按钮控制小夜灯的亮灭。
2.每隔30分钟上报一次当前设备状态,包括小夜灯的亮灭,温度和湿度。

所需硬件:
1.氦氪WiFi模块
142206klcdarin1zalbp11.jpg

氦氪WiFi模块的接线请参考文档氦氪模块硬件说明文档

2.Arduino UNO
这里就不贴照片了,使用其他型号的Arduino板子也行,我自己用的是兼容Arduino UNO的板子。

3.DHT22温湿度传感器
142145zneeh2ecp2qpvyq5.jpg

4.RGB全彩LED
142150e2l9fpdudbjyyvfk.jpg

5.按钮
142154tyl3mnm0nm3w2ggm.jpg

硬件接线说明:
214918for2tot4l11no44o.png

第1步,在控制台中建立产品。
215502lscpqkkgccbs4s2v.png
点击主页面右下角的 215838njqarccoq5cawjwa.png ,添加新产品。
235249w7d64nod46g4gnkk.png
235427g6dz0y7trjw4zr5n.png
235432ame68ohuralf8hvq.png

点击完成之后,在主页面可以看到一个新的产品。
235617ykfabkf39e7qd7ke.png
点击右上角的 000623gg1gkmhig1mbf0wk.png 可以查看该产品的prodKey,prodKey即产品密钥,是该产品的唯一标识,请务必妥善保管产品密钥,不要外泄。这个prodKey可以透过串口发送给氦氪WiFi模块。
000506v7kheyv6ykbukboh.png
提醒一下,在产品还没有设计和测试完毕的情况下,请不要点击“发布”按钮,一旦发布将禁止对该产品的任何修改。

第2步,根据产品功能在控制台中设计产品通信协议。
012005wuuubel5jd1bjmnx.png
据该作品功能,我们来设计通信协议:
参数:代表设备有哪些属性,本作品的设备属性包括温度,湿度,小夜灯的开关状态。
点击页面右下角的 013457s4a0bgl4na1gbnij.png ,在弹出的菜单 012841sbh9pxpx9tpqddop.png 中点击添加参数图标。
建立参数temperature:
013945e0cpzpciokzpzcca.png
这里我们没有直接用摄氏度,而是用了开氏温度,用摄氏度会涉及到负数的问题。我们上传的参数数据长度大部分都是低于8字节的,云端会把该数据作为长度为8字节的有符号long int类型存储,所以我们上传的参数数据长度小于8字节时,都会被认为是无符号的整数。因此当接入协议是“JSON透传协议”,参数类型为NUMBER时,我们需要使用一些技巧处理小数和负数:
1.小数处理,数据上传的时候乘以一个倍数,前端页面处理的时候除以这个倍数。
2.负数处理,数据上传的时候加上一个常量,使其变为正整数,前端页面处理的时候减去这个常量。

建立参数humidity
020303ohz9uidn0dhhnb0y.png

建立参数ledPower:
020339ebb2vuv9wdvgvmnw.png

命令:命令分为上报和下发两种,上报是指设备发起的,云端收到设备上报的数据,然后转发给在线的APP。下发是指APP发起的,云端收到APP下发的数据,然后转发给在线的设备。
          每个命令都有一个唯一的ID标识,每个命令可以涉及0个或者若干个参数。
          本作品我们设计三个命令:
          1.ID为0,查询当前设备的状态,类型为下发,不涉及任何参数。
          2.ID为1,控制小夜灯开关,类型为下发,涉及参数包括小夜灯的开关状态。
          3.ID为2,上报当前设备的状态,类型为上报,涉及参数包括温度,湿度,小夜灯的开关状态。
点击页面右下角的 022808zjrv7rjnv9jnupyn.png ,在弹出的菜单 022824vd5zi72lfda9s7ww.png 中点击添加命令图标。
建立命令QueryStatus:
020559k8hr7q3zo95b000l.png
建立命令Power:
020809mldbzgwb55dax9ee.png
022526kvx26ws8osydydsy.png
建立命令ReportStatus
020917t0xgeqxztzqethod.png

这样我们的通信协议就设计完毕了。

022911nk9k2ggwgt2yltyk.png
点击页面右下方的"协议文档"可以查看根据我们刚才的设定自动生成的产品通信协议,更多关于氦氪透传协议的信息请查看文档HEKR模块串口透传协议
点击页面右下方的"导出协议",可以将通信协议复制出来,使用 023843x0abaa9va001i58a.png 导入协议”功能,可以将通信协议导入到当前的产品中,需要注意的是导入协议将会删除原有协议。
023634f0jihhadal00hlza.png

第3步,根据产品通信协议编写控制页面代码(HTML5),并上传至控制台。
为了让更多的初学者能够看懂和方便修改,我们使用了尽可能简单和少量的HTML/CSS/JS语句来编写设备控制页面。这里就不贴代码了,遇到看不懂的地方,可以在我们的官方QQ群里提问。

设备控制页面代码: 带小夜灯的温湿度计20161214-OK.zip (31.46 KB, 下载次数: 32)
025651dlib9t3nzzhd894d.png
在“页面管理”中点击右下角的 025839isi323frjpu9jfs3.png ,添加新页面。
选择需要上传的包含有控制页面的zip压缩包,请特别注意,该压缩包解压之后,根目录中必须有index.html文件,当根目录包含index.html,启用页面仍然失败的话,请换一种压缩工具打包试试看,我自己使用的是7-Zip或者360压缩。
030020mkmwjjubxfbgbvv2.png
点击 031020dd7vwn2vda3zrudd.png 按钮启用该设备控制页面。
030851jbnzozu18nxbwx8q.png
过个3分钟左右,刷新下页面,会发现该设备控制页面已经正在使用了。
031119m7zb7b9x9b9ds19w.png

第4步,在控制台使用虚拟设备进行调试。
031721a79trszt3sogxrto.png
点击页面下方的“启动设备”,虚拟设备就会启动,你在我们的丛云APP上用氦氪控制台的账号登录之后,就可以看到这个虚拟设备了,点击设备,可以看到我们在第3步上传的设备控制页面。
033301mj1ox7ienjj7nxee.png
A区显示当前设备状态,这里会列出产品的所有参数,当在设备控制页面下发的命令中修改了某参数值的时候,这里对应的参数值才会改变。如下图所示,在设备控制页面点击"小夜灯"按钮时,会下发命令改变参数ledPower的值。
041924ql121p82lw60d0pd.png
B区显示虚拟设备,云端,APP三者之间的数据交互过程,可以结合阅读文档 基础通信API 来更好的理解这个过程。
我们可以在B区上方的“信息筛选”中将heartbeat的勾选取消掉,一般情况下我们不太需要看到这个数据。
040234a36l5mp9fp3d3fmp.png
C区可以模拟设备使用上报类型的命令向云端发送数据,在这里发送命令,设备控制页面上的数据会变化,如下图所示,模拟设备上报了当前的状态,小夜灯开,温度293开氏度(20摄氏度),湿度50%,可以看到在设备控制页面上对应的状态都有改变。
035740j1g99rqt1mel66r6.png
D区默认是空白的,需要点开"APP页面"去选择我们上传并成功启用的设备控制页面。
040909a8hp8h0p88ldlp88.png
040919dmtm1o3nmtm1etm1.png
选择"手机调试"会显示一个二维码,可以通过扫描这个二维码下载我们的丛云APP。
041400jk0mmjk02j7m0ih8.png

第5步,根据产品通信协议编写单片机代码。
本作品的单片机,我选择的是Arduino,程序写的比较简单明了,这里就不贴代码了,遇到看不懂的地方,可以在我们的官方QQ群里提问。
Arduino端代码 hygrothermograph.zip (1.38 KB, 下载次数: 19)

第6步,将本作品的prodKey写到氦氪WiFi模块。
根据文档HEKR模块串口透传协议 4.3.1 ProdKey设置将prodKey写入氦氪WiFi模块。如果WiFi模块中之前有写入过prodKey,而且你在丛云APP中绑定过这个模块,那在写入新的prodKey之后,请在丛云APP里将prodKey为旧值的设备删掉,然后使模块进入配网模式,重新在丛云APP里添加设备。

第7步,组装硬件,实际设备测试。
将Arduino端的程序编译完毕并上传至Arduino UNO之后,把所有硬件模块按照前文中提到的硬件接线说明连接起来,使氦氪WiFi模块进入配网模式,用丛云APP添加设备,在设备控制页面可以看到当前设备端侦测到的温度和湿度,并可以控制小夜灯。在设备上开关小夜灯,设备控制页面上的小夜灯开关指示会随之改变。




您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-12-1 00:17 , Processed in 0.150295 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表