树莓派+DHT11通过Onenet平台实现远程实时监控温湿度

树莓派吃灰已久,最近心血来潮就做了这个实时监控温湿度系统(ps:学习中)

1:材料准备:

DHT11温湿度传感器                  树莓派               杜邦线

2:连线 

VCC 连接树莓派1脚

GND 连接树莓派6脚

DATA 连接树莓派3脚

3:在树莓派上写程序

创建一个目录  --- 进入目录 ----创建主程序wendu.py

sudo mkdir dht11

cd dht11

sudo nano wendu.py  (ps:编辑器自选)

将主程序写入

import RPi.GPIO as GPIO
import time

channel =2
data = []
j = 0

GPIO.setmode(GPIO.BCM)

time.sleep(1)

GPIO.setup(channel, GPIO.OUT)
GPIO.output(channel, GPIO.LOW)
time.sleep(0.02)
GPIO.output(channel, GPIO.HIGH)
GPIO.setup(channel, GPIO.IN)

while GPIO.input(channel) == GPIO.LOW:
  continue
while GPIO.input(channel) == GPIO.HIGH:
  continue

while j < 40:
  k = 0
  while GPIO.input(channel) == GPIO.LOW:
    continue
  while GPIO.input(channel) == GPIO.HIGH:
    k += 1
    if k > 100:
      break
  if k < 8:
    data.append(0)
  else:
    data.append(1)

  j += 1

print "sensor is working."
print data

humidity_bit = data[0:8]
humidity_point_bit = data[8:16]
temperature_bit = data[16:24]
temperature_point_bit = data[24:32]
check_bit = data[32:40]

humidity = 0
humidity_point = 0
temperature = 0
temperature_point = 0
check = 0

for i in range(8):
  humidity += humidity_bit[i] * 2 ** (7-i)
  humidity_point += humidity_point_bit[i] * 2 ** (7-i)
  temperature += temperature_bit[i] * 2 ** (7-i)
  temperature_point += temperature_point_bit[i] * 2 ** (7-i)
  check += check_bit[i] * 2 ** (7-i)

tmp = humidity + humidity_point + temperature + temperature_point

if check == tmp:
  print "temperature :", temperature, "*C, humidity :", humidity, "%"
else:
  print "wrong"
  print "temperature :", temperature, "*C, humidity :", humidity, "% check :", check, ", tmp :", tmp

mytemp = '%f' %temperature
myhumi = '%f' %humidity

tmp_output = open('/home/pi/dht11/tmp_data.txt', 'w')
hud_output = open('/home/pi/dht11/hum_data.txt', 'w')

tmp_output.write(mytemp)
hud_output.write(myhumi)

tmp_output.close
hud_output.close
GPIO.cleanup()

按Ctrl +X 保存退出

4:

登陆注册好的Onenet中移物联网平台 ,点击开发者中心,创建一个新产品

树莓派+DHT11通过Onenet平台实现远程实时监控温湿度_第1张图片

创建完成后 记住你的APIkey

树莓派+DHT11通过Onenet平台实现远程实时监控温湿度_第2张图片

点击左边的设备列表 添加设备  记住设备ID

树莓派+DHT11通过Onenet平台实现远程实时监控温湿度_第3张图片

点击左边的数据流模板 添加数据流

树莓派+DHT11通过Onenet平台实现远程实时监控温湿度_第4张图片树莓派+DHT11通过Onenet平台实现远程实时监控温湿度_第5张图片

两个数据流模板添加完成,点击左边的应用管理, 添加设备

树莓派+DHT11通过Onenet平台实现远程实时监控温湿度_第6张图片

编辑应用 

树莓派+DHT11通过Onenet平台实现远程实时监控温湿度_第7张图片

 

添加折线图来监控温湿度变化情况,设置属性,把添加好的数据流模板添加进去 ,温湿度各添加一个折线图

树莓派+DHT11通过Onenet平台实现远程实时监控温湿度_第8张图片

 

Onenet设置好了

5:在树莓派dht11目录下写上传温度的数据程序  sudo nano tmp.py

import urllib2
import json
import time
import datetime

APIKEY = '你的APIKey'


def http_put():
        file = open("/home/pi/dht11/tmp_data.txt")
        temperature= float(file.read())
        CurTime = datetime.datetime.now()
        url='http://api.heclouds.com/devices/你的设备ID/datapoints'
        values={'datastreams':[{"id":"temp","datapoints":[{"at":CurTime.isoformat(),"value":temperature}]}]}

        print "the time is: %s" %CurTime.isoformat()
        print "The upload temperature value is: %.3f" %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:
        time.sleep(5)
        resp = http_put()
        print "OneNET result:\n %s" %resp
        time.sleep(5)

注意将你的APIkey 和设备ID填入程序里,写好之后保存退出。

6:同样的写入上传湿度的程序  sudo nano hum.py

根据温度上传的代码改一下就可以了,这里就不再累述(PS:写累了)

在dht11下创建两个txt文件,tmp_data.txt,hum_data.txt   (PS:这很重要)

7:设置自动执行(不明白的去查一下资料)

sudo crontab -e

点击2     进入编辑界面  在最下面输入下面的代码

*/**** python/home/pi/dht11/tmp.py
*/**** python/home/pi/dht11/hum.py
*/**** python/home/pi/dht11/wendu.py

这个文件路径是我自己的,不知道自己文件路径的话 pwd 命令 查看一下,写好之后保存退出程序就可以运行了

(ps:如果最后没有做好 ,可以单独运行每个py文件 查找原因。最好给文件目录及下面的文件直接赋予最高权限,不然容易出不来)

8:点击Onenet的设备管理,点击设置好的应用就能看看实时温湿度数据了,这是我的结果,我也是趟了好多雷才成功!

树莓派+DHT11通过Onenet平台实现远程实时监控温湿度_第9张图片

 

你可能感兴趣的:(树莓派)