【发布时间】:2017-07-07 11:09:19
【问题描述】:
我是 AWS IOT 的新手。我有以下 python 代码将随机温度发布到主题“温度”。 我正在关注 Hackster.io 项目教程,但在该教程中,作者只是将数据发送到 AWS IOT 并使用另一个 python 脚本接收它。我想将此数据存储到 DynamoDB 中。
import paho.mqtt.client as paho
import os
import socket
import ssl
from time import sleep
from random import uniform
connflag = False
def on_connect(client, userdata, flags, rc):
global connflag
connflag = True
print("Connection returned result: " + str(rc) )
def on_message(client, userdata, msg):
print(msg.topic+" "+str(msg.payload))
#def on_log(client, userdata, level, buf):
# print(msg.topic+" "+str(msg.payload))
mqttc = paho.Client()
mqttc.on_connect = on_connect
mqttc.on_message = on_message
#mqttc.on_log = on_log
awshost = "data.iot.eu-west-1.amazonaws.com"
awsport = 8883
clientId = "myThingName"
thingName = "myThingName"
caPath = "aws-iot-rootCA.crt"
certPath = "cert.pem"
keyPath = "privkey.pem"
mqttc.tls_set(caPath, certfile=certPath, keyfile=keyPath, cert_reqs=ssl.CERT_REQUIRED, tls_version=ssl.PROTOCOL_TLSv1_2, ciphers=None)
mqttc.connect(awshost, awsport, keepalive=60)
mqttc.loop_start()
while 1==1:
sleep(0.5)
if connflag == True:
tempreading = uniform(20.0,25.0)
mqttc.publish("temperature", tempreading, qos=1)
print("msg sent: temperature " + "%.2f" % tempreading )
else:
print("waiting for connection...")
运行上述脚本后,我可以使用“测试”功能查看它发送到 AWS IOT 的数据。
我已经创建了一个规则
"SELECT * FROM #"
DynamoDB 操作为:
Table name : temperature
Hash key: temperature
Hash key type: STRING
Hash key value: ${temperature()}
Range key: timestamp
Range key type: STRING
Range key value: ${timestamp()}
还有一个影子如下:
https://c1.staticflickr.com/5/4259/35723809136_d968acf299_o.png
DynamoDB 表配置为:
Partition key: temperature{String}
Sort key: timestamp{String}
温度未保存在 DynamoDB 表中。我做错了什么?
【问题讨论】: