0

简短的问题:如何在远程 Ubuntu 16 服务器上托管 MQTT 服务器,同时托管将使用 MQTT 数据的 HTTP 服务器?

真正的问题:我想构建一个由 ESP32 监控和控制的物联网系统,它将分别从远程服务器(可能是 LAMP?)发送反馈和接受命令。我还希望用户登录托管在此远程服务器上的网站,在那里她/他可以监控任何传感器值或发送命令(例如打开或关闭 LED)。那么去这里的路是什么?

有人建议我使用 MQTT,但随后出现了上述问题。

我发现了什么:我发现使用 Mosquitto MQTT,我可能能够使用 websockets 为网站提供服务。但我更喜欢可扩展性更高的 HTTPS 方法。也就是说,我打算将一个数据库链接到我的站点并运行我的 PHP 脚本。

我不是那么有经验,所以请不要把任何事情视为理所当然:)

4

2 回答 2

0

您真的不应该将 MQTT 代理与 HTTP 服务器结合起来,特别是如果您打算将 HTTP 服务器实际用作应用程序服务器(运行后端逻辑,例如 PHP)。这是 2 个完全独立的系统。没有什么可以阻止您的应用程序逻辑作为客户端连接到代理。

如果您打算在 WebSockets 上使用 MQTT,您可以使用链接 nginx 来代理与代理的 WebSockets 连接,以便它可以位于相同的逻辑 HTTP/HTTPS 地址后面。

于 2018-05-11T09:11:11.070 回答
0

MQTT 使用 TCP 连接并遵循发布/订阅 API 模型,而 Web(http)遵循 Restful API 模型(创建、读取、更新、删除)。如果你想坚持使用 MQTT,那么你应该使用像HIVE的企业 MQTT 这样的 SAAS 服务,它提供了这种可集成性,但会收取一些费用,作为回报,他们会为你提供所有设备的帐户和仪表板。否则,您可以尝试制作自己的中间件,将 MQTT 与 Web 服务集成。

我推荐的另一件事是CoAP,它也是一种 M2M 协议,但遵循 Restful API 模型和 UDP 连接。它具有直接转发代理将 coap 数据包转换为 https 数据包,反之亦然。

在 MQTT 中,您有一个中央服务器(代理),节点向其发送数据并通过topic filters.

在 CoAP 中,每个有一些数据要共享的设备都成为服务器,对其数据感兴趣的其他设备成为客户端,并向GET相应的服务器发送请求以获取其数据。类似地PUT,来自客户端的请求以及有效负载将更新服务器上的值。

于 2018-05-11T09:38:27.007 回答