使用nodejs作为设备端接入氦氪云平台之SDK演示插座-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 3879|回复: 0

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

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

如果你单片机玩不转,而且看着Esp8266的固件编写教程也头疼的话,那可以试试使用nodejs作为设备端接入我们云平台。

1.在氦氪云平台建立一个产品,具体过程请参照以下教程:
氦氪云入门教程04-基于氦氪主控协议的作品-SDK演示插座
(其中的第二步:编译固件,烧录固件。可以跳过去不看)
在这一步你会看到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, 下载次数: 5

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

本版积分规则

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

GMT+8, 2024-12-1 00:08 , Processed in 0.087167 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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