在树莓派、Arduino和JavaScript之间使用MQTT

4
我和我的一个朋友正在做一个项目,将网页托管在树莓派上,我希望通过MQTT向Arduino发送一条消息,Arduino读取传感器数据后再将值发送回Pi,以在网页上显示。
我希望在Pi上使用Mosquito作为代理,并将Arduino和网页视为客户端。
我只是在努力弄清楚它们如何配合起来。
我看到的很多示例都使用了Web Sockets、Node.js和MQTT.io,我真的很困惑。
请有人帮我把所有东西拼凑起来,并解释一下每个部件的作用和它们如何协同工作?
提前感谢您!
2个回答

5

Websockets 允许 Web 浏览器与服务器之间建立双向通信管道。

要使用 Websockets,您需要启用 Websocket 的 MQTT 代理。目前您需要单独安装此功能,一些现有示例在这里。 Mosquitto 将在下一个版本 1.4 中启用 Websockets,如果您希望可以进行编译

使用 mqtt 和 websockets 可以实现以下示例和操作:

  1. 从 Arduino 发布温度数据到 MQTT 代理。
  2. 通过 Python 脚本订阅 Arduino 发布的主题,并将数据填充到 MySql 数据库中。
  3. 将实时网站订阅到主题并显示当前温度,并显示为折线图。

谢谢Matt!所以所有的WebSockets都是为了提供一种浏览器与MQTT代理通信的方式?我曾考虑过使用MySQL来完成它,但如果可能的话,我真的很想尝试纯粹使用MQTT来完成它。我能用Node.js来替换WebSockets吗?这是类似的东西吗? - Lee Wiggins
基本上,它充当一个可以订阅/发布主题的客户端。我只是用mysql来存储历史数据。关于Node.js,抱歉我不太了解,但我看过这个例子,也许可以帮到你:http://blog.hekkers.net/2012/10/13/realtime-data-with-mqtt-node-js-mqtt-js-and-socket-io/。 - Matt.

4
过去我们曾经做过有关使用MQTT和WebSocket构建应用程序的教程。幻灯片(+代码)可以在Slideshare上找到。
如果您对MQTT通过WebSocket的详细工作原理感兴趣,this blog post可能会对您有所帮助。此外,完整的示例WebSocket/MQTT应用程序教程可以在this blog post中找到。

Hivemq能在树莓派上运行吗? - Matt.
嗨!谢谢你的回复!我非常感激!虽然HiveMQ很酷,但我们真的想使用mosquito作为代理。我认为现在mosquito支持WebSockets,我会选择这个方向!那些教程真的帮助了我的理解 :-) - Lee Wiggins
@Matt。HiveMQ在Raspberry Pi上运行得很好。它虽然是为多核服务器设计的,但对于少于1000个连接的简单安装,Raspberry Pi表现出色。在安装HiveMQ之前,请确保安装了当前的JDK以获得最佳体验。 - Dominik Obermaier
谢谢Dominik,我不确定它是否被支持。@LeeWiggins,你可以在你的树莓派上安装HiveMQ,这样你就可以同时拥有MQTT/Websockets了,而且HiveMQ的安装非常简单。 - Matt.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接