问题: 我想要做的是让 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;
}
}
我尝试过的事情:
- 管家-mqtt-master。
- 让它工作,它说“Rest Server Listening on http://[::]:8081”但我不知道这到底是什么意思。我的 API 可在 azure api 链接上找到。
- mqtt2rest-master
- 过时了(我认为?)
成功的解决方法(但不是很可靠/功能齐全):
- 节点-RED
- 通过使用 a
inject node
以http request node
4 秒的固定间隔不断轮询 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(我不知道它是如何工作的)