请选择 进入手机版 | 继续访问电脑版
查看: 303|回复: 0

使用nodejs作为设备端接入氦氪云平台之SDK演示插座

[复制链接]

66

帖子

66

主题

296

积分

版主

Rank: 7Rank: 7Rank: 7

积分
296
杭州氦氪科技
QQ
发表于 2017-9-30 09:55:20 | 显示全部楼层 |阅读模式
如果你单片机玩不转,而且看着Esp8266的固件编写教程也头疼的话,那可以试试使用nodejs作为设备端接入我们云平台。

1.在氦氪云平台建立一个产品,具体过程请参照以下教程:
氦氪云入门教程04-基于氦氪主控协议的作品-SDK演示插座
http://www.hysiry.cn/forum.php?mod=viewthread&tid=2519
(其中的第二步:编译固件,烧录固件。可以跳过去不看)
在这一步你会看到prodKey,把它记下来,下面的步骤会用到。

2.安装nodejs,我使用的nodejs版本为v7.2.0
nodejs链接:https://nodejs.org/en/download

3.安装nodejs模块node-localstorage,我用这个模块来存放设备的token
node-localstorage模块链接:https://www.npmjs.com/package/node-localstorage

4.安装nodejs模块qr-image,我用这个模块来生成绑定设备时需要的二维码
qr-image模块链接:https://www.npmjs.com/package/qr-image

5.从github获得最新的代码,这一步获得的代码需要修改以适应我们的作品
https://github.com/LawrenceDon/nodejs-device-hekr
从github下载文件的方法:点击Clone or downlowd按钮-->点击Download ZIP按钮
我已经下载了一份放到本帖的附件里

6.根据我们作品的通信协议,修改device.js的内容
代码开头的位置
return "NODEJS_" + "SN20170725001" 使用前请修改,这里return的是devTid,其代表设备ID,可以自己定义设备ID规则,devTid的最大长度是32
prodKey:"xxxxxx" 需要填写自己产品的prodKey

代码结尾的位置
deviceFunction,parseAppSend,reportStatus这3个函数的内容需要开发者自己完成
function deviceFunction() 具体的设备功能在此函数中完成
function parseAppSend(jsonData) 根据产品通信协议,解析从云端下发的协议数据
function reportStatus(tcplink) 根据产品通信协议,上报设备当前状态

我为deviceFunction函数编写了默认的功能,脚本运行之后,在CMD窗口可以输入以下形式的数据:
1. eval:1+1
    eval:后面可以跟任何的javascript语句,我们可以查看当前脚本中的变量和执行其中的函数。
2. data:"cmdId":1,"power":1
    data:后面跟的数据是氦氪设备云端通信协议规范中的data部分的内容。
3. {"msgId" : 1,"action" : "heartbeat"}
    这样直接输入的JSON字符串必须符合氦氪设备云端通信协议规范。

附件压缩包中的device-example.js已经按照SDK演示插座的通信协议修改完毕,实际使用时只需要把devTid和prodKey修改成自己的就可以了。


7.运行脚本
按照第6步的要求,将device-example.js修改好之后,把device-example.js改名为d.js,名字改的短一点,在命令行里输入比较方便。
以在Windows系统下为例,运行cmd.exe,切换到d.js所在的目录下,在命令行窗口输入node d.js 按回车键执行。
命令执行前目录里只有一个文件:
150437jf7mj5wc85umcwwh.png
命令执行后目录里会多出一个文件夹和一个png图片文件:
151121xxg6xdkawaogkgog.png
devParams文件夹下的devToken文件中存放的是当前设备的token。
打开qrDevBind.png,这是绑定设备需要的二维码,用丛云APP的添加设备中的扫描设备二维码功能扫描一下这个二维码就可以完成设备绑定。

在命令行输入eval:1+1 按回车键执行:
152107g34a6s0zs0yvpaon.png

在命令行输入eval:device 按回车键执行:
152130bnazn6qk191nkmnk.png

在命令行输入data:"cmdId":1,"power":1 按回车键执行:
152420r1118zs785vt8e2d.png
此时如果你丛云APP上的该设备的控制页面是打开的,而且之前页面上的电源状态显示为关,此时电源状态会显示为开。

在命令行输入{"msgId" : 1,"action" : "heartbeat"} 按回车键执行:
152226p5wwtsjnrmskwjyz.png

在丛云APP上打开该设备的控制页面:
点击开按钮
命令行窗口显示
152556z88ehw64ccec4898.png
点击关按钮
命令行窗口显示
152603ub6ykb3zghtcae3g.png
点击查询按钮
命令行窗口显示
152612n5d9dddd7d87g5bn.png

参考文档:
氦氪云联网功能组件
设备云端通信协议
本程序涉及的上行服务指令如下:
getProdInfo
devLogin
reportDevInfo
devSend
heartbeat
本程序涉及的下行服务指令如下:
appSend

nodejs-device-hekr-master20170726.zip

10.02 KB, 下载次数: 0

加入汇思锐,和智能生活沟通零距离! 用科技改变生活,用想法构思未来!
回复

使用道具 举报

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

本版积分规则

关闭

论坛灌水区开通公告上一条 /1 下一条

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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