设备端和服务端检测设备是否在线的方法

简介: 使用物联网时,有时设备端和服务端都需要检测设备是否在线。

 

设备端检测自己是否在线的方法是:添加一个自定义权限为发布和订阅的topic,设备端用该topic向平台发送消息后,平台会把消息原样返回设备端。

离线判定逻辑:

  1. 严格的:发送消息后,5秒内没有收到消息算失败,出现1次失败,判定为离线
  2. 普通的:发送消息后,5秒内没有收到消息算失败,连续2次失败,判定为离线
  3. 宽松的:发送消息后,5秒内没有收到消息算失败,连续3次失败,判定为离线

在服务端中判断设备是否在线可以使用平台提供api来实现。可以使用的接口为:GetDeviceStatusBatchGetDeviceStateQueryDeviceDetailBatchQueryDeviceDetailRRpc

GetDeviceStatusBatchGetDeviceStateQueryDeviceDetailBatchQueryDeviceDetail这些接口会返回设备状态Status,取值:

ONLINE:设备在线。OFFLINE:设备离线。UNACTIVE:设备未激活。DISABLE:设备已禁用。

调用rrpc接口判断设备是否示例代码如下:

    RRpcRequest request = new RRpcRequest();
    request.setProductKey(productKey);
    request.setDeviceName(deviceName);
    request.setRequestBase64Byte(Base64.encodeBase64String("Hello World".getBytes()));//消息内容,base64编码
    request.setTimeout(5000); //响应超时设置
    // 获取结果
    RRpcResponse response = (RRpcResponse) client.getAcsResponse(request);
    if (response != null) {
      //使用RrpcCode判断设备状态      
      //SUCCESS:成功,设备在线
      //TIMEOUT:设备响应超时
      //OFFLINE:设备离线
      //HALFCONN:设备离线(设备连接断开,但是断开时间未超过一个心跳周期)
      //UNKNOWN:系统异常
      if ("SUCCESS".equals(response.getRrpcCode())) {
        System.out.println("RRPC 检测:" + deviceName + "设备在线");
      } else if (response.getRrpcCode() == null) {
        System.out.println("RRPC 检测:" + deviceName + "设备可能不存在");
      } else { // 其他状态归结为设备不在线,也可以根据业务情况自行区分处理
        System.out.println("RRPC 检测:" + deviceName + "设备不在线:");
      }
    } else {
      System.out.println("RRPC 检测:" + "接口调用不成功");
    }
目录
相关文章
|
8月前
|
编解码 监控 API
Android平台GB28181设备接入侧音频采集推送示例
GB/T28181是广泛应用于视频监控行业的标准协议规范,可以在不同设备之间实现互联互通。今天我们主要探讨Android平台的Audio采集部分。
|
3月前
|
安全 数据安全/隐私保护 智能硬件
智能家电设备连接与验证的流程
智能家电设备连接与验证的流程
63 1
|
5月前
|
Python
树莓派的摄像头信息实时发送到PC端显示
树莓派的摄像头信息实时发送到PC端显示
80 1
|
6月前
计算机维修的工具与设备
计算机维修的工具与设备。
20 1
|
8月前
|
编解码 监控 网络协议
Android平台GB28181设备接入侧如何实现按需打开视音频采集传输
Android平台GB28181设备接入侧如何实现按需打开视音频采集传输
121 2
|
8月前
|
监控 Android开发
GB28181状态信息报送解读及Android端国标设备接入技术实现
今天主要聊聊GB/T28181状态信息报送这块,先回顾下协议规范相关细节,然后再针对代码实现,做个简单的说明。
105 0
|
8月前
|
Android开发 开发者
Android平台GB28181设备接入端语音广播如何实现实时音量调节
Android平台GB28181设备接入,语音广播功能非常重要,本文要介绍的,不是语音广播的流程,语音广播流程,之前的blog也有非常详细的分享,感兴趣的可以参考官方规范书的交互流程:
|
小程序 物联网 API
微信小程序使用蓝牙通信协议连接硬件整理总结(初始化蓝牙、搜索设备、展示设备)
微信小程序使用蓝牙通信协议连接硬件整理总结(初始化蓝牙、搜索设备、展示设备)
1236 0
微信小程序使用蓝牙通信协议连接硬件整理总结(初始化蓝牙、搜索设备、展示设备)
模拟监控摄像头系统
本报告研究全球与中国市场模拟监控摄像头系统的产能、产量、销量、销售额、价格及未来趋势。重点分析全球与中国市场的主要厂商产品特点、产品规格、价格、销量、销售收入及全球和中国市场主要生产商的市场份额
|
Ubuntu Linux C语言
用C写蓝牙通讯程序:扫描、读取、发送
在Linux下,通过bluez 蓝牙库可以用C语言轻松实现蓝牙通信。在ubuntu下可以用 apt-get install libbluetooth-dev 安装该库。下面是几个简单示例。
1952 0