ESP8266 使用 MicroPython 接入 ThingsBoard
正文与配图来自原稿。板端用 MicroPython 写业务,经 WiFi + MQTT 把遥测报到 ThingsBoard。
1、概述
当初需要学习 MicroPython:代码直接发到板子上就能跑。设备业务可由应用侧编写,嵌入式侧更多封装底层函数供调用。方案当时做通了,但公司未全面推广。
2、设备
购买的是 ESP8266(某宝常见开发板)。MicroPython 官方也常推荐用该类板子入门。板子一般带教程,按教程学即可把 MicroPython 用熟。
3、推荐
非广告。原稿使用的是「小蜜蜂」ESP8266 一类套件:带文档与视频,适合自学。


4、接入 ThingsBoard
学完后用 MicroPython 的 WiFi + MQTT 往 ThingsBoard 发消息。示例逻辑:
- STA 模式连 WiFi
umqtt.simple.MQTTClient连 TB 的 MQTT(默认 1883)- 循环向
v1/devices/me/telemetry发布 JSON 遥测
请把 WiFi、服务器地址、设备 Access Token(作 MQTT 用户名;密码可按你环境配置,常用 Token 作 username)改成自己的,不要提交真实密码到仓库。
python
import time
from umqtt.simple import MQTTClient
import network
import ujson
import random
print("开始连接网络......")
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
if not wlan.isconnected():
# 改成你的 WiFi
wlan.connect('YOUR_WIFI_SSID', 'YOUR_WIFI_PASSWORD')
while not wlan.isconnected():
pass
print("网络连接成功......")
print('ip:', wlan.ifconfig()[0])
print("开始创建MQTT客户端......")
# server:ThingsBoard 主机;user:设备 Access Token(按你 TB 版本/配置)
mqttclint = MQTTClient(
client_id='esp8266',
server='YOUR_THINGSBOARD_HOST',
port=1883,
user='YOUR_DEVICE_ACCESS_TOKEN',
password='', # 许多环境可留空,以你平台配置为准
keepalive=60
)
mqttclint.connect()
print("MQTT客户端连接成功......")
temperature = 37.5
while True:
temperature = temperature + 1
payload = '{"temperature": %s}' % (temperature)
print('send msg:', payload)
mqttclint.publish(
topic='v1/devices/me/telemetry',
msg=payload,
qos=1,
retain=False
)
print("send msg success")
time.sleep(3)要点:
| 项 | 说明 |
|---|---|
| Topic | 设备遥测默认 v1/devices/me/telemetry |
| 鉴权 | 用设备 Access Token 作 MQTT 用户名(与 MQTTX 模拟设备相同思路) |
| 库 | umqtt.simple(需烧录/安装支持 umqtt 的 MicroPython 固件) |
在 TB 创建设备 → 复制 Token → 填进代码 → 烧录运行 → 在设备最新遥测中应能看到递增的 temperature。
补充(辅)
- 固件需含
network、umqtt;可用 Thonny 等工具传.py到板子。 - 公网 MQTT 建议后续改 8883 + TLS;内网调试可先用 1883。
client_id多设备时勿冲突;Token 每设备唯一。- 平台侧规则链、告警等与 场景联动 相同,与板端语言无关。
