# esp8266 **Repository Path**: abbasspace/esp8266 ## Basic Information - **Project Name**: esp8266 - **Description**: esp8266 安卓端 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 1 - **Created**: 2023-12-02 - **Last Updated**: 2026-05-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: esp8266, BilibiliVedio, demo ## README # ESP8266 物联网 · Android 客户端 基于 **MQTT** 的轻量级 Android 端,用于连接 **阿里云物联网平台** 下的设备,展示温湿度、控制灯光,并记录连接与消息日志。可与 ESP8266 等硬件端配合,完成「设备 → 云端 → App」的数据链路实验。 > 教学向项目,配套硬件与云端流程可参考下方 **相关教程**。 ## 界面预览 | 主界面 | 添加 / 配置设备 | 侧栏菜单 | |:---:|:---:|:---:| | ![主界面](screenshot/main_activity_sc.png) | ![添加或配置设备](screenshot/add_device_sc.png) | ![侧栏菜单](screenshot/left_pane.png) | --- ## 功能概览 | 能力 | 说明 | |------|------| | MQTT 连接 | 使用 Eclipse Paho,按阿里云规则生成用户名、密码与 Broker 地址 | | 设备属性 | 订阅云端下发的物模型属性,展示温度、湿度;开关控制 LED | | 参数配置 | 支持在应用内填写或通过 **剪贴板 JSON** 快速导入设备三元组 | | 本地存储 | `SharedPreferences` 持久化 ProductKey / DeviceName / DeviceSecret 及自定义 Topic | --- ## 技术栈 - **语言**:Java 17 - **UI**:Material 3、ViewBinding / DataBinding、`DrawerLayout`、`CoordinatorLayout` - **架构**:`ViewModel` + `LiveData`(轻量 MVVM 风格) - **网络**:`org.eclipse.paho:org.eclipse.paho.client.mqttv3`(MQTT v3) - **序列化**:Gson **环境要求**(见 `app/build.gradle.kts`): - Android Studio 建议 **Giraffe / Hedgehog** 及以上 - `compileSdk` / `targetSdk`:**33** - `minSdk`:**24** --- ## 快速开始 ### 克隆仓库 ```bash git clone https://gitee.com/abbasspace/esp8266.git cd esp8266 ``` (若使用 GitHub 等镜像,将 URL 替换为你的远程地址即可。) ### 构建运行 1. 使用 **Android Studio** 打开工程根目录。 2. 等待 Gradle 同步完成后,选择设备或模拟器。 3. 执行 **Run**(或命令行:`./gradlew assembleDebug`)。 --- ## 使用说明 ### 1. 阿里云物联网平台准备 在控制台完成产品与设备创建,并获取设备的 **ProductKey**、**DeviceName**、**DeviceSecret**。默认 MQTT 接入域名为 **华东 2(上海)**(代码中为 `cn-shanghai`,见 `MqttConnectUtil`)。 ### 2. 通过剪贴板导入(推荐) 1. 在阿里云控制台 **设备详情** 中复制设备连接信息(需包含三元组的 JSON 形态)。 2. 剪贴板内容需能被解析为包含以下字段的 JSON(字段名大小写与 Gson 注解一致): | 字段 | 说明 | |------|------| | `ProductKey` | 产品 Key | | `DeviceName` | 设备名称 | | `DeviceSecret` | 设备密钥 | 3. 打开本应用,在弹出对话框中选择使用剪贴板参数并完成后续配置即可。 ### 3. Topic 说明(物模型默认) 应用内 `MqttParamsWrapper` 在未自定义时,会使用类似以下物模型 Topic(具体以代码为准): - **上报(发布)**:`/sys/{productKey}/{deviceName}/thing/event/property/post` - **设置(订阅)**:`/sys/{productKey}/{deviceName}/thing/service/property/set` 若你在控制台或固件侧使用了不同 Topic,请在应用设置中改为与实际一致。 ### 4. 界面操作摘要 - **侧栏菜单**:左上角打开抽屉,可进入「关于」等入口。 - **设备名称卡片**:点击进入底部设置表,编辑连接参数。 - **灯光开关**:通过 MQTT 下发 JSON 控制设备端 LED(与固件约定格式需一致)。 --- ## 工程结构(简要) ``` app/src/main/java/com/example/esp8266/ ├── MainActivity.java # 主界面、抽屉、列表日志、剪贴板检测 ├── MainViewModel.java # MQTT 参数与连接生命周期 ├── MqttConnectUtil.java # Paho 连接、订阅、发布 ├── MqttParamsWrapper.java # 三元组与 Topic 封装 ├── AliyunClipboardBean.java # 剪贴板 JSON → 连接参数 ├── AliyunIoTSignUtil.java # 阿里云 MQTT 签名 ├── SettingBottomFragment.java # 连接参数底部表单 └── … # 适配器、物模型解析 Response 等 ``` --- ## 相关教程 本项目思路与实验流程可参考 B 站系列视频(含 ESP8266、阿里云与 App 端): **[物联网项目实战入门 (ESP8266 + 阿里云 + APP)【重制】](https://b23.tv/s93EIeI)** --- ## 参与贡献 欢迎通过 Issue / Pull Request 提出建议或提交改进(例如:连接状态展示、多地域 Broker、TLS、物模型扩展等)。 感谢一起折腾硬件与物联网实验的伙伴们。 --- ## 开源许可 本项目采用 **Apache License 2.0**,详见仓库根目录 [`LICENSE`](LICENSE)。 --- ## English summary **ESP8266 IoT Android client** — Java app using **MQTT (Eclipse Paho)** to connect **Alibaba Cloud IoT** devices: shows temperature/humidity, toggles an LED, and logs connection events. Supports **clipboard JSON** import for `ProductKey` / `DeviceName` / `DeviceSecret`. Built with **Material 3**, **ViewModel + LiveData**, **minSdk 24**, **targetSdk 33**. Licensed under **Apache-2.0**.