值None或ValueError(“无效的JSON文件”。)

2024-09-29 17:20:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在为两个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.

Tags: tokengpiochannelpayloadstateprinttemperature湿度

热门问题