Android端通过Eclipse Paho库接入MQTT服务,订阅ESP8266发布的温湿度主题,并向控制主题发送LED开关指令。核心步骤包括:规划上报与控制主题、配置Android网络权限、订阅并解析JSON数据、在Arduino IDE中配置ESP8266环境。最终实现Android界面实时显示温湿度,且点击按钮可控制硬件LED亮灭。

完成效果与核心链路

本案例的目标是建立两条双向通信链路,确保硬件与软件端数据互通:

  1. 数据上报链路:ESP8266将温湿度数据发布到指定主题,Android App订阅该主题并解析显示。
  2. 指令下发链路:Android App点击控制按钮,将开关指令发布到控制主题,ESP8266接收后执行对应动作。

只有当这两条链路均能稳定运行,才算案例验收通过。

第一步:准备MQTT服务与主题规划

在编写代码前,必须确定服务端地址、端口、用户名、密码、客户端ID以及具体的主题名称。入门阶段可使用自建的Apache Apollo、云平台旧版MQTT产品或其他兼容服务。

主题规划需严格区分“上报”与“控制”,避免逻辑混乱。建议采用以下命名规范:

记录所有连接参数,确保Android与ESP8266使用相同的MQTT服务端配置。

第二步:确认MQTT服务端状态

服务启动后,需进入管理页面验证虚拟主机、队列、主题或连接状态是否正常。若服务端未监听端口,后续所有设备连接均会失败。

Apache Apollo MQTT管理页面显示连接和队列状态
管理页面能看到连接和消息状态,说明MQTT服务端已启动并能用于后续联调。

第三步:Android项目配置与依赖

Android端推荐使用Eclipse Paho库进行连接、订阅和发布操作。配置时需完成以下关键步骤:

  1. 添加依赖:在Gradle文件中引入Eclipse Paho相关库。
  2. 配置权限:在AndroidManifest.xml中添加网络访问权限。
  3. 处理后台限制:针对Android 9及以上版本,需配置前台服务、后台限制及网络安全策略(如明文传输允许)。

参数封装建议:将服务端地址、端口、用户名、密码、客户端ID、上报主题和控制主题集中封装为配置类。避免散落在Activity的点击事件中,以便后续更换云平台时只需修改一处配置。

第四步:建立连接与数据订阅

连接成功后,立即订阅上报主题。收到消息时的处理逻辑如下:

  1. 解析数据:将接收到的JSON字符串解析为温度和湿度字段。
  2. 线程切换:MQTT回调通常不在UI线程执行,必须使用Handler或Coroutine切回主线程更新界面,否则可能引发崩溃或数据不刷新。
Android物联网控制台显示温度湿度和灯泡开关
Android控制台界面显示温度、湿度和灯泡状态,用于验证设备数据与控制入口。

第五步:ESP8266开发环境准备

硬件端使用Arduino IDE配置ESP8266开发板环境。操作顺序如下:

  1. 添加管理器地址:在首选项中添加ESP8266开发板管理器URL。
  2. 安装支持包:通过开发板管理器安装ESP8266核心库及MQTT客户端库。

务必在环境配置完成后,再进行业务代码的编写与调试。

Arduino IDE配置ESP8266开发板管理器地址
在Arduino IDE中添加ESP8266开发板管理器地址后,才能继续安装开发板支持包。

第六步:ESP8266发布温湿度消息

ESP8266端需先连接Wi-Fi,再连接MQTT服务端。读取DHT11传感器数据或模拟数据后,将JSON字符串发布到上报主题。示例数据格式如下:

{"temperature":26,"humidity":58}

调试技巧:若Android未收到消息,请使用桌面MQTT工具订阅同一主题,确认ESP8266是否真正发出消息。调试时应避免同时修改Android和硬件代码,以免无法定位错误源。

第七步:Android下发LED控制指令

当Android用户点击灯泡或开关按钮时,向控制主题发布指令(如onoff或JSON格式)。ESP8266订阅该主题后,根据消息内容切换GPIO输出状态。

验证方法:在ESP8266串口监视器中打印收到的主题和内容,确认指令是否到达。入门测试阶段,优先保证主题一致、客户端在线及网络可达;链路稳定后,再考虑重连机制、离线缓存及安全认证。

常见问题排查

验收清单

案例完成时,需满足以下四个条件:

  1. MQTT服务端可正常访问。
  2. Android App已成功连接并订阅主题。
  3. 温湿度数据能在Android界面实时显示。
  4. LED控制指令能被ESP8266接收并执行。

满足上述条件后,可进一步扩展历史数据记录、告警通知及设备列表管理等功能。

本文转载于:leelee_20260827927990400 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。