我正在为两个MCU传感器在AWS物联网上设置SNS推送通知。在
现在,当湿度较低时,我收到了警报,所以我想包含温度/湿度数据,但它要么给我一个值none,要么抛出一个错误Invalid JSON。我怎么解决这个问题?在
工作代码:
def myShadowUpdateCallback(payload, responseStatus, token):
print()
print('UPDATE: $aws/things/' + SHADOW_HANDLER +
'/shadow/update/#')
print("payload = " + payload)
print("responseStatus = " + responseStatus)
print("token = " + token)
channel = 21
GPIO.setup(channel, GPIO.IN)
while True:
if GPIO.input(channel):
myDeviceShadow.shadowUpdate(
'{"state":{"reported":{"moisture":"low"}}}',
myShadowUpdateCallback, 5)
else:
myDeviceShadow.shadowUpdate(
'{"state":{"reported":{"moisture":"okay"}}}',
myShadowUpdateCallback, 5)
电子邮件结果:
^{pr2}$为了让DH22温度/湿度传感器正常工作,我添加了:
import Adafruit_DHT
humidity, temperature = Adafruit_DHT.read_retry(Adafruit_DHT.DHT22, 20)
已更改:
def myShadowUpdateCallback(payload, responseStatus, token):
print()
print('UPDATE: $aws/things/' + SHADOW_HANDLER +
'/shadow/update/#')
print("payload = " + payload)
print("responseStatus = " + responseStatus)
print("token = " + token)
print('Temperature={}*F Humidity={}%'.format(temperature, humidity))
while True:
if GPIO.input(channel):
myDeviceShadow.shadowUpdate(
'{"state":{"reported":{"moisture":"low","humidity":{"0":"0.1f"},"temperature":{"1":"0.1f"}}}}',
myShadowUpdateCallback, 5)
else:
myDeviceShadow.shadowUpdate(
'{"state":{"reported":{"moisture":"okay","humidity":{"0":"0.1f"},"temperature":{"1":"0.1f"}}}}',
myShadowUpdateCallback, 5)
错误:
当湿度正常时,温度和湿度显示:
Temperature=None*F Humidity=None%
当湿度低时,我得到一个错误:
myShadowUpdateCallback, ValueError: Invalid JSON file.
似乎部分{0:0.1f}不是有效的json。 可以将其更改为{“0”:“0.1f”}或其他有效的json。在
相关问题 更多 >
编程相关推荐