edit

产品管理

产品列表

点击左侧栏的 产品管理,进入产品列表页面。

注:产品分为发布与未发布

发布 即产品发布,完成产品的设计和在线虚拟设备的调试,发布产品,进入产品的生产、销售等环节。 产品发布,需要经过氦氪云平台的审核。只有成功发布的产品,才能进行生产并使用氦氪云平台。 注意:产品一旦发布,将不得修改产品的参数(产品参数请参阅本章第五小节)

删除 即删除产品的所有信息。已经发布的产品,无法删除,只能进入 停产 状态。

产品创建

在产品列表页点击右下方添加图标,即可创建新的产品。 注:标星号为必填项
step 1:

step 2:

产品类型:独立设备网关设备

模块类型:可自定义类型 ,默认Hekr V1.1。

通信方式:目前为WI-FI模式。

配网方式:HekrConfig。

固件类型:标准 非标准 标准即由氦氪提供的固件。

接入协议包含四种:JSON透传协议JSON主控协议48透传协议JSON透传不校验raw,厂家需要根据产品决定使用那种协议。

JSON格式清晰,编码和解码很方便,在计算机领域被广泛使用。

当然JSON格式也有缺点:附带数据有点多,比如其中的各种符号,不够精简编码时需要一定的计算量,对设备端的计算能力、内存有要求因此,

JSON格式适合对网络流量、带宽没有太多限制,且设备端有JSON编码、解码能力的场景。

48格式适合对网络流量、带宽限制较高,设备端计算能力偏弱的场景,但是要求开发者具备一定的二进制数据coding能力。

48格式缺点数据不易识别,需要拿到具体格式说明,才能解析数据里面各个字段的含义描述能力有限,比如表示浮点数就需要另辟蹊径扩展能力不够,比如支持嵌套就很困难。

群控支持:是否可以控制多个设备,默认支持。

使用SSL通信:安全通道,默认没有开启。

产品基本信息查看

在产品列表页,选择某个产品点击如下图所示图标

管理,将进入该产品的管理页,产品管理页包含了 产品基本信息

每个产品都会有唯一的产品密钥(即prodKey,是产品唯一标识),点击查看产品密钥获取,请一定妥善保管产品密钥,不要外泄

产品协议

进入产品管理页,点击 产品图片,进入对应产品的协议管理页面。

产品参数信息

产品参数 是指产品的属性或者状态。在 产品协议 页,可以进行 产品参数产品命令的设计。 也可通过导入协议添加相应参数命令。 下面将以“氦氪绿色智能灯”例子来说明如何设计产品参数。

氦氪绿色智能灯包含如下功能:

  1. 每分钟上报一次灯的状态,灯的状态包括:开关状态、灯的亮度和灯的色温。
  2. 控制灯的开关
  3. 设置灯的亮度
  4. 设置灯的色温

通过上述功能描述,可知氦氪绿色智能灯一共包含了三个产品参数(即包含了三个产品属性或者状态),分别是:开关状态、亮度和色温。 下图显示的是添加产品开关的参数。

参数描述 ,用来描述参数的作用或者参数的取值与真实值之间的关系。 比如温度的参数描述是 “最大值100表示实际温度50摄氏度,最小值0表示零下50摄氏度,即实际温度=温度取值减去50摄氏度”。您也可以在这里描述更为复杂的数值关系。

参数“Power”的取值类型是整数,包含了两个取值,1表示开的状态,0表示关的状态。 其中输入校验,选择枚举校验,点击添加取值。输入对应数值和注释。

三个产品参数全部设计完之后,可以进行 产品命令 的设计。产品命令 是指产品包含的功能,下图显示的是添加“控制灯的开关”的命令。

选择参数 包含两个列表,分别是 待选参数已选参数待选参数 是产品所有参数的列表,已选参数 是与该命令相关的参数列表。 因为“控制灯的开关”只与参数“开关”(即Power)有关,所以已选参数只有“Power”一个参数。

命令列表 中可以点击 查看 来查看命令设计的是否正确。 下图显示的是查看命令“SetPower”的示例帧,该示例帧表示向设备发送“开灯”的指令,如果需要向设备发送“关灯”的指令,只需要将该示例帧中“Power”的值设置成0即可。

