【发布时间】:2022-12-11 12:53:00
【问题描述】:
我有一个连接到 AWS IoT Core for Lambda 的 tektelic 智能房间传感器。目的地发布到一个主题。在 MQTT 测试客户端中,我收到一条格式正确的消息:
{
"WirelessDeviceId": "24e8d6e2-88c8-4057-a60f-66c5f3ef354e",
"PayloadData": "A2cA4ARoaAD/ASw=",
"WirelessMetadata": {
"LoRaWAN": {
"ADR": true,
"Bandwidth": 125,
"ClassB": false,
"CodeRate": "4/5",
"DataRate": "3",
"DevAddr": "019e3fcb",
"DevEui": "647fda00000089e2",
"FCnt": 4676,
"FOptLen": 0,
"FPort": 10,
"Frequency": "904700000",
"Gateways": [
{
"GatewayEui": "647fdafffe014abc",
"Rssi": -92,
"Snr": 5.800000190734863
},
{
"GatewayEui": "0080000000024245",
"Rssi": -93,
"Snr": 7.25
},
{
"GatewayEui": "24e124fffef464da",
"Rssi": -86,
"Snr": 4.25
}
],
"MIC": "eb050f05",
"MType": "UnconfirmedDataUp",
"Major": "LoRaWANR1",
"Modulation": "LORA",
"PolarizationInversion": false,
"SpreadingFactor": 7,
"Timestamp": "2022-12-07T21:46:13Z"
}
}
}
当我使用 lambda 订阅主题时:
Rule query statement: SELECT *, topic() AS topic FROM 'lora/#'
我缺少大部分数据:
{
"Gateways": {
"Timestamp": "2022-12-07T21:46:13Z",
"SpreadingFactor": 7,
"PolarizationInversion": false,
"Modulation": "LORA",
"Major": "LoRaWANR1",
"MType": "UnconfirmedDataUp",
"MIC": "eb050f05",
"Snr": 4.25,
"Rssi": -86,
"GatewayEui": "24e124fffef464da"
},
"Snr": 7.25,
"Rssi": -93,
"GatewayEui": "0080000000024245",
"topic": "lora/tektelic/smart_room"
}
相关代码是:
def handler(event, context):
print(json.dumps(event))
该事件看起来像大约一半的数据,格式错误且顺序相反。 原始事件中有一个 Gateways[ ],它现在是一个对象,其中包含原始数组中的一些数据,以及数组外的其他数据。
发送消息的设备信息以及我要处理的有效负载丢失。
我正在关注this solution construct pattern,唯一的修改是 lambda 代码和 select 语句。
我尝试将内存从默认的 128M 增加到 1024M,但没有任何更改。
我还在 this construct pattern 之后将原始消息存储在 AWS S-3 中,它与 MQTT 数据匹配。我对其中的 select 语句进行了类似的更改。
关于在哪里寻找问题的想法?
最近的见解是 select 语句:
iot_topic_rule_props=iot.CfnTopicRuleProps(
topic_rule_payload=iot.CfnTopicRule.TopicRulePayloadProperty(
rule_disabled=False,
description="Processing of DTC messages from Lora Sensors.",
sql="SELECT topic() AS topic, * FROM 'lora/#'",
actions=[]
)
),
将 sql 替换为:
sql="SELECT * FROM 'lora/#'",
生成一个格式良好的事件。
将其替换为:
sql="SELECT topic() AS topic, * FROM 'lora/#'",
生成相同的格式错误事件,除了 topic 是第一个标签而不是最后一个。
我打算让这个问题保持开放,以回答发生了什么,因为它感觉像是一个错误。如果它只是对 sql 不满意,这应该会产生一个错误。
【问题讨论】:
标签: aws-lambda aws-iot-core lorawan