sheen.bot 标志

深度见解

写给老师的 MQTT 讲解(不讲行话)

2026年4月25日·Sheen Robotics
写给老师的 MQTT 讲解(不讲行话)

MQTT 是大多数物联网面板背后的消息系统。想象一块教室公告板:设备把纸条钉在有名字的主题下面,一个代理再把它转交给所有订阅的人。

MQTT 是一套轻量的消息系统,让小型设备不必彼此直接对话就能共享数据。设备把一条短消息发布到一个有名字的主题上,一个叫代理的中心程序把它接住,凡是订阅了这个主题的一方都会收到一份副本。最好懂的画面就是教室里的公告板:你把纸条钉在某个标题下面,谁关心这个标题,谁就在得空的时候来读。

光凭这一个念头,几乎就够你给一个班讲明白它了。本文余下的部分,只是用大白话给四个部件命名。

是公告板,不是打电话

打电话需要两个人同时在线。教室里大多数传感器项目并不是这样。一个温度传感器可能每十秒发一次读数,但显示这个读数的面板也许是关着的,也可能某个学生一小时之后才把它打开。

MQTT 解决这件事的方式,跟公告板一模一样。传感器把纸条钉上去就走人。面板什么时候在看,就什么时候读这块板。两边都不需要知道对方存在,也不需要同时醒着。这就叫发布与订阅,也正因为如此,一块小小的开发板可以喂饱很多块屏幕,而它们之间不需要任何连线。

主题不过是标签

主题就是你把纸条钉在下面的那个标题。它写成用斜杠分隔的路径,读起来像文件夹结构:

  • classroom/temperature
  • lab/door/status
  • greenhouse/soil/moisture

这些名字是你自己起的,没有固定清单。订阅方只要它想要的那个标题。另外还有通配符,所以一块面板可以订阅 classroom/#,一次收下钉在 classroom 这个标题下的所有纸条。起好主题名是最值得教的一个习惯,因为当传感器从两个变成二十个时,一套整洁的命名方案能让项目一直读得懂。

代理坐在中间

代理就是那个把公告板运转起来的程序。每条消息都先到代理那里,再由代理转发给所有订阅者。设备永远只和代理说话,从不彼此对话,这让每台设备都能做得又简单又便宜。在学校项目里,代理通常是一台小服务器或者一项托管服务;学生很少需要见到它,他们只要把自己的开发板和面板指向同一个地址就行。

保留消息与遗嘱消息

有两个额外的特性会不断冒出来,而且都能塞进公告板这个画面里。

保留消息是一张一直钉在板上的纸条。通常一条消息转发一次就没了。如果一条消息被保留,代理会留住最新的那一条,于是后来才打开的面板会立刻看到当前数值,而不是一片空白。用在当前温度这类读数上再合适不过。

遗嘱消息是设备意外掉线时、由代理代它发出的一张纸条。它让面板在传感器一安静下来的那一刻就把它显示为离线,而不是永远挂着一个过期的数字。这两个特性加在一起,就是一块物联网屏幕能自己照看自己的原因。

面板为什么用它,你在课堂上又会在哪里遇到它

面板依赖 MQTT,是因为消息很小,它扛得住真实教室里那种时断时续的 wifi,而且一个代理就能同时服务很多设备。当一块sheenbot开发板读到传感器数值、一秒后实时屏幕就更新时,把这个数字带过去的正是发布与订阅。我们的sheenIoT 面板就是完全按这套方式工作的,订阅的正是你的学生自己选的主题。

教这个概念不需要硬件。学生可以先在 verse 仿真器里发布和接收消息,等这套心智模型落地之后,再换到真实的开发板上。如果你想和一个班从头到尾把它做出来,假期的机器人工作坊会完整覆盖一个从传感器到面板的项目。

给学生的五行心智模型

  • 发布就是把纸条钉到板上。
  • 订阅就是请人在某个标题下出现纸条时通知你。
  • 主题就是那个标题,写起来像 classroom/temperature
  • 代理就是大家共用的那块公告板。
  • 保留意思是最后一张纸条会一直钉着,留给下一个来读的人。

头几节课就把这份清单贴在墙上。一旦学生能指着公告板说出谁在钉、谁在读,MQTT 这个词就不再是行话,而是对某样他们已经能想象出来的东西的描述。

#MQTT#物联网#课堂#传感器#数据面板

更多深度见解