查看: 2243|回复: 0

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

[复制链接]
  • TA的每日心情
    开心
    2016-11-11 12:32
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2017-8-18 14:41 | 显示全部楼层 |阅读模式
    本帖最后由 lawrencedon 于 2017-8-18 14:45 编辑

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

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

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

    添加命令reportAlarm
    4.png
    5.png

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

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

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

    规则列表方式:
    7.png
    8.png
    9.png
    10.png
    11.png

    javascript方式:
    12.png
    [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方式中携带了附加数据。
    13.png
    点击发送按钮,手机上就会收到通知栏推送信息。
    14.jpg
    点击通知栏推送的信息,可以直接进入设备控制页面[备注1]。
    15.png

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

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

    使用云端API 4.5.21 获取推送历史记录
    19.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时,有携带附加数据。
    您需要登录后才可以回帖 登录 | 立即注册  

    本版积分规则

    热门推荐

    Blynk与m5stack basic以及uiflow的交互玩法
    Blynk与m5stack basic以及
    Blynk与m5stack basic以及uiflow的交互玩法 [准备工作我们假设玩家已经熟悉下面的准备
    Arduino板接入后端口无法识别
    Arduino板接入后端口无法
    现在的IDE是1.8.10装好IDE后用数据线连接Arduino nano板, 板上红灯亮,但是电脑上并
    旋转编码器的使用
    旋转编码器的使用
    旋转编码器是一个精确旋转测定和点击合二为一的器件,用它来控制舵机比用电位器要精确
    【Arduino】108种传感器模块系列实验(90)--- ULN2003步进电机
    【Arduino】108种传感器模
    37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是
    【原创】全球最小口袋3D打印机mini one直播教程贴
    【原创】全球最小口袋3D打
    最近闲得蛋疼,没事搞个掌上3D打印机,先放效果图吧。 搞了半天,终于能正常打印,
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
    快速回复 返回顶部 返回列表