看圖:

Python代碼:

  1. #env /usr/bin/python3
  2. #author Bruce
  3.  
  4. import RPi.GPIO as GPIO
  5. import time
  6. import json
  7. import datetime
  8. import requests
  9.  
  10. APIKEY = '=xxxxxxxxxxxxxxxxxxxx='
  11. apiurl = 'http://api.heclouds.com/devices/11111111/datapoints'
  12. apiheaders = {'api-key': APIKEY, 'Content-Length': ''}
  13.  
  14. def getTemp():
  15. channel = 17
  16. data = []
  17. j = 0
  18.  
  19. GPIO.setmode(GPIO.BCM)
  20.  
  21. time.sleep(1)
  22.  
  23. GPIO.setup(channel, GPIO.OUT)
  24.  
  25. GPIO.output(channel, GPIO.LOW)
  26. time.sleep(0.02)
  27. GPIO.output(channel, GPIO.HIGH)
  28.  
  29. GPIO.setup(channel, GPIO.IN)
  30.  
  31. while GPIO.input(channel) == GPIO.LOW:
  32. continue
  33.  
  34. while GPIO.input(channel) == GPIO.HIGH:
  35. continue
  36.  
  37. while j < 40:
  38. k = 0
  39. while GPIO.input(channel) == GPIO.LOW:
  40. continue
  41.  
  42. while GPIO.input(channel) == GPIO.HIGH:
  43. k += 1
  44. if k > 100:
  45. break
  46.  
  47. if k < 8:
  48. data.append(0)
  49. else:
  50. data.append(1)
  51.  
  52. j += 1
  53.  
  54. print("sensor is working.")
  55. print(data)
  56.  
  57. humidity_bit = data[0:8]
  58. humidity_point_bit = data[8:16]
  59. temperature_bit = data[16:24]
  60. temperature_point_bit = data[24:32]
  61. check_bit = data[32:40]
  62.  
  63. humidity = 0
  64. humidity_point = 0
  65. temperature = 0
  66. temperature_point = 0
  67. check = 0
  68.  
  69. for i in range(8):
  70. humidity += humidity_bit[i] * 2 ** (7 - i)
  71. humidity_point += humidity_point_bit[i] * 2 ** (7 - i)
  72. temperature += temperature_bit[i] * 2 ** (7 - i)
  73. temperature_point += temperature_point_bit[i] * 2 ** (7 - i)
  74. check += check_bit[i] * 2 ** (7 - i)
  75.  
  76. tmp = humidity + humidity_point + temperature + temperature_point
  77.  
  78. tmp_output = open('/home/pi/Desktop/Projects/DHT11/log.txt', 'a+')
  79. csv=open('/home/pi/Desktop/Projects/DHT11/log.csv', 'a+')
  80.  
  81. if check == tmp:
  82. print("temperature : ", temperature, ", humidity : " , humidity)
  83.  
  84. tmp_output.write(',\n{"Time":' + time.strftime("%Y/%m/%d %H:%M:%S",time.localtime()) + ",")
  85. tmp_output.write('"temperate":')
  86. tmp_output.write(str(temperature))
  87. tmp_output.write(',')
  88. tmp_output.write('"Humidity":' + str(humidity))
  89. tmp_output.write('}')
  90.  
  91. csv.write(time.strftime("%Y/%m/%d %H:%M:%S",time.localtime()) + ",")
  92. csv.write(str(temperature))
  93. csv.write(',')
  94. csv.write(str(humidity))
  95. csv.write('\n')
  96. else:
  97. print("wrong")
  98. print("temperature : ", temperature, ", humidity : " , humidity, " check : ", check, " tmp : ", tmp)
  99.  
  100. tmp_output.close()
  101. csv.close()
  102.  
  103. CurTime = datetime.datetime.now()
  104. payload = {'datastreams':[{"id":"DHT11a","datapoints":[{"at":CurTime.isoformat(),"value":temperature}]}]}
  105. print("Current time: %s" % CurTime.isoformat())
  106. print("Upload value: %.3f" % temperature)
  107.  
  108. jdata = json.dumps(payload)
  109.  
  110. r=requests.post(apiurl,headers=apiheaders,data=json.dumps(payload))
  111.  
  112. return r
  113.  
  114. if __name__ == "__main__":
  115. try:
  116. while 1:
  117. resp = getTemp()
  118. print("OneNET request result: \n %s" %resp)
  119. time.sleep(55)
  120. finally:
  121. GPIO.cleanup()

