用途:为多块 XIAO ESP32S3 构建统一的 MQTT 仪表板。各板以 STA 模式接入同一 WiFi,把触摸传感器数值通过 MQTT 发布,并接受 LED 开/关命令;一套相同固件烧录到所有板,无需逐板修改,因为板子会依据自身 MAC 地址派生唯一 ID。
架构:N 块板 → MQTT broker(Mosquitto,运行在该 WiFi 的一台 PC 上)→ 浏览器仪表板(MQTT-over-WebSocket,mqtt.js)。
主要能力与主题(<id> 为 MAC 派生十六进制 ID):xiao/<id>/touch(板→看板,整数,约每 500ms);xiao/<id>/led/set(看板→板,ON/OFF/TOGGLE);xiao/<id>/led/state(板→看板,ON/OFF,retained);xiao/<id>/status(板→看板,online/offline,retained,LWT 在不正常断开时自动发布 offline)。触摸基线约为 16000–18000,触摸时升至 40000 以上。
使用方式:先向用户确认 WiFi SSID/密码(须为 2.4GHz)、Mosquitto 运行位置、本次是否烧录多块板。在 broker 机器上用 PowerShell 查看 LAN IP 并检查 1883/9001 监听;必要时以管理员权限运行 setup_broker.ps1 与 setup_firewall.ps1(会触发 UAC,需用户自行点击“是”),并用 netstat 确认监听在 0.0.0.0 而非 127.0.0.1。将 assets/esp32s3_mqtt_dashboard.ino.tpl 复制为 <name>/<name>.ino,替换 WIFI_SSID、WIFI_PASS、MQTT_HOST 占位符;安装 arduino-cli lib install "PubSubClient";编译与烧录:arduino-cli compile --fqbn esp32:esp32:XIAO_ESP32S3 <SKETCH_DIR>,arduino-cli upload -p COM4 --fqbn esp32:esp32:XIAO_ESP32S3 <SKETCH_DIR>。烧录后仅读一次串口确认连接,之后用 mosquitto_sub -h <broker-ip> -p 1883 -t "xiao/#" -v 验证,用 mosquitto_pub -h <broker-ip> -p 1883 -t "xiao/<id>/led/set" -m "ON" 控制 LED。看板为静态站点,无构建步骤:cd assets/dashboard_web 后 python -m http.server 8080,打开 http://localhost:8080,在页面输入 broker 地址并连接。
限制与注意:Mosquitto 2.x 未配置 listener 时仅绑定回环,需显式 listener 1883 0.0.0.0;服务以 LocalSystem 运行,普通 shell 无法改配置,需 UAC 提权;Windows 防火墙默认拦截 LAN 入站,需为 1883 与 9001 添加入站规则;浏览器无法直接使用 MQTT TCP,需另配 9001 的 WebSocket 监听;Serial 打开会复位板子并可能造成假掉线,确认连接后不要再开串口;不要把 SSID/密码或 LAN IP 硬编码进共享模板;DHCP 分配的 broker IP 可能在重启后变化,建议做 DHCP 保留;各板必须使用 MAC 派生 ID,重复客户端 ID 会互相抢连接。缺少的信息(如具体界面文案、其他平台支持、收费与否)暂未提供。