Я пытаюсь отправить свое измерение температуры с DS18B20, подключенного к малине Pi, к Thingspeak. Я создал канал для Thingspeak для этого проекта.Raspberry tempdata to Thingspeak
Я использую код по этой ссылке.
# Registrador de temperatura Nergiza.com
# python
import httplib, urllib, os, glob, time
os.system('modprobe w1-gpio')
os.system('modprobe w1-therm')
base_dir = '/sys/bus/w1/devices/'
device_folder = glob.glob(base_dir + '28*')[0]
device_file = device_folder + '/w1_slave'
def read_temp_raw():
f = open(device_file, 'r')
lines = f.readlines()
f.close()
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
return temp_c
temperatura = read_temp()
params = urllib.urlencode({'field1': temperatura, 'key':'Pon_aquí_tu_key'})
headers = {"Content-type": "application/x-www-form-urlencoded","Accept":
"text/plain"}
conn = httplib.HTTPConnection("api.thingspeak.com:80")
conn.request("POST", "/update", params, headers)
response = conn.getresponse()
print response.status, response.reason
data = response.read()
conn.close()
Я изменил ключ на свою api_key из Thingspeak. Когда я пытаюсь запустить это в терминале, он возвращает:
400 Bad Request
400 Bad Request является своим родом плохого синтаксиса.
Thingspeak имеет ограничение на получение данных каждые 15 секунд.
Но даже добавив time.sleep(16)
внизу, это ничего не меняет.
Я использую USB-модем/ручку.
Есть ли у кого-нибудь предложения?
Добро пожаловать в SO! Хотя эта ссылка может дать правильный ответ, ссылка может опуститься в будущем, что делает правильный ответ недоступным. Скопируйте соответствующую часть здесь вместо использования ссылок. –