DS18B20温度センサーを多数つなぎ、Pythonでデータを取得していましたが、突然できなくなりました。エラーメッセージは、
Traceback (most recent call last):
File "***.py", line *, in <module>
device_folder = glob.glob(base_dir + '28')[n]
IndexError: list index out of range
です。
対処法をご教授お願いします。
(数日前まではうまくいっていたのに不思議です)
言語
Python
コード
import os
import glob
import time
import datetime
import subprocess
import ambient
os.system('modprobe w1-gpio')
os.system('modprobe w1-therm')
while True:
dt_now = datetime.datetime.now()
print dt_now
for n in range(5): base_dir = '/sys/bus/w1/devices/' device_folder = glob.glob(base_dir + '28*')[n] device_file = device_folder + '/w1_slave' def read_temp_raw(): catdata = subprocess.Popen(['cat',device_file], stdout=subprocess.PIPE, stderr=subprocess.PIPE) out,err = catdata.communicate() out_decode = out.decode('utf-8') lines = out_decode.split('\n') return lines def read_temp(): lines = read_temp_raw() while lines[0].strip()[-3:] != 'YES': time.sleep(0.2) lines = read_temp_raw() equals_pos = lines[1].find('t=') if equals_pos != -1: temp_string = lines[1][equals_pos+2:] temp_c = float(temp_string) / 1000.0 #temp_f = temp_c * 9.0 / 5.0 + 32.0 return temp_c temp = read_temp() code = 'temp{} = {}'.format(n, temp) exec(code) #print(temp0, temp1, temp2, temp3, temp4) print('temp0=', temp0) print('temp1=', temp1) print('temp2=', temp2) print('temp3=', temp3) print('temp4=', temp4)```
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。