回到首页 返回首页
回到顶部 回到顶部
返回上一页 返回上一页
best-icon

【FireBeetle 2 ESP32 P4 开发套件】Home Assistant 物联网温度计 简单

头像 无垠的广袤 2025.08.05 27 0

 

本文介绍了 DFRobot FireBeetle 2 ESP32 P4 开发套件通过 ADC 采集温度数据,并结合 MQTT 协议和无线 WiFi 模块实现温度上传至 Home Assistant 平台,实现物联网远程温度计的项目设计。

包括开发环境搭建、硬件连接、工程测试、流程图、代码、MQTTX 测试、HA 测试、运行效果展示等。

项目介绍

环境搭建:Docker、EMQX、HA 部署、MQTT 配置;

工程测试:流程图、MicroPython 代码、MQTTX 通信测试;

HA 测试:配置文件、面板卡片设计、温度显示;

环境搭建

包括 Docker、EMQX、HA 部署、MQTT 通信配置等。

Docker 安装

下载并安装 Docker Desktop 软件;

镜像源更换

为了便于后续 EMQX 和 HA 平台部署,需要添加镜像源以加速下载。

依次进入 设置 - Docker Engine

docker_engine.jpg

添加代码如下

{
  "builder": {
    "gc": {
      "defaultKeepStorage": "20GB",
      "enabled": true
    }
  },
  "debug": true,
  "experimental": false,
  "insecure-registries": [
    "registry.docker-cn.com",
    "docker.mirrors.ustc.edu.cn"
  ],
  "registry-mirrors": [
    "https://docker.registry.cyou",
    "https://docker-cf.registry.cyou",
    "https://dockercf.jsdelivr.fyi",
    "https://docker.jsdelivr.fyi",
    "https://dockertest.jsdelivr.fyi",
    "https://mirror.aliyuncs.com",
    "https://dockerproxy.com",
    "https://mirror.baidubce.com",
    "https://docker.m.daocloud.io",
    "https://docker.nju.edu.cn",
    "https://docker.mirrors.sjtug.sjtu.edu.cn",
    "https://docker.mirrors.ustc.edu.cn",
    "https://mirror.iscas.ac.cn",
    "https://docker.rainbond.cc",
    "https://do.nark.eu.org",
    "https://dc.j8.work",
    "https://dockerproxy.com",
    "https://gst6rzl9.mirror.aliyuncs.com",
    "https://registry.docker-cn.com",
    "http://hub-mirror.c.163.com",
    "http://mirrors.ustc.edu.cn/",
    "https://mirrors.tuna.tsinghua.edu.cn/",
    "http://mirrors.sohu.com/"
  ]
}

选择 Apply 即可。

HA 部署

打开命令行终端并执行指令

docker pull homeassistant/home-assistant:latest

待拉取 HA 镜像完成;

磁盘根目录创建 homeassistant 文件夹,新建 docker-compose.yaml 文件,并添加如下代码

version: '3'
services:
  homeassistant:
    image: homeassistant/home-assistant:latest
    container_name: homeassistant
    restart: always
    volumes:
      - /data/homeassistant/config:/config
    environment:
      - TZ=Asia/Shanghai
    ports:
      - "8123:8123"

保存文件,并在终端打开该文件夹,执行 docker compose up -d 指令,完成 HA 容器创建。

进入 Containers 容器页面,点击 homeassistant 端口链接,进入 HA 浏览器页面,创建并登录账户;

EMQX 部署

在添加软件镜像源的基础上,终端执行指令

docker pull emqx/emqx:latest

拉取最新版 emqx 镜像

终端执行指令

docker run -d --name emqx -p 1883:1883 -p 8083:8083 -p 8084:8084 -p 8883:8883 -p 18083:18083 emqx/emqx:latest

创建并运行 emqx 容器;

若提示端口被占用报错,可删除已创建的 emqx 容器,进入 Images 标签页,点击 emqx/emqx 镜像对应的启动按钮,手动配置容器名称、Host端口等参数,端口填写 0 ,系统随机分配可用端口。

containers_emqx_ha.jpg

配置 EMQX

(1)进入 Containers 容器页面,点击 emqx 端口链接,进入 emqx 浏览器页面,初始登录账户名 admin 密码 public ;

(2)依次打开 访问控制 - 客户端认证 - 创建 - Password-Based - 内置数据库 - (默认配置)- 创建 ;

(3)用户管理 - 新建用户 - 自定义用户名和密码 .

MQTT

(1)命令行终端输入 ipconfig 获取本地计算机 IPv4 地址,如 192.168.31.160

