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

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

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

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

硬件搭建完成
树莓派上传温度数据至 Onenet云平台(HTTP)_第1张图片

开机树莓派,让树莓派与电脑在同一局域网,使用putty登陆树莓派
树莓派上传温度数据至 Onenet云平台(HTTP)_第2张图片
输入命令:sudo raspi-config
进入高亮选项卡 5 Interfacing Options 里面
树莓派上传温度数据至 Onenet云平台(HTTP)_第3张图片
进入高亮选项卡 P7 1-Wire 里面
树莓派上传温度数据至 Onenet云平台(HTTP)_第4张图片
选择 “是”
树莓派上传温度数据至 Onenet云平台(HTTP)_第5张图片
这样就打开单总线,然后退出即可

进入/boot/config.txt文件,在最后加上一句话,保存并退出
输入命令:sudo vim /boot/config.txt
树莓派上传温度数据至 Onenet云平台(HTTP)_第6张图片
执行命令重启树莓派:
sudo reboot

输入命令进入以下目录:
cd /sys/bus/w1/devices/
树莓派上传温度数据至 Onenet云平台(HTTP)_第7张图片
最后有一个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
树莓派上传温度数据至 Onenet云平台(HTTP)_第8张图片
树莓派上传温度数据至 Onenet云平台(HTTP)_第9张图片
树莓派上传温度数据至 Onenet云平台(HTTP)_第10张图片
进入桌面
树莓派上传温度数据至 Onenet云平台(HTTP)_第11张图片

将windows上的temp.py直接复制粘贴至树莓派桌面
输入命令: cd /home/pi/Desktop/
输入运行程序命令:sudo python temp.py
树莓派上传温度数据至 Onenet云平台(HTTP)_第12张图片

到云平台查看温度数据:
树莓派上传温度数据至 Onenet云平台(HTTP)_第13张图片

好了,上传完成

你可能感兴趣的:(树莓派上传温度数据至 Onenet云平台(HTTP))