树莓派上传温度数据至 Onenet云平台(HTTP)

因项目功能需要,这次使用的是树莓派3b+,首次使用树莓派,记录一下

器材列表:
1、树莓派3b+
2、ds18b20温度传感器
3、可上网的路由器

使用带上拉电阻的DS18B20,DQ端口连接树莓派的GPIO25,VCC接3.3V,GND接GND

硬件搭建完成
在这里插入图片描述

开机树莓派,让树莓派与电脑在同一局域网,使用putty登陆树莓派
在这里插入图片描述
输入命令:sudo raspi-config
进入高亮选项卡 5 Interfacing Options 里面
在这里插入图片描述
进入高亮选项卡 P7 1-Wire 里面
在这里插入图片描述
选择 “是”
在这里插入图片描述
这样就打开单总线,然后退出即可

进入/boot/config.txt文件,在最后加上一句话,保存并退出
输入命令:sudo vim /boot/config.txt
在这里插入图片描述
执行命令重启树莓派:
sudo reboot

输入命令进入以下目录:
cd /sys/bus/w1/devices/
在这里插入图片描述
最后有一个w1_slave文件
使用命令:cat w1_slave
在这里插入图片描述
t=29062/1000就是当前的温度值

好了,开始写入程序
使用记事本新建一个temp.py文件,拷贝以下程序到该文件中,只需更改三个地方:
使用你的APIKEY,设备id,数据流名称

#coding:utf-8
import subprocess
import os
import glob
import time

import urllib2
import json
import time
import datetime

APIKEY = 'xxxxxxxx'  #你的APIKEY

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():
    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
        return temp_c
		
		
def http_put():
        temperature= read_temp()
        url='http://api.heclouds.com/devices/xxxx/datapoints'  #你的设备id
        values={'datastreams':[{"id":"xxxx","datapoints":[{"value":temperature}]}]}#你的数据流名称
 
        jdata = json.dumps(values)
        print jdata
        request = urllib2.Request(url, jdata)
        request.add_header('api-key', APIKEY)
        request.get_method = lambda:'POST'
        request = urllib2.urlopen(request)
        return request.read()

while True:
	print(read_temp())  
	time.sleep(1)
	resp = http_put()
	print "OneNET result:\n %s" %resp
	time.sleep(2)

然后使用windows自带的远程桌面:
右键开始运行,输入:mstsc
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
进入桌面
在这里插入图片描述

将windows上的temp.py直接复制粘贴至树莓派桌面
输入命令: cd /home/pi/Desktop/
输入运行程序命令:sudo python temp.py
在这里插入图片描述

到云平台查看温度数据:
在这里插入图片描述

好了,上传完成

  • 3
    点赞
  • 68
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值