我试图将连接到Raspberry Pi的DS18B20的温度测量值发送到Thingspeak。 我在Thingspeak上为这个项目创建了一个频道。
http://nergiza.com/como-hacer-un-registrador-de-temperatura-online-con-raspberry-pi/
我正在使用此链接中的代码。
# 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()
我已经从Thingspeak将密钥更改为我的api_key。 当我尝试在终端中运行它时,它返回:
400 Bad Request
400 Bad Request是一种错误的语法
Thingspeak每15秒接收一次数据是有限制的
但即使在底部添加time.sleep(16)
,也不会改变任何内容。
我正在使用USB调制解调器/棒。
有没有人有任何建议?
答案 0 :(得分:0)
这是一个菜鸟的错误 在API_Key中O被更改为0。
脚本适用于DS18B20和thingspeak.com
答案 1 :(得分:0)
我在这里https://www.nersolar.es/使用相同的代码并且工作正常
答案 2 :(得分:0)
我使用这个简单的代码将数据发送到raspberry pi中的thingspeak,这对我来说很好。直到这个...
var ctx = test.getContext('2d');
var obj = { x:100,y: 100,width: 100,height: 100}
var mouse = {x:0, y:0, width:10, height:10};
// change zoom to 0.5
var zoom = 1;
var move = {startX: 0, startY: 0, click: false};
setInterval(function(){
ctx.clearRect(0,0,test.width,test.height);
ctx.save();
ctx.scale(zoom,zoom);
ctx.fillRect(obj.x,obj.y,obj.width,obj.height);
ctx.restore();
if(move.click){
obj.x = mouse.x - move.startX;
obj.y = mouse.y - move.startY;
}
},1000/60);
function collision(obj1,obj2){
if(obj1.x*zoom < obj2.x + obj2.width &&
(obj1.x + obj1.width)*zoom > obj2.x &&
obj1.y *zoom < obj2.y + obj2.height &&
(obj1.height + obj1.y)*zoom > obj2.y){
return true;
}
}
window.addEventListener('mousedown', function(e){
if(collision(obj,mouse)){
move.click = true;
move.startX = e.pageX - obj.x;
move.startY = e.pageY - obj.y;
}
if(e.which==3 || e.which==2){
zoom=0.5;
}
}, false);
window.addEventListener('mouseup', function(e){
move.click = false;
}, false);
window.addEventListener('mousemove', function(e){
mouse.x = e.pageX;
mouse.y = e.pageY;
}, false);