利用樹霉派採集溫濕度上傳到OneNET(非完整,僅參考)的更多相关文章

  1. 数据採集之Web端上传文件到Hadoop HDFS

    前言 近期在公司接到一个任务.是关于数据採集方面的. 需求主要有3个: 通过web端上传文件到HDFS; 通过日志採集的方式导入到HDFS; 将数据库DB的表数据导入到HDFS. 正好近期都有在这方面 ...

  2. 基于lucene的案例开发:纵横小说分布式採集

    转载请注明出处:http://blog.csdn.net/xiaojimanman/article/details/46812645 http://www.llwjy.com/blogdetail/9 ...

  3. 《转》ceilometer的数据採集机制入门

    问题导读 1.ceilometer负责什么事情? 2.ceilometer 有哪些概念? 3.ceilometer 怎样採集hardware? 附上openstack 官网API   http://d ...

  4. 用DirectShow实现视频採集-流程构建

    DirectShow作为DirectX的一个子集,它为用户提供了强大.方便的多媒体开接口,而且它拥有直接操作硬件的能力,这使得它的效率远胜于用GDI等图形方式编写的多媒体程序.前面一篇文章已经对Dir ...

  5. 开源 java CMS - FreeCMS2.3 Web页面信息採集

    原文地址:http://javaz.cn/site/javaz/site_study/info/2015/23312.html 项目地址:http://www.freeteam.cn/ Web页面信息 ...

  6. python爬虫之採集——360联想词W2版本号

    http://blog.csdn.net/recsysml/article/details/30541197,我的这个博文介绍了对应的简单的方法做一个联想词的爬虫,并且还承诺了下面优化: 下一版本号的 ...

  7. 利用sql命令把结果集输出到文件

    利用sql命令把结果集输出到文件 红色部分的三条命令完成把结果集输出到文件!! [root@test root]# psql -hlocalhost -Utest testWelcome to psq ...

  8. C++ 採集音频流(PCM裸流)实现录音功能

    与上一篇的"C++ 播放音频流(PCM裸流)" 点击打开链接 相相应,本篇是关于用C++实现录音功能的.相同是直接建一个win32控制台程序然后将代码拷过去改个文件名称就能够用,也 ...

  9. 【源代码】基于Android和蓝牙的单片机温度採集系统

    如需转载请标明出处:http://blog.csdn.net/itas109 QQ技术交流群:129518033 STC89C52单片机通过HC-06蓝牙模块与Android手机通信实例- 基于And ...

随机推荐

  1. nyoj 269 VF

    VF 时间限制:1000 ms  |  内存限制:65535 KB 链接:NYOJ269 原创在:点击打开链接 题意:1-1000000000之间,各位数字之和等于给定s的数的个数. 每行给出一个数s ...

  2. Notepad++安装xml插件

    环境: win7 64位 Notepad++7.3.3 原生的Notepad++不自带xml文件的插件,所以在显示xml文件时并不分行(如下图所示),对于用户编辑,查看的操作而言,并不友好,所以需要安 ...

  3. 动态链接库的ELF头分析

    ELF(Executable and Linking Format)用于存储Linux程序. ELF文件分三种类型: 1.目标文件(通常是.o); 2.可执行文件(我们的运行文件)   3.动态库(. ...

  4. java中的异常The given object has a null identifier

    修改页面点击提交时报如下异常: org.hibernate.TransientObjectException: The given object has a null identifier: com. ...

  5. APACHE2 服务器配置 (一)

    1.安装 sudo apt-get install apache2 2.重启: sudo service apache2 resatrt 3.设置根目录: /var/www 设置方法: 2.2版: / ...

  6. web.xml报错Cannot resolve class 'StrutsPrepareAndExecuteFilter' (idea创建SSH项目)

    原因: xwork-core.jar包已经合并到struts2-core.jar下,并且点开jar包,发现没有 org.apache.struts2.dispatcher.ng.filter.Stru ...

  7. Java int与String互相转化大全

    int -> String //int 转化才 string int num = 123456; //方法一 会产生两个String对象 String s1 = num+"" ...

  8. 纯java config配置Spring MVC实例

    1.首先创建一个Maven工程,项目结构如下: pom.xml添加Spring和servlet依赖,配置如下 <project xmlns="http://maven.apache.o ...

  9. web开发并部署到Tomcat上

    1. eclipse配置tomcat https://jingyan.baidu.com/article/e4d08ffdabb0710fd2f60de9.html https://blog.csdn ...

  10. codevs-1204

    1204 寻找子串位置 题目描述 Description 给出字符串a和字符串b,保证b是a的一个子串,请你输出b在a中第一次出现的位置. 输入描述 Input Description 仅一行包含两个 ...