首页 > 解决方案 > 如何使用 Mosquitto 创建 REST API,例如 arest.io

问题描述

我想创建像 arest.io 这样的云服务,以通过 REST API 访问 MQTT 代理(Mosquitto),就像在 cloud.arest.io 服务上一样。主要目标是在 mosquitto mqtt 代理和 apache2 http 服务器之间架起一座桥梁,以访问特定的 mqtt 主题,例如:

cloud.arest.io/47fd9g/digital/5/1

其中47fd9g/digital/5/1表示在“47fd9g”主题中发布“digital/5/1”。在 http 响应中,我可以从连接到“47fd9g”主题的 IoT 设备获取 JSON 数据。如果您曾经使用过 arest arduino 库和 arest.io 云,您就会明白我的意思。我有基于 ubuntu 的服务器,带有 apache、php、mosquitto、php、Mosquitto-PHP php 扩展。Mosquitto 在我的 IoT 设备上运行良好,但我不知道如何让 mosquitto 和 apache 像 arest.io 一样一起工作。

标签: mqttmosquitto

解决方案


正如您所描述的,您可以使用许多PHP MQTT 客户端来编写服务,但您不能直接将 apache 连接到 mosquitto。你将不得不写桥。

但是按照您的建议将数据编码到 URL 中并不能很好地工作,它假设主题只有一个级别的深度,这实际上不能很好地扩展并且不允许使用通配符。

最好有一个 HTTP POST 到http://example.com/some/multi/level/topic,将消息有效负载作为帖子的主体将发布到主题some/multi/level/topic更有意义。


推荐阅读