可以根据实际情况进行协议的导出导入操作,提高产品开发效率。如下图所示:

协议导出

协议导入

偏好设置

偏好设置分为内置偏好与自定义偏好:

内置偏好由系统生成,只允许修改。
授权人数设置 设置可授权的最多人数,取值范围1-32,默认值5。
预约个数限制 设置可预约的个数,取值范围1-100,默认值10。
强制绑定 是否允许设备强制绑定,默认true。
存储频率 指令多少分钟上报一次,默认60秒。

自定义偏好由用户创建,可以进行添加、修改、删除操作。

OTA管理

点击 OTA管理,进入列表页。

点击右下角 添加新固件,下图显示的是添加新固件和配置固件OTA升级规则对话框。

待升级固件 是当前产品所有激活设备的固件版本的集合;也可以添加自己需要的固件版本。

升级方式

手动升级:手动升级是需要手动请求固件升级。
强制升级:强制升级是固件将自动升级。
灰度升级:灰度升级是升级该产品下随机100个固件。

设备ID 如果指定了设备ID,则只针对特定设备进行升级,该方式适用于固件的调试和验证。

页面管理

点击 控制页面,进入列表页面。控制页面的开发规范请参考 这里

点击 启动设备,启用控制页面,由于文件解压缩上传需要时间,状态为启用中,此刻可以进行其他操作,等手动刷新页面显示为正在使用

注意:H5控制页面,要么使用通用平台的页面,要么使用特定平台(Android和IOS平台)的页面,通用平台和特定平台不能同时使用。

H5控制页面的开发,请参考 这里

告警推送

使用告警脚本

厂家可以通过编写Javascript脚本自定义针对产品的告警推送逻辑。脚本使用ES5语法。以下是一个简单例子:

var onDevSend = function(message) {
  if (message.cmdId === 1 && message.switch === 1){
    router.addNotification('灯开了', 'light = ' + message.light, message);
    router.sendAppPush('灯开了', 'light = ' + message.light);
  }
};

该脚本表示设备如果上报命令(cmdId=1) 中switch的值为1,便为设备用户的消息中心中添加一条记录,并且用APP推送消息。 router是预定义的消息路由,里面定义了添加消息及APP推送等接口。所有可用的方法见下面列表。

router.addNotification

语法
router.addNotification(subject, content)
router.addNotification(subject, content, reportData)
router.addNotification(subject, content, reportData, options)
参数
名称 类型 是否必须 例子 说明
subject String、Object 'foo' {'zh': 'foo', 'en': 'foo'} 通知标题,可以使用字符串或LanguageTag-String 键值对
content String、Object 'foo' {'zh': 'foo', 'en': 'foo'} 通知内容,可以使用字符串或LanguageTag-String 键值对
reportData Object {foo: 'bar'} 自动定义上报数据,用户在拉取设备告警时可以获得该值,默认不会显示
options Object {type: 'INFO'} 其他选项
options.type String WARNING 通知类型 [ WARNING, INFO ], 如果options为空,或者未指定options.type,则默认为'WARNING'

多语言匹配规则

subject或content使用LanguageTag-String 键值对时将根据用户上报的locale返回响应的内容, 具体匹配规则如下:

  1. 如果用户未上报locale则默认用户locale为en
  2. 如果存在精确匹配则返回精确匹配内容
  3. 查找最接近的匹配,例如若用户locale为zh-CN#hans,则依次查找zh-CN#Hans -> zh-CN -> zh
  4. 返回键值对的第一项

例如,subject为{en: 'foo', zh: '中文'},用户locale为fr,则用户将看到'foo'(根据第4条规则)

返回值

router.sendAppPush

Note

使用该action发送推送给APP, APP将接受到的设备告警推送

语法
router.sendAppPush(subject, content)
router.sendAppPush(subject, content, hideParams, options)
参数
名称 类型 是否必须 例子 说明
subject String、Object 'foo' {'zh': 'foo', 'en': 'foo'} 通知标题,可以使用字符串或LanguageTag-String 键值对
content String、Object 'foo' {'zh': 'foo', 'en': 'foo'} 通知内容,可以使用字符串或LanguageTag-String 键值对
hideParams Object {foo: 'bar'} APP推送隐藏参数
options Object {} APP推送其他参数
options.icon String https://example.png/f/logo.png 推送图标,当前仅在华为推送中生效
返回值

