极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 5217|回复: 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模块.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
点击主页面右下角的 013457s4a0bgl4na1gbnij.png ,添加新产品。
235249w7d64nod46g4gnkk.png
235427g6dz0y7trjw4zr5n.png
235432ame68ohuralf8hvq.png

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

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

据该作品功能,我们来设计通信协议:
参数:代表设备有哪些属性,本作品的设备属性包括温度,湿度,小夜灯的开关状态。
点击页面右下角的 022808zjrv7rjnv9jnupyn.png ,在弹出的菜单 022824vd5zi72lfda9s7ww.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,上报当前设备的状态,类型为上报,涉及参数包括温度,湿度,小夜灯的开关状态。
点击页面右下角的 215838njqarccoq5cawjwa.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, 下载次数: 16)
回复

使用道具 举报

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

本版积分规则

Archiver|联系我们|极客工坊 ( 浙ICP备09023225号 )

GMT+8, 2020-7-15 17:39 , Processed in 0.057033 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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