极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 21642|回复: 0

氦氪云入门教程11-体验一下告警推送功能

[复制链接]
发表于 2017-8-8 13:41:22 | 显示全部楼层 |阅读模式
本帖最后由 MakerBingo 于 2017-8-8 16:28 编辑

在之前的教程中我们已经用实例示范了使用我们的云平台完成状态上报,设备控制,定时预约,数据统计,历史记录等功能。本次教程我带大家体验一下告警推送功能。

我们将对教程 氦氪云入门教程03-使用氦氪透传协议的温湿度计 中的产品进行改造,使之支持告警推送功能。

1.修改产品的通信协议
添加参数alarm




添加命令reportAlarm



当设备使用reportAlarm命令上报数据时,命令中的参数alarm代表了告警的内容,1代表小夜灯开关告警,2代表温度告警,3代表湿度告警,同时reportAlarm命令还带上了ledPower,temperature和humidity参数。

修改完毕的通信协议如下图所示:


2.添加告警推送规则
告警推送规则有两种添加方式,一种是规则列表方式,另一种是javascript方式。javascript方式比规则列表方式更加的灵活,而且可以携带附加数据。
云端对设备上报的数据使用这里设置的告警推送规则进行处理,符合规则的,就进行用户通知和APP推送。
本次教程只演示一个告警推送规则,即当小夜灯开启时,需要云端进行用户通知和APP推送。

规则列表方式:






javascript方式:

[kenrobot_code]"use strict";

/******************************************************
* 可用方法:
*     router.addNotification(subject, content[, reportData]);
*     router.sendAppPush(subject, content[, hideParams]);
*****************************************************/

/**
* 处理设备上报
* @param {Object} message - 设备上报信息
* @param {number} message.cmdId - 设备上报命令Id
* @return void
*/
var onDevSend = function onDevSend(message) {
  // your code here
  if(message.cmdId == 3)
  {
      if(message.alarm == 1)
      {
        router.addNotification({'zh': '设备通知', 'en': 'Device Info'}, {'zh': '小夜灯开启', 'en': 'Led ON'}, message, {type: 'INFO'});  
        router.sendAppPush({'zh': '设备通知', 'en': 'Device Info'}, {'zh': '小夜灯开启', 'en': 'Led ON'}, message);
      }
  }
};[/kenrobot_code]
该方式的详细介绍请参看告警推送 javascript方式 文档

3.调试告警推送
这次我们不打算使用实际的设备来调试告警推送功能,所以不用去修改单片机端的固件,我们会使用控制台的虚拟设备调试功能,在虚拟设备上发送reportAlarm命令触发告警推送规则。
调试时,我们在告警推送设置页面选择规则列表或者javascript都可以,因为这两种方式建立的规则内容主体是相同的,只不过,javascript方式中携带了附加数据。

点击发送按钮,手机上就会收到通知栏推送信息。

点击通知栏推送的信息,可以直接进入设备控制页面[备注1]。


如果没有及时点击通知栏推送的信息,丛云APP的图标上会以角标的形式显示告警推送的数量。

此时打开丛云APP,会跳出告警推送通知。

点击查看按钮,可以进入设备控制页面[备注1]

4.使用云端API获得用户通知记录和APP推送记录
使用云端API 查询用户通知


使用云端API 4.5.21 获取推送历史记录

具体如何调试云端API,请参看教程氦氪云入门教程08-使用Postman调试云端API

备注1:
在丛云APP中,如果打开设备控制页面是由告警推送事件触发的,那么APP传递给设备控制页面的QueryString中会增加一个名为notifydata的字段,一般情况下QueryString中只包含devTid,ctrlKey,ppk,lang,appId这几个字段。notifydata中的数据为base64编码。通过判断QueryString中有无notifydata,可以在告警推送事件触发开启页面时,加载专门的告警推送页面,在该页面可以显示该次告警的详细信息,还可以列出用户通知记录或者APP推送记录。
在本教程里,notifydata中的数据经base64解码获得的数据示例如下:
使用规则列表时:
{"message":"小夜灯开启","pushType":"DEVICE_ALERT","title":"设备通知","devTid":"01_06***************65","subDevTid":"null"}

使用javascript时:
{"message":"小夜灯开启","title":"设备通知","alarm":1,"cmdId":3,"humidity":60,"devTid":"01_06***************65","ledPower":1,"pushType":"DEVICE_ALERT","subDevTid":null,"temperature":305}

可以看到,使用javascript时,有携带附加数据。

本帖子中包含更多资源

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

x
回复

使用道具 举报

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

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

Archiver|联系我们|极客工坊

GMT+8, 2024-3-29 22:02 , Processed in 0.039295 second(s), 18 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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