Android 中使用MQTT(第一篇)

物联网0140

Android 中使用MQTT(第一篇),第1张

MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通讯协议。它是一种发布/订阅,极其简单和轻量级的消息传递协议,专为受限设备和低带宽,高延迟或不可靠的网络而设计。它的设计思想是轻巧、开放、简单、规范,易于实现。这些特点使得它对很多场景来说都是很好的选择,特别是对于受限的环境如机器与机器的通信(M2M)以及物联网环境。相对于XMPP,MQTT更加轻量级,并且占用的宽带低。

MQTT协议有以下特点:

那么问题来了?重连连接成功后重复接收到最后一条消息

MQTT推送消息订阅端重复接收问题。

(背景)订阅端断开的时候,发布端多次推送消息。

(现象)订阅端启动时,接收到最后一条推送消息有两次;即使Qos设置为2;依然是两次。

经排查是因为

MqttMessage的Retained设置为了true;

该值很多文章上只说了是 消息保留机制,若设置为true,mqtt服务器会保留每次发布的消息;较少提到 若订阅某主题的客户端重启,则会把此主题之前发布的消息重新推送到客户端。该值默认为false;去掉修改该值即可

那么问题来了?重连连接后手动那么多遗漏的消息,怎么选择只接收最新的一条消息呢?

MQTT推送消息订阅端重复接收问题。

(背景)订阅端断开的时候,发布端多次推送消息。

(现象)订阅端启动时,接收到msg1,msg2,msg3 (这三个消息都是同一个类型消息,只需要处理最新的msg3就好,不然界面会刷新三次)这个谁有什么好办法没呢?

GitHub地址: >

在本文中,我们将向您展示如何使用阿里云IoT平台轻松将Android Things连接到您的物联网(IoT)网络,我们将为该项目构造一个示例:功能性甲醛和温度传感器。有些人可能不了解Android Things,简单来说, 它就是让开发者可以使用Android开发工具开发嵌入式设备

项目设备清单

NXP iMX7D

设备接线图

在设置硬件之后,是时候在阿里云IoT平台上配置软件了。

首先,导航到物联网控制台并激活阿里云IoT。创建高级产品并添加产品属性定义:

Android Things设备开发

1、使用Android Studio创建Android Things项目,并授予网络权限

2、将“eclipsepahomqtt”存储库添加到gradle

3、通过I2C读取DHT12数据

4、通过UART获取Ze08CH2O数据

5、创建阿里云IoT连接并报告数据

设备启动后,您可以在阿里云IoT控制台上查看设备的实时数据, 设备管理 - >运行状态

此项目在GIT上的地址是:>

楼主是做楼宇控制的?c-bus是霍尼韦尔的专有的现场总线, 他用于霍尼韦尔控制器和现场设备与中央监控软件的数据交换。 现在有很多的web系统都是用>

以上就是关于Android 中使用MQTT(第一篇)全部的内容,包括:Android 中使用MQTT(第一篇)、现实中哪些地方用到了MQTT协议、将Android Things与阿里云集成,轻松实现物联网项目等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!