极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 26077|回复: 0

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

[复制链接]
发表于 2017-1-6 20:29:29 | 显示全部楼层 |阅读模式
本帖最后由 MakerBingo 于 2017-8-8 15:12 编辑

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

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

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

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

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


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

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

3.DHT22温湿度传感器


4.RGB全彩LED


5.按钮


硬件接线说明:


第1步,在控制台中建立产品。

点击主页面右下角的 ,添加新产品。




点击完成之后,在主页面可以看到一个新的产品。

点击右上角的 可以查看该产品的prodKey,prodKey即产品密钥,是该产品的唯一标识,请务必妥善保管产品密钥,不要外泄。这个prodKey可以透过串口发送给氦氪WiFi模块。

提醒一下,在产品还没有设计和测试完毕的情况下,请不要点击“发布”按钮,一旦发布将禁止对该产品的任何修改。

第2步,根据产品功能在控制台中设计产品通信协议。


据该作品功能,我们来设计通信协议:
参数:代表设备有哪些属性,本作品的设备属性包括温度,湿度,小夜灯的开关状态。
点击页面右下角的 ,在弹出的菜单 中点击添加参数图标。

建立参数temperature:

这里我们没有直接用摄氏度,而是用了开氏温度,用摄氏度会涉及到负数的问题。我们上传的参数数据长度大部分都是低于8字节的,云端会把该数据作为长度为8字节的有符号long int类型存储,所以我们上传的参数数据长度小于8字节时,都会被认为是无符号的整数。因此当接入协议是“JSON透传协议”,参数类型为NUMBER时,我们需要使用一些技巧处理小数和负数:
1.小数处理,数据上传的时候乘以一个倍数,前端页面处理的时候除以这个倍数。
2.负数处理,数据上传的时候加上一个常量,使其变为正整数,前端页面处理的时候减去这个常量。

建立参数humidity

建立参数ledPower:


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

建立命令Power:


建立命令ReportStatus


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

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

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

设备控制页面代码:


在“页面管理”中点击右下角的 ,添加新页面。
选择需要上传的包含有控制页面的zip压缩包,请特别注意,该压缩包解压之后,根目录中必须有index.html文件,当根目录包含index.html,启用页面仍然失败的话,请换一种压缩工具打包试试看,我自己使用的是7-Zip或者360压缩。

点击 按钮启用该设备控制页面。

过个3分钟左右,刷新下页面,会发现该设备控制页面已经正在使用了。

第4步,在控制台使用虚拟设备进行调试。

点击页面下方的“启动设备”,虚拟设备就会启动,你在我们的丛云APP上用氦氪控制台的账号登录之后,就可以看到这个虚拟设备了,点击设备,可以看到我们在第3步上传的设备控制页面。

A区显示当前设备状态,这里会列出产品的所有参数,当在设备控制页面下发的命令中修改了某参数值的时候,这里对应的参数值才会改变。如下图所示,在设备控制页面点击"小夜灯"按钮时,会下发命令改变参数ledPower的值。

B区显示虚拟设备,云端,APP三者之间的数据交互过程,可以结合阅读文档 基础通信API 来更好的理解这个过程。
我们可以在B区上方的“信息筛选”中将heartbeat的勾选取消掉,一般情况下我们不太需要看到这个数据。

C区可以模拟设备使用上报类型的命令向云端发送数据,在这里发送命令,设备控制页面上的数据会变化,如下图所示,模拟设备上报了当前的状态,小夜灯开,温度293开氏度(20摄氏度),湿度50%,可以看到在设备控制页面上对应的状态都有改变。

D区默认是空白的,需要点开"APP页面"去选择我们上传并成功启用的设备控制页面。


选择"手机调试"会显示一个二维码,可以通过扫描这个二维码下载我们的丛云APP。

第5步,根据产品通信协议编写单片机代码。
本作品的单片机,我选择的是Arduino,程序写的比较简单明了,这里就不贴代码了,遇到看不懂的地方,可以在我们的官方QQ群里提问。

Arduino端代码

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

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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

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

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-3-29 17:41 , Processed in 0.040465 second(s), 18 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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