< >
Home » Farmbot开发入门教程 » farmbot开发入门教程-发送命令

farmbot开发入门教程-发送命令

说明:

  • FarmBotJS 将常见的 MQTT 和CeleryScript操作包装到单个模块中。这样您就可以专注于控制 FarmBot,而无需了解系统的底层协议

  • 然而,并非每个项目都是用 Javascript 编写的,用户有时希望用自己选择的语言(Python、Ruby、Java 等)编写自己的包装库

步骤1:了解协议

  • FarmBot 使用 MQTT 来传输实时数据,例如发送命令和获取实时状态更新。在编写 FarmBot 控制软件之前,需要具备 MQTT 知识。

  • 对于刚接触 MQTT 的开发人员,我们推荐 HiveMQ 的优秀“MQTT Essentials”教程。

步骤2:查找所需信息

  • 在发送命令之前,您需要获取以下信息:

    • API 令牌
    • 设备的 ID(参见"bot"API 令牌的声明)
    • MQTT 服务器主机名(参见"mqtt"API 令牌的声明)。
  • 当您创建 API 令牌时,API 会提供所有这些信息。您可以在此处找到生成令牌的说明。

  • 以下是示例令牌:

{
  "token": {
    "unencoded": {
      ...
      "mqtt": "clever-octopus.rmq.cloudamqp.com",
      "bot": "device_36"
    },
    "encoded": "eyJ0eXAiOiJK.eyJzdWIiOiJlbGl.6YWJldGhAaGFu"
    ...
  }
}
  • 在上面的 token 中,我们可以看到以下内容:
- 设备 ID 为device_36。这是您的 MQTT 服务器用户名。您稍后也需要使用它。
- API 令牌为eyJ0eX....NGE0。登录 MQTT 时请用其作为密码。
- MQTT 主机位于mqtt令牌的属性中。在本例中,MQTT 服务器主机为clever-octopus.rmq.cloudamqp.com。您的mqtt值可能不同,主机值可能会更改,恕不另行通知。始终从令牌中获取此值。切勿将主机直接硬编码mqtt到应用程序代码中- 它可能会在将来更改,恕不另行通知。

步骤 3:订阅主题

  • 现在您已掌握所有必需信息,我们可以订阅主题(如下所列)。在所有这些示例中,您都可以将其替换DEVICE_ID_HERE为您的实际设备 ID。在上面的示例中,设备 ID 将输入为device_36。

    • bot/DEVICE_ID_HERE/from_clients:此通道将接收设备必须处理的入站RPC请求。
    • bot/DEVICE_ID_HERE/from_device:对入站 RPC 请求的响应将从此通道发送回客户端。
    • bot/DEVICE_ID_HERE/status:机器人的“状态树”在此频道上不断更新。这将包括 X/Y/Z 坐标和机器人的同步状态等信息。
    • bot/DEVICE_ID_HERE/logs:供人类阅读的日志发送至此处。这与 Web 应用程序中看到的“ticker”相同。

步骤 4:发布命令

  • 如上所述,命令通过通道发送到设备/from_clients。这些命令必须格式化为有效的CeleryScript。相反,设备的响应可以在/from_device通道中查看。

  • 订阅该/status频道可以让开发人员实时查看整个 FarmBot OS 状态树。

纠错,疑问,交流: 请进入讨论区点击加入Q群

获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号


标签: none