目录

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

目录

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

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

器材列表:

1、树莓派3b+

2、ds18b20温度传感器

3、可上网的路由器

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

硬件搭建完成

https://i-blog.csdnimg.cn/blog_migrate/a7d3850f4fa4ba2351099a64122c7016.jpeg

开机树莓派,让树莓派与电脑在同一局域网,使用putty登陆树莓派

https://i-blog.csdnimg.cn/blog_migrate/f36bd0e38cc54afb68fcd67275022c03.jpeg

输入命令:sudo raspi-config

进入高亮选项卡 5 Interfacing Options 里面

https://i-blog.csdnimg.cn/blog_migrate/a7ba95b33d12fefa680a815858184eb2.jpeg

进入高亮选项卡 P7 1-Wire 里面

https://i-blog.csdnimg.cn/blog_migrate/30d66057c854aed2781ec4a151fe00a1.jpeg

选择 “是”

https://i-blog.csdnimg.cn/blog_migrate/42e962fd5a9a2be91d534029d4e64fb4.jpeg

这样就打开单总线,然后退出即可

进入/boot/config.txt文件,在最后加上一句话,保存并退出

输入命令:sudo vim /boot/config.txt

https://i-blog.csdnimg.cn/blog_migrate/7b754c80482f32cc39f8dcec7973e2f1.jpeg

执行命令重启树莓派:

sudo reboot

输入命令进入以下目录:

cd /sys/bus/w1/devices/

https://i-blog.csdnimg.cn/blog_migrate/3482e863913f3c2eae01ca3b23a6971e.jpeg

最后有一个w1_slave文件

使用命令:cat w1_slave

https://i-blog.csdnimg.cn/blog_migrate/2898b6d015bb764ede15fa9bca013e0e.jpeg

好了,开始写入程序

使用记事本新建一个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

https://i-blog.csdnimg.cn/blog_migrate/982290270daea21095b3af11f0c1f783.jpeg

https://i-blog.csdnimg.cn/blog_migrate/51094ead3a161e423bbfd3faab29340e.jpeg

https://i-blog.csdnimg.cn/blog_migrate/23d70896a66c6285f6c1a50be7785930.jpeg

进入桌面

https://i-blog.csdnimg.cn/blog_migrate/4d3dfa52669e7d654a77636cfa65d314.jpeg

将 windows 上的 temp.py 直接复制粘贴至树莓派桌面

输入命令: cd /home/pi/Desktop/

输入运行程序命令:sudo python

https://i-blog.csdnimg.cn/blog_migrate/3ba9cbc733db574e5f09462f22481251.jpeg

到云平台查看温度数据:

https://i-blog.csdnimg.cn/blog_migrate/570bc6f40109054dce9f951ad1460c0a.jpeg

好了,上传完成