首页 > 解决方案 > AWS lambda update_thing_shadow 规则问题

问题描述

我会先说我是 AWS 的新手,但需要使用它来为课堂设置 MQTT 代理。问题可能源于我只是不熟悉应该如何使用它,但是每当我使用 lambda 函数更新我的东西“TestMichael”的影子时,如果温度超出范围,规则应该发送一条短信通知但它没有. 当我在测试下发布它时,通知有效,但当 lambda 函数更改它时无效。有人知道这是为什么吗?

TLDR:使用 lambda 函数更新事物的影子不会激活我创建的规则。为什么是这样?

下面是相关的 lambda 函数和规则查询:

def lambda_handler(event, context):
temp = 74 #text should be sent if > 70
client = boto3.client('iot-data', region_name='us-east-1')

#Code portion for changing the state
data = {"state" : { "reported" : { "Temperature" : temp , "Moisture" : moist, "Light" : light, "Conductivity" : conduct}}}
mypayload = json.dumps(data)
response = client.update_thing_shadow(
    thingName = 'TestMichael', 
    payload = mypayload
)

这是我的规则中使用的 SQL 查询:

SELECT * FROM '$aws/things/TestMichael/shadow/update' WHERE Temperature > 70

标签: pythonamazon-web-servicesaws-lambdamqttiot

解决方案


发生这种情况时,我使用 AWS IoT 中的测试功能进行检查。您可以收听“$aws/things/TestMichael/shadow/update”主题,看看它是否在 lambda 更新影子时发布了数据。


推荐阅读