我最近一直在构建一些 Raspberry pi 温度传感器,使用 Pi zeros 来监控某些计算机楼层的温度峰值。我正在使用初始状态设置并将数据发送到他们的仪表板。好吧,我得到了一个完美的设置,没有任何问题,并且它可以很好地发送数据。但是当我去设置第二个时,完全相同的方式,使用完全相同的代码,我不断收到以下错误:
Traceback (most recent call last):
File "tempsensor.py", line 20, in <module>
temp_f = format(temp_c * 9.0 / 5.0 + 32.0, ".2f")
TypeError: unsupported operand type(s) for *: 'NoneType' and 'float'
我不精通python,但我尝试查找类似的问题,但没有什么能真正帮助我解决我的问题。但是我不明白的是这段代码基本上是其他的复制粘贴,以及其他人使用的。当什么都没有改变时,为什么这会返回错误?
下面还列出了我一直在使用的完整代码。谢谢你的帮助!
import Adafruit_DHT
from ISStreamer.Streamer import Streamer
import time
# --------- User Settings ---------
SENSOR_LOCATION_NAME = "Office"
BUCKET_NAME = ":partly_sunny: Room Temperatures"
BUCKET_KEY = "rt0129"
ACCESS_KEY = "PLACE YOUR INITIAL STATE ACCESS KEY HERE"
MINUTES_BETWEEN_READS = 10
METRIC_UNITS = False
# ---------------------------------
streamer = Streamer(bucket_name=BUCKET_NAME, bucket_key=BUCKET_KEY, access_key=ACCESS_KEY)
while True:
humidity, temp_c = Adafruit_DHT.read_retry(Adafruit_DHT.DHT22, 4)
if METRIC_UNITS:
streamer.log(SENSOR_LOCATION_NAME + " Temperature(C)", temp_c)
else:
temp_f = format(temp_c * 9.0 / 5.0 + 32.0, ".2f")
streamer.log(SENSOR_LOCATION_NAME + " Temperature(F)", temp_f)
humidity = format(humidity,".2f")
streamer.log(SENSOR_LOCATION_NAME + " Humidity(%)", humidity)
streamer.flush()
time.sleep(60*MINUTES_BETWEEN_READS)