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

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

 

设备端检测自己是否在线的方法是:添加一个自定义权限为发布和订阅的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 检测:" + "接口调用不成功");
    }
目录
相关文章
|
物联网 开发工具
物联网平台实用技巧:设备端检测自己是否在线
基于MQTT接入的设备靠心跳保活,但心跳是周期性的、且自动收发和超时重连,这些特性给主动检测设备端是否在线带来了一定难度。本文提供通过消息收发是否正常判定设备是否在线的原理、流程、实现方式。
4941 1
|
12月前
|
人工智能 自然语言处理 Java
FastExcel:开源的 JAVA 解析 Excel 工具,集成 AI 通过自然语言处理 Excel 文件,完全兼容 EasyExcel
FastExcel 是一款基于 Java 的高性能 Excel 处理工具,专注于优化大规模数据处理,提供简洁易用的 API 和流式操作能力,支持从 EasyExcel 无缝迁移。
2579 65
FastExcel:开源的 JAVA 解析 Excel 工具,集成 AI 通过自然语言处理 Excel 文件,完全兼容 EasyExcel
|
存储 JSON API
作为开发者,我如何提高任务型大模型应用的响应性能
本文基于实际场景,分享了作为开发者提高大模型响应性能的四个实用方法。
2325 57
|
10月前
|
云安全 运维 安全
阿里云免费版SSL证书申请及部署图文教程指导
SSL证书是个人和企业搭建网站不可或缺的云安全产品,SSL证书能够为网站和移动应用(APP)及小程序提供数据HTTPS加密协议访问,保障数据的安全。阿里云SSL证书有收费版的也有免费版的,有的新手用户由于是初次在阿里云申请SSL证书,可能不是很清楚免费版证书的申请和部署流程,本文为以图文形式为大家展示阿里云免费版SSL证书最新的申请及部署教程,以供参考。
|
JSON 安全 Go
Go语言中使用JWT鉴权、Token刷新完整示例,拿去直接用!
本文介绍了如何在 Go 语言中使用 Gin 框架实现 JWT 用户认证和安全保护。JWT(JSON Web Token)是一种轻量、高效的认证与授权解决方案,特别适合微服务架构。文章详细讲解了 JWT 的基本概念、结构以及如何在 Gin 中生成、解析和刷新 JWT。通过示例代码,展示了如何在实际项目中应用 JWT,确保用户身份验证和数据安全。完整代码可在 GitHub 仓库中查看。
2176 1
|
机器学习/深度学习 人工智能 自然语言处理
自然语言处理中的语义理解技术
自然语言处理中的语义理解技术
864 0
|
JavaScript 前端开发
【Vue 3】如何实现动态表单生成器的拖拽功能?
【Vue 3】如何实现动态表单生成器的拖拽功能?
|
SQL 关系型数据库 数据库
手把手教你管理PostgreSQL数据库及其对象
手把手教你管理PostgreSQL数据库及其对象
873 0
|
JavaScript 开发者 内存技术
修改npm源--多种方式
修改npm源--多种方式
6413 0