(2)配置 Home Assistant ,依次点击设置 - 设备与服务 - 添加集成 - 搜索 MQTT - 填写代理信息。

代理栏输入计算机 IP 地址,端口 1883,用户名和密码为 EMQX 中创建的用户信息。

(3)进入 HA 所在文件夹,打开 configuration.yaml 配置文件,添加温度传感器设备

mqtt:
  sensor:
    - name: "Temperature"
      state_topic: "esp/adc/temp"
      suggested_display_precision: 1
      unit_of_measurement: "°C"
      value_template: "{{ value_json.temperature }}"

保存更改并 重新加载配置 以应用更改。

(4)进入 HA 概览页面,可见新增的传感器卡片以及 Temperature 项。

硬件连接

该项目使用板载 ADC0 对应引脚为 GPIO16;

Type-C 数据线连接 USB-CDC 实现调试和供电。

工程测试

包括流程图、工程代码、MQTTX 测试、HA 测试等。

流程图

flowchart_adc_temp_mqtt.jpg

工程代码

数据线连接开发板和电脑;

运行 Thonny IDE 软件,配置解释器和设备端口,新建文件并添加如下代码

#!/usr/bin/env python3
# main.py
import json
import network
import time
import random
from machine import ADC, Pin
from umqtt.simple import MQTTClient

# ========== 用户可改区域 ==========
WIFI_SSID = "xxx"
WIFI_PASS = "xxx"
ADC_PIN   = 16            # ESP32-P4 的 ADC0 引脚
MQTT_SERVER = "192.168.31.160"
MQTT_PORT   = 32768
MQTT_CLIENT_ID = 'micropython-client-{id}'.format(id=random.getrandbits(8))
MQTT_USER   = "xxx"
MQTT_PASS   = "xxx"
PUB_TOPIC   = "esp/adc/temp"
PUB_INTERVAL = 2         # 发布间隔(秒)
# ===================================
def wifi_connect(ssid, pwd):
    sta = network.WLAN(network.STA_IF)
    sta.active(True)
    if not sta.isconnected():
        print("Connecting Wi-Fi...")
        sta.connect(ssid, pwd)
        for _ in range(20):
            if sta.isconnected():
                break
            time.sleep(1)
    print("Wi-Fi connected:", sta.ifconfig())
# --------------- 温度转换 ---------------
def read_temperature():
    """
    线性转换:
    参考电压 3.3 V,温度传感器输出 10 mV/°C
    """
    adc = ADC(Pin(ADC_PIN))
    adc.atten(ADC.ATTN_11DB)       # 0-3.3 V
    raw = adc.read()
    volt = raw / 4095 * 3.3        # ADC 电压
    temp = (volt - 1.4) * 100      # ADC 温度
    return round(temp, 1)

# --------------- MQTT 连接 ---------------
def mqtt_connect():
    c = MQTTClient(MQTT_CLIENT_ID, MQTT_SERVER, MQTT_PORT,
                   MQTT_USER, MQTT_PASS)
    c.connect()
    print("[MQTT] Connected to", MQTT_SERVER)
    return c

def mqtt_publish(client, data: dict):
    payload = json.dumps(data)
    client.publish(PUB_TOPIC, payload)
    print("[MQTT] Sent ->", payload)

# --------------- 主函数 ---------------
def main():
    wifi_connect(WIFI_SSID, WIFI_PASS)  # 连接 WiFi
    client = mqtt_connect()
    while True:
        temp = read_temperature()
        mqtt_publish(client, {"temperature": temp})
        time.sleep(PUB_INTERVAL)

if __name__ == "__main__":
    main()

保存代码并运行;

终端打印 WiFi 连接信息以及 MQTT 消息发布内容。

shell_adc_mqtt.gif

 

MQTTX 测试

下载并安装 MQTTX 软件;

新建连接,输入本地计算机 IP 地址、端口号、MQTT Broker 用户名、密码等;

运行连接,添加订阅主题 esp/adc/temp 获取监听消息;

mqttx_adc_temp.jpg

HA 测试

在 HA 添加 MQTT 集成设备的基础上,在 概览 - 传感器 可获取实时温度更新

ha_temp.jpg

此外,结合 HA 智能移动 APP 平台,可远程获取实时温度信息。

总结

本文介绍了 DFRobot FireBeetle 2 ESP32 P4 开发套件通过 ADC 采集温度数据,并结合 MQTT 协议和无线 WiFi 模块实现温度上传至 Home Assistant 平台,实现物联网远程温度计的项目设计,为该开发板在物联网领域的开发设计和应用提供了参考。

评论

user-avatar