RESTapi 和 MQTT 代理

物联网 MQTT 网页服务 休息 API
2021-06-22 08:10:54

问题: 我想要做的是让 REST API 能够通过 IFTTT Webhook 发布到我的 Mosquitto MQTT Broker(它也托管在我的 Pi 端口 1883 上)。

语境

我使用 ASP.NET Core 构建了一个 web 应用程序,它使用 NGINX 托管在我的 Raspberry Pi 3 B+ 上。同样,我还使用 ASP.NET Core 制作了一个 RESTFUL API。至于 REST API,我可以将其发布到 Microsoft Azure/也可以将其托管在我的 Pi 上,以给出的解决方案中的哪个更好。

我试过的

我已经成功尝试使用 Home Assistant 的 REST API,/api/service/mqtt/publish但在设置我自己的API时无济于事。我很确定我在 ASP.NET Core REST API 配置中遗漏了一些东西。我这样做就像我做任何 HttpPost 认为它会起作用一样。

代码

[Route("api/broker")]
[ApiController]
public class BrokerController : ControllerBase
{
    #region HTTPGET
    // HTTP GET: /api/broker
    [HttpGet]
    public IEnumerable<Broker> Get()
    {
        List<Broker> dbList = DBUtl.GetList<Broker>("SELECT * FROM Broker");
        return dbList;
    }
}

我尝试过的事情:

  1. 管家-mqtt-master。
  • 让它工作,它说“Rest Server Listening on http://[::]:8081”但我不知道这到底是什么意思。我的 API 可在 azure api 链接上找到。
  1. mqtt2rest-master
  • 过时了(我认为?)

成功的解决方法(但不是很可靠/功能齐全):

  1. 节点-RED
  • 通过使用 ainject nodehttp request node4 秒的固定间隔不断轮询 afunction node并最终将获得的对象(使用 JSON 中的 mqtt 有效负载)推送到mqtt node,我能够从 HTTP RESTapi 到 MQTT Broker 的桥接。但是这种方法漏洞很多,效率不高。如果可能,我希望我的工作方式与家庭助理的工作方式相同。

链接:https : //developers.home-assistant.io/docs/en/external_api_rest.html

EG:向 https:///api/services/mqtt/publish 发送 POST 请求?将我的 POST 请求发送到 MQTT Broker(我不知道它是如何工作的)

1个回答

使用本质上支持 REST API 的 MQTT Broker 可能更简单吗?包含安全和私有 MQTT 命名空间的flespi 代理一样,一些家庭自动化系统可以免费使用和积极使用此处描述用于消息发布的 REST API