我要做的是将传感器数据从Raspbery Pi发布到AWS,AWS将数据存储到DynamoDB并调用lambda函数。然后,这个lambda函数向raspberry Pi订阅的主题发布消息。在
所以我的问题是没有调用回调,所以我无法访问从AWS lambda发布的消息。我验证了这个消息是否被发布到由RaspberryPi在AWSIoT测试上订阅的主题。我在raspberry Pi上使用AWSIoTPythonSDK库,在AWS lambda函数上使用Boto3。在
另外,我读过一个使用AWS IoT shadow的解决方案,但是这个解决方案已经很快就要完成了——我不想放弃我的努力,因为它似乎有一行代码不起作用。Send data from cloud to aws iot thing
请让我知道如何进一步解决这个问题的任何想法。在
到目前为止,我已经尝试在subscribe函数之后打印堆栈,它从堆栈中输出这个堆栈:*我没有让整个循环完成*pi@raspberrypi:~/eve-pi $ pi@raspberrypi:~/eve-pi $ python3 sensor_random.py
for line in traceback.format_stack():
File "sensor_random.py", line 66, in
for line in traceback.format_stack():
^CTraceback (most recent call last):
File "sensor_random.py", line 68, in
time.sleep(2)
keyboardInterrupt
-bash: pi@raspberrypi:~/eve-pi: No such file or directory
这是Raspberry Pi代码:*****省略了发布代码*********
^{pr2}$
以下是AWS lambda代码:import json
import boto3
def lambda_handler(event, context):
#testing for pi publishing
message = {
'topic': 'thing02/water',
'payload': {'message': 'test'}
}
boto3.client(
'iot-data',
region_name='us-west-2',
aws_access_key_id='',
aws_secret_access_key='
).publish(
topic='thing02/water',
payload=json.dumps(message),
qos=1
)
print(json.dumps(message))