资讯详情

使用 Android 开发 MQTT 客户端

MQTT 代表消息队列遥测传输,是一种功能强大的消息传输协议,主要用于机器 (M2M) 和物联网 (IoT) 通信上下文。 MQTT 这是首选,因为它易于实施,非常适合资源有限的设备。

在本文中,我们将开发一个应用程序 MQTT 协议的 Android 移动应用程序。

MQTT vs HTTP

MQTT 竞争对手是旧的,但像金子一样 HTTP 协议。

但是,为什么要选择你的项目呢? MQTT 协议呢?

以下是一个简短的比较表,以便更好地阐明主要方面:

综上所述,MQTT 相比 HTTP 更简单,更小,更安全。

MQTT 简而言之

MQTT 是发布-订阅客户端-服务器消息传输协议。

让我们澄清发布-订阅和客户端-服务器架构的含义。

在发布/订阅架构中,发送人(发布人)不直接将消息传递给特定的接收者(订阅者),而是将发布的消息分类为类别(称为主题),不知道可能有哪些订阅者。

出版商和订阅者从不直接相互联系。它们之间的连接由代理的第三个组件处理。

现实生活中发布/订阅模式的一个实际例子可能是报纸:记者(出版商)在报纸(经纪人)上写了几篇文章,但他们不知道有多少读者(订阅者)会阅读那篇文章。

在客户端-服务器架构中,客户端连接到服务器使用服务。

在 MQTT 上下文中,MQTT 客户端通过网络连接到 MQTT 代理设备。 MQTT 代理(服务器)提供的服务是发布和/或订阅一个或多个主题的可能性。 MQTT 客户端可以是出版商和订阅者,也可以是两者兼而有之。

在主题信息交换开始之前,客户需要通过向代理发送信息 CONNECT 新闻启动通信。

通过此消息,客户端将自己呈现给提供以下主要信息的代理:

  • ClientID

    ClientID 它是唯一一个用于识别客户端并存储相关信息(称为会话)的代理 ID。

    空的 ClientID 这意味着匿名连接:因此,代理不会记住任何关于客户端的信息。

  • CleanSession

    如果 CleanSession 设置为 false 此外,如果代理存储客户端的信息,代理将使用现有会话并将之前排队的信息传递给客户端。

    相反,如果标志设置为 true,则意味着丢弃该客户端的所有现有会话和消息(如果 ClientId 为空,则为必需)。

  • KeepAlive

    间隔以秒为单位,定义了代理和客户端可以在不发送消息的情况下保持联系的最长时间。 需要在客户端 KeepAlive 定期发送给代理 PING 保持连接处于活动状态的消息。

  • Username and Password(可选)

    客户端可以发送用户名和密码以提高通信安全性。

  • WillMessage (可选)

    客户端可以 MQTT 以消息和主题的形式指定其最终遗嘱信息。当客户端严重断开连接时,代理将代表客户端发送此消息。

如前所述,MQTT 代理使用主题来决定哪个订阅者接收哪个消息。

在使用主题之前,客户端不会创建主题。在没有任何初始化的情况下,服务器接受每一个有效的主题。

主题是具有以下特点的字符串:

  • 长度至少为 1 个字符
  • 区分大小写
  • 由一个或多个以“/”分隔的级别组成

假设温度传感器散落在你的房子周围。使用这些传感器 MQTT 与恒温器通信,恒温器使用此信息调节家庭供暖系统。

每个传感器(发布者)通过发布特定的传感器 MQTT 主题传达其温度,恒温器(订阅者)通过检查这些主题来监主题结构的示例:

Android 开发MQTT

示例/简单 MQTT Android 应用程序

连接到 MQTT 代理

源代码

详情参阅 - 亚图跨际

标签: android传感器类别

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台