0Pricing
Arduino & IoT Academy · 课时

订阅命令并执行操作

收到消息时切换继电器

订阅命令并执行操作 是 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 反馈 — 无需本地设置。

此课程中的所有课时

  1. 为什么 MQTT 适合物联网
  2. 连接到代理服务器
  3. 发布传感器主题
  4. 订阅命令并执行操作
← 返回 Arduino & IoT Academy