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

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

[复制链接]

66

帖子

66

主题

296

积分

版主

Rank: 7Rank: 7Rank: 7

积分
296
杭州氦氪科技
QQ
发表于 2017-9-29 10:16:22 | 显示全部楼层 |阅读模式
在之前的教程中我们已经用实例示范了使用我们的云平台完成状态上报,设备控制,定时预约,数据统计,历史记录等功能。本次教程我带大家体验一下告警推送功能。

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

1.修改产品的通信协议
添加参数alarm
141425pjnh211sy8s0fjyj.png
141458rc8e4z048eyudzd7.png
141510billc9ll4slsu2rs.png

添加命令reportAlarm
141538zjq87vsvum7rj8rj.png
141659uupippsi2nio0iop.png

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

修改完毕的通信协议如下图所示:
142517destkk7s6lutis4x.png

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

规则列表方式:
145725rwwrorhzcie4vzn4.png
150102grlrltlpl021tr53.png
150126wfgzxum7l2uqlwwl.png
150154nog7talj142jnne3.png
150427jzeevoegm4ose8s4.png

javascript方式:
152835evm1v3tt1q7wmvwv.png
  1. "use strict";

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

  7. /**
  8. * 处理设备上报
  9. * @param {Object} message - 设备上报信息
  10. * @param {number} message.cmdId - 设备上报命令Id
  11. * @return void
  12. */
  13. var onDevSend = function onDevSend(message) {
  14.   // your code here
  15.   if(message.cmdId == 3)
  16.   {
  17.       if(message.alarm == 1)
  18.       {
  19.         router.addNotification({'zh': '设备通知', 'en': 'Device Info'}, {'zh': '小夜灯开启', 'en': 'Led ON'}, message, {type: 'INFO'});  
  20.         router.sendAppPush({'zh': '设备通知', 'en': 'Device Info'}, {'zh': '小夜灯开启', 'en': 'Led ON'}, message);
  21.       }
  22.   }
  23. };
复制代码

该方式的详细介绍请参看告警推送 javascript方式 文档

3.调试告警推送
这次我们不打算使用实际的设备来调试告警推送功能,所以不用去修改单片机端的固件,我们会使用控制台的虚拟设备调试功能,在虚拟设备上发送reportAlarm命令触发告警推送规则。
调试时,我们在告警推送设置页面选择规则列表或者javascript都可以,因为这两种方式建立的规则内容主体是相同的,只不过,javascript方式中携带了附加数据。
153526hfdf9c3csf54s3go.png
点击发送按钮,手机上就会收到通知栏推送信息。
154312mwotkqmtfhaohqxo.jpg
点击通知栏推送的信息,可以直接进入设备控制页面[备注1]。
154332n9mpv9um8uf1npv8.png

如果没有及时点击通知栏推送的信息,丛云APP的图标上会以角标的形式显示告警推送的数量。
154407s6oomgzc6z9hmjg0.jpg
此时打开丛云APP,会跳出告警推送通知。
154427c3gmwmepgow632g5.png
点击查看按钮,可以进入设备控制页面[备注1]

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

使用云端API 4.5.21 获取推送历史记录
170032fd2dqd3iwiiufsod.png
具体如何调试云端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时,有携带附加数据。

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

使用道具 举报

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

本版积分规则

关闭

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

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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