Raspberry pi connect temperature and humidity to onenet (移动云平台)
工具
树莓派连接温度传感器
- #!/usr/bin/python
- import RPi.GPIO as GPIO
- import time
- channel =4
- 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/pi/test/dht11/tmp_data.txt', 'w')
- hud_output = open('/home/pi/pi/test/dht11/hum_data.txt', 'w')
- tmp_output.write(mytemp)
- hud_output.write(myhumi)
- tmp_output.close
- hud_output.close
- GPIO.cleanup()
#!/usr/bin/python
import RPi.GPIO as GPIO
import time channel =4
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/pi/test/dht11/tmp_data.txt', 'w')
hud_output = open('/home/pi/pi/test/dht11/hum_data.txt', 'w') tmp_output.write(mytemp)
hud_output.write(myhumi) tmp_output.close
hud_output.close
GPIO.cleanup()
运行代码后会出现两个文件分别来保存温度和湿度,如下图:
这样一来温湿度的数据就保存下来了,然后就是读取并上传了
上传数据至云端
通过代码上传数据
- <span style="font-size: 18px;">import urllib2
- import json
- import time
- import datetime
- APIKEY = '你的APIKey'
- def http_put():
- file = open("/home/pi/pi/test/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)</span>
import urllib2
import json
import time
import datetime APIKEY = '你的APIKey' def http_put():
file = open("/home/pi/pi/test/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)
上传湿度数据代码:
- import urllib2
- import json
- import time
- import datetime
- APIKEY = '你的APIKey'
- def http_put():
- file = open("/home/pi/pi/test/dht11/hum_data.txt")
- humidity= float(file.read())
- CurTime = datetime.datetime.now()
- url='http://api.heclouds.com/devices/11302038/datapoints'
- values={'datastreams':[{"id":"hum","datapoints":[{"at":CurTime.isoformat(),"value":humidity}]}]}
- print "the time is: %s" %CurTime.isoformat()
- print "The upload humidity value is: %.3f" %humidity
- 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()
- time.sleep(5)
- resp = http_put()
- print "OneNET result:\n %s" %resp
- file.closes
import urllib2
import json
import time
import datetime APIKEY = '你的APIKey' def http_put():
file = open("/home/pi/pi/test/dht11/hum_data.txt")
humidity= float(file.read())
CurTime = datetime.datetime.now()
url='http://api.heclouds.com/devices/11302038/datapoints'
values={'datastreams':[{"id":"hum","datapoints":[{"at":CurTime.isoformat(),"value":humidity}]}]} print "the time is: %s" %CurTime.isoformat()
print "The upload humidity value is: %.3f" %humidity 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() time.sleep(5)
resp = http_put()
print "OneNET result:\n %s" %resp
file.closes
数据流问题
自动执行代码并上传数据
- sudo crontab -e
sudo crontab -e
选择nano,也就是2,然后在最后几行添加这么几句话
- */1 * * * * python /home/pi/pi/test/dht11/transfer_tmp.py
- */1 * * * * python /home/pi/pi/test/dht11/transfer_hum.py
- */1 * * * * python /home/pi/pi/test/dht11/cpdht11.py
*/1 * * * * python /home/pi/pi/test/dht11/transfer_tmp.py
*/1 * * * * python /home/pi/pi/test/dht11/transfer_hum.py
*/1 * * * * python /home/pi/pi/test/dht11/cpdht11.py
Raspberry pi connect temperature and humidity to onenet (移动云平台)的更多相关文章
- SITP & Raspberry Pi
系统安装 系统选择树莓派论坛提供的下载地址 Download 我选择了其中的SSH-2017-01-11-raspbian-jessie.zip[良心推荐] 选择一个大于8G的内存卡,利用 Win32 ...
- (0)开始 Raspberry Pi 项目前需要知道的 10 件事
https://www.digikey.cn/zh/articles/techzone/2017/feb/10-things-to-know-before-starting-a-raspberry-p ...
- RASPBERRY PI 外设学习资源
参考: http://www.siongboon.com/projects/2013-07-08_raspberry_pi/index.html Raspberry Pi Get st ...
- 常用Raspberry Pi周边传感器的使用教程
在Raspberry Pi 的使用和开发过程中,你可能时常需要一些硬件和传感器等来支持你的开发工作,例如,加入一个超声波测距的模块来让你的Raspberry Pi具备测距功能,加入一个测温模块以实现测 ...
- 常用Raspberry Pi周边传感器的使用教程(转)
转:http://bbs.xiaomi.cn/thread-7797152-1-1.html 在Raspberry Pi 的使用和开发过程中,你可能时常需要一些硬件和传感器等来支持你的开发工作,例如, ...
- 用Raspberry Pi搭建Azure IOT解决方案
Raspberry Pi是一款基于Linux的单板机电脑.它由英国的树莓派基金会所开发,目的是以低价硬件及自由软件刺激在学校的基本计算机科学教育.树莓派配备一枚博通(Broadcom)出产的ARM架构 ...
- A new comer playing with Raspberry Pi 3B
there are some things to do for raspberry pi 3b for the first time: 1, connect pi with monitor/KB/mo ...
- Raspberry Pi UART with PySerial
参考:http://programmingadvent.blogspot.hk/2012/12/raspberry-pi-uart-with-pyserial.html Raspberry Pi UA ...
- Raspberry Pi Resources-Using the UART
参考:RPi Serial Connection 本文来自:http://www.raspberry-projects.com/pi/programming-in-c/uart-serial-port ...
随机推荐
- mybatis基础(下)
mybatis和spring整合 需要spring通过单例方式管理SqlSessionFactory spring和mybatis整合生成代理对象,使用SqlSessionFactory创建SqlSe ...
- 环境设置——pyCharm环境下导入MySQLdb遇到的一系列问题
本文转自http://blog.sina.com.cn/s/blog_135031dae0102yc8l.html 安装好pyCharm后想要import MySQL,结果发现了一系列问题,像推到了塔 ...
- 仿9GAG制作过程(五)
有话要说: 在做完了数据展示功能之后,就想着完善整个APP.发现现在后台非常的混乱,有好多点都不具备,比方说:图片应该有略缩图和原图,段子.评论.点赞应该联动起来,段子应该有创建时间等. 于是就重新设 ...
- (办公)mysql连接不上(java.sql.SQLException: null, message from server: "Host 'LAPTOP-O0GA2P8J' is not allowed to connect to this MySQL server")(转)
转载自csdn文章:https://blog.csdn.net/Tangerine_bisto/article/details/803461511.对所有主机进行访问授权 GRANT ALL PRIV ...
- Anaconda安装sasl,thrift,thrift-sasl,PyHive连接Hive
一.安装sasl 安装失败,前往:https://www.lfd.uci.edu/~gohlke/pythonlibs/#sasl下载对应自己python版本的sasl 本地安装: 二.安装thrif ...
- bug优先级别
https://www.cnblogs.com/evablogs/p/6785083.html bug缺陷的优先级别 首先需要对一个版本进行冒烟测试,确定基本功能测试,如果不通过的话进行后期的测试已经 ...
- Python文件操作之把臂入林
文件操作1.打开文件open(file, mode='r', buffering=None, encoding=None, errors=None, newline=None, closefd=Tru ...
- 【Eclipse】springMVC介绍与配置
SpringMCV介绍: Spring MVC是一种基于Java的实现了MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于请求驱动的,也就是使用 ...
- Task.Wait and “Inlining”
“What does Task.Wait do?” Simple question, right? At a high-level, yes, the method achieves what its ...
- Extjs 在Grid单元中格添加Tooltip提示
Grid 中的单元格添加Tooltip 的效果 Ext.QuickTips.init(); //必须要… columns: [ { text: 'Name', dataIndex: 'name' }, ...