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

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

 

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

离线判定逻辑:

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

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

GetDeviceStatus,BatchGetDeviceState,QueryDeviceDetail,BatchQueryDeviceDetail这些接口会返回设备状态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接入的设备靠心跳保活,但心跳是周期性的、且自动收发和超时重连,这些特性给主动检测设备端是否在线带来了一定难度。本文提供通过消息收发是否正常判定设备是否在线的原理、流程、实现方式。
5191 1
|
小程序 前端开发 API
微信小程序全栈开发中的异常处理与日志记录
【4月更文挑战第12天】本文探讨了微信小程序全栈开发中的异常处理和日志记录,强调其对确保应用稳定性和用户体验的重要性。异常处理涵盖前端(网络、页面跳转、用户输入、逻辑异常)和后端(数据库、API、业务逻辑)方面;日志记录则关注关键操作和异常情况的追踪。实践中,前端可利用try-catch处理异常,后端借助日志框架记录异常,同时采用集中式日志管理工具提升分析效率。开发者应注意安全性、性能和团队协作,以优化异常处理与日志记录流程。
725 0
|
并行计算 安全 Java
深入理解Java并发编程:并行与并发、进程与线程、优先级、休眠与让步
深入理解Java并发编程:并行与并发、进程与线程、优先级、休眠与让步
701 0
|
6月前
|
边缘计算 监控 Serverless
基于 Serverless 与云边协同的 Mobile Agent 架构:侠客工坊技术解析
本文介绍“侠客工坊”提出的云边协同Mobile Agent架构,以解决云原生时代移动端执行断层问题:通过Serverless事件驱动调度、端侧轻量Vision-SLM视觉推理、全链路多模态可观测性及内核级零侵入输入,实现高可用、可监控、合规的移动智能自动化。
546 0
|
机器学习/深度学习 人工智能 自然语言处理
魔搭社区模型速递(6.8-6.14)
魔搭ModelScope本期社区进展:1173个模型,143个数据集,76个创新应用,10 篇内容
768 0
|
10月前
|
存储 Linux 网络安全
跨平台文件传输工具FileZilla客户端安装使用教程
跨平台文件传输工具FileZilla客户端安装使用教程
3408 0
|
缓存 算法 调度
数据结构之 - 双端队列数据结构详解: 从基础到实现
数据结构之 - 双端队列数据结构详解: 从基础到实现
1065 5
|
监控 物联网 网络性能优化
【杂谈】-MQTT与HTTP在物联网中的比较:为什么MQTT是更好的选择
通过上述分析,可以看出MQTT在物联网应用中的确是更好的选择。其高效的通信模型、低带宽消耗、稳定的连接保持机制以及可靠的消息质量保证,使其在各种物联网场景中都能表现出色。开发者在设计和实现物联网系统时,应优先考虑采用MQTT协议,以充分发挥其在资源受限环境下的优势,提升系统的整体性能和可靠性。
3915 26
|
SQL 关系型数据库 MySQL
宝塔面板之MySQL无法远程连接
宝塔面板默认安装的MySQL,root用户无远程权限。本文详细介绍如何使root支持远程连接:确保3306端口已放行,通过SSH登录服务器并进入MySQL,修改root用户的host为'%',最后刷新权限。具体步骤包括使用SQL命令修改用户主机设置,并确保网络配置正确,从而实现root的远程访问。
4577 35
|
监控 Apache
HAProxy的高级配置选项-Web服务器状态监测
这篇文章介绍了HAProxy的高级配置选项,特别是如何进行Web服务器状态监测,包括基于四层传输端口监测、基于指定URI监测和基于指定URI的request请求头部内容监测三种方式,并通过实战案例展示了配置过程和效果。
673 8
HAProxy的高级配置选项-Web服务器状态监测

热门文章

最新文章