当前位置: 首页 > 知识库问答 >
问题:

如何在Amazon AWS Lambda函数中发布到MQTT主题?

钱选
2023-03-14

我希望有一个简单的命令,就像我在bash中使用的一样,在AWS Lambda函数中发布一些内容到MQTT上的主题。按照:mosquitto_pub-h my.server.com-t“light/set”-m“on”

背景:我想和Alexa一起打开和关闭一盏灯。Alexa可以启动一个Lambda函数,在这个Lambda函数中,我想启动一个MQTT发布,因为lamp可以侦听MQTT主题并对那里的消息做出反应。(可能有更简单的解决方案,但我们处于一个复杂的(大学)网络中,这使得许多其他方法更加困难)

共有3个答案

尹正奇
2023-03-14

如果您使用的是Node.js,这将起作用-

var AWS = require('aws-sdk');
var iotdata = new AWS.IotData({ endpoint: '*****************.iot.us-east-1.amazonaws.com' });

exports.handler = async(event) => {
    console.log("Event => " + JSON.stringify(event));
    var params = {
        topic: "MyTopic",
        payload: JSON.stringify(event),
        qos: 0
    };

    return iotdata.publish(params, function(err, data) {
        if (err) {
            console.log("ERROR => " + JSON.stringify(err));
        }
        else {
            console.log("Success");
        }
    }).promise();
};

记住要添加iot:对这个lambda函数使用的角色的发布权限。

南门承教
2023-03-14

AWS SDK有两个类来处理物联网:物联网和物联网数据。IotData.publish是您正在寻找的方法。看起来Iot对象用于处理事物,IotData用于处理MQTT和阴影。这应该在关于MQTT和shadows的文档中直接引用,但事实并非如此。

此服务(IotData)也可在CLI中使用。

穆才良
2023-03-14

如果您正在使用Python,我可以使用下面的处理程序函数获得AWS Lambda函数来向AWS IoT发布消息:

import boto3
import json

client = boto3.client('iot-data', region_name='us-east-1')

# Change topic, qos and payload
response = client.publish(
        topic='$aws/things/pi/shadow/update',
        qos=1,
        payload=json.dumps({"foo":"bar"})
    )

您还需要确保角色(在Lambda功能配置中)附加了允许访问IoT发布功能的策略。在我的领导下-

{
   "Version": "2016-6-25",
   "Statement": [
    {
        "Effect": "Allow",
        "Action": [
            "iot:Publish"
        ],
        "Resource": [
            "*"
        ]
    }
   ]
}
 类似资料:
  • 更新时间:2019-10-31 10:56:59 节点简介 MQTT发布节点用于将设备的消息进行下发,自定义消息包,获取设备的信息,设备的动态 使用场景 使用MQTT发布节点,可以自定义提醒内容,下发设备的状态数据,下发设备信息,方便用户获取设备的信息,通常用于获取设备信息。 配置项 心跳配置 CONNECT指令中需包含Keep Alive(保活时间)。 保活心跳时间取值范围为30至1200秒。如

  • 我使用带有paho-mqtt的Python客户机发布Google Cloud IoT的特定主题:。下面是基于Google IoT文档示例的代码: 当我运行时,客户端连接但不发布。在Google IoT控制台,我可以看到以下错误信息: 无效的MQTT发布主题:projects/my_project/topics/sm1 下面是输出: 连接到Google IoT Broker... 连接状态:0--m

  • 有人知道我在哪里可以得到一些示例MQTT客户端Go(golang)代码,它在无限循环中发布和订阅? null 下面是我正在使用的代码: 我翻阅了GoDocs寻找一些关于如何保持连接畅通的提示,但似乎没有什么相关的。我当然可以在subscribe上执行无限循环,但这似乎效率低下。

  • 问题内容: 我在这个jar中制作了一个名为 GetOfferSoftware的* jar 文件,我有一个名为 Offer的 Main类, 并且该Offer类包含以下功能 *** 现在我想从 另一个 与GetOfferSoftware jar不相关的 Java程序 调用此函数,所以我的问题是如何从另一个Java类访问参数并将参数发送到getOffer()函数。伙计们先谢谢 问题答案: 为了使用另一个

  • 日志中的错误 2020-05-28 15:52:53.597错误112469---[nio-8080-exec-1]O.a.C.C.C.[.[.[/].[dispatcherServlet]:servlet.Service()对于servlet[dispatcherServlet]在路径[]上下文中引发异常[请求处理失败;嵌套异常是java.lang.IllegalStateException:没

  • 问题内容: 我试图使用。通过Node.js向Web服务提交xml请求。 这是我的代码。我的问题是,而不是我想将xml发布到服务。 何去做? 问题答案: 返回ClientRequest对象,该对象也是可写流。代替做或