使用告警规则

厂家可以为产品定义告警规则,将对所有设备生效。规则由触发时机、条件、动作组成。只有满足了触发时机和条件,才执行相应的动作。 点击告警推送配置界面左上角语言切换,切换为规则列表方式,点击右下角添加按钮进入规则配置对话框。

最小触发间隔

在最小触发间隔内,相同的规则不会重复触发。例如若最小触发间隔为5秒,则在5秒,即使有相同的事件,动作也不会执行。 这可以避免一些重复触发的场景。

http动作

使用http动作,设备事件触发时,氦氪云将回调http动作地址,不同的触发时机消息体不同。以POST方法,http://example.org/callback 为例

当设备登录时

POST /callback HTTP/1.1
Host: example.org
Content-Type: application/json

{
  "ctrlKey":"a36bd458df03444fbf5f1f10d4d50a75",
  "subDevTid":null,
  "action":"devLogin"
}

当设备登出时

POST /callback HTTP/1.1
Host: example.org
Content-Type: application/json

{
  "ctrlKey":"a36bd458df03444fbf5f1f10d4d50a75",
  "subDevTid":null,
  "action":"devLogout"
}

当设备上报时

POST /callback HTTP/1.1
Host: example.org
Content-Type: application/json

{
  "subDevTid":null,
  "data":{
    "cmdId":1,
    "Light":0,
    "ColorTemp":0,
    "Power":0
  },
  "ctrlKey":"a36bd458df03444fbf5f1f10d4d50a75",
  "action":"devSend"
}

data 为解码后设备上报的数据

调试

可以通过 虚拟设备 进行真实APP的调试,也可以通过 设备命令 验证产品协议的设计是否合理。

调试 (目前暂不支持手机调试)适用于如下情况:

  • 真实设备尚未开发完成,或者固件尚未开发完成。
  • 设备H5控制页面已经开发完成。

调试 的作用:

  • 验证产品参数设计是否满足需求、是否合理。
  • 测试设备H5控制页面功能是否正确。

点击 调试 进入调试页面,如下图所示。

调试界面主要由四块内容构成:通信消息信息筛选设备命令APP页面

通信消息 显示的是设备<=>云端<=>APP交互过程中的(公网通信,APP客户端与设备的数据传输通过云端;局域网通信,不再经过云端。),实时数据。


信息筛选 可以显示如下信息:

  1. 设备接收数据,即devRecv,包括云端发送给设备的数据和云端给设备的应答数据。
  2. 设备发送数据,即devSend,包括设备发送给云端的数据和设备给云端的应答数据。
  3. APP接收数据,即appRecv,包括云端发送给APP的数据和云端给APP的应答数据。
  4. APP发送数据,即appSend,只有APP发送给云端的数据,APP不需要云端发送应答数据。
  5. 心跳,即heartbeat,设备主动给云端发送的心跳信息,心跳频率是20秒/次。

勾选要显示的数据,点击右下角启动设备按钮,会出现“正在尝试连接设备服务器 已连接到服务器,设备登录中...”的信息,表示设备启动成功。

注意:为了保持设备和云端之间的长链接,设备需要主动给云端发送心跳信息,心跳频率是20秒/次,如果云端20秒之内没有收到来自设备的消息,云端会主动断掉与设备的长链接。
设备命令选择上报帧包含了 产品参数 信息中的所有上报帧命令。点击任意一个上报帧,便可编辑上报帧中的参数。下图显示的选择“ReportAllParams”上报帧。 编辑完成后,选择设备命令右下角的发送按钮,模拟设备上报过程。观察上图中的 信息筛选 栏,devSend 中data正是设备发送给云端的数据,并且收到来自云端 msgId 的应答。此时,APP客户端中的设备H5控制页面,设备的状态也会相应发生改变。如果没有改变,说明APP与云端的通信存在问题或者APP(包括设备H5控制页)存在bug。


APP页面(暂不支持手机调试)选取上传的H5调试页面。

点击开关、或者托动 亮度色温按钮,观察信息筛选栏中设备接收到了APP发送的数据appSend。并且,设备收到云端的数据之后,也给云端发送了应答信息devRecv。