覆盆子tempdata到Thingspeak

时间:2016-01-06 09:56:19

标签: python raspberry-pi

我试图将连接到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调制解调器/棒。

有没有人有任何建议?

3 个答案:

答案 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);