订阅命令并执行操作
收到消息时切换继电器
订阅命令并执行操作 是 CoddyKit 上的免费 Arduino & IoT Academy 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Arduino & IoT Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Arduino & IoT Academy 课程共包含 4 节课。
监听消息
发布会将数据发送出去;订阅则让设备接收数据。这就是云端向硬件发送命令的方式。
订阅主题
使用 subscribe 告诉代理您想要哪个主题。从此以后,匹配的消息会直接推送到您的设备。
client.subscribe("home/livingroom/light");消息通过回调到达
收到消息时,会触发您编写的回调函数。每当已订阅的主题收到消息,代理都会调用它。
回调签名
您的回调会接收主题、有效载荷字节以及长度。您只需在设置过程中注册一次。
void onMessage(char* topic, byte* payload, unsigned int len) {
}注册回调
请在连接之前使用 setCallback 连接您的函数。之后,库会将每条消息都转交给它。
client.setCallback(onMessage);安全地读取有效载荷
有效载荷是原始字节,而不是已经完成的字符串。请遍历其长度来构建 String,这样就不会读到末尾之外。
String msg;
for (int i = 0; i < len; i++)
msg += (char)payload[i];判断消息含义
请将消息与已知命令进行比较。对文本进行简单的 if 检查,就足以将 ON 和 OFF 映射到相应操作。
if (msg == "ON") digitalWrite(RELAY, HIGH);执行命令
现在执行真正的操作:切换继电器、移动舵机或改变灯光。这就完成了从云端到物理世界的闭环。
也要检查主题
如果您订阅了多个主题,请先检查主题参数。它会告诉您该命令针对的是哪台设备。
重新连接后重新订阅
连接中断后,您的订阅也会丢失。每次重新连接后都要再次调用 subscribe,否则您将收不到任何消息。
让回调保持简短
请在回调中快速完成工作并尽快返回。耗时过长可能会阻塞 MQTT 循环,并错过新消息。
快速检查
WiFi 断开后,设备重新连接成功,却不再响应命令。重新连接破坏了什么?
回顾
您已经学会订阅、在回调中处理消息、读取有效载荷、执行命令,以及在重新连接后重新订阅。🎉
常见问题解答
「订阅命令并执行操作」课时是免费的吗?
是的 — 「订阅命令并执行操作」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Arduino & IoT Academy 课程的其余内容,请升级到 CoddyKit PRO。 Arduino & IoT Academy 课程共包含 4 节课。
「订阅命令并执行操作」这节课中我会学到什么?
收到消息时切换继电器 你通过在浏览器中直接运行的动手代码来练习 Arduino & IoT Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Arduino & IoT Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Arduino & IoT Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。
「订阅命令并执行操作」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Arduino & IoT Academy 课中编写并运行代码吗?
能。每节 Arduino & IoT Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 为什么 MQTT 适合物联网
- 连接到代理服务器
- 发布传感器主题
- 订阅命令并执行操作