[原创] pc机读取pm2.5模块上传到onenet

youxinweizhi   2018-3-29 12:38 楼主
由于micropython for esp8266板子没有串口,无奈之下想到用pc机通过usb转ttl模块直接读取数值并上传到onenet平台。 效果图: file:///C:\Users\hanxm\AppData\Roaming\Tencent\Users\416895063\TIM\WinTemp\RichOle\Q@`}}O`MCV8LV6R]@Y)G`~6.png file:///C:\Users\hanxm\AppData\Roaming\Tencent\Users\416895063\TIM\WinTemp\RichOle\Q@`}}O`MCV8LV6R]@Y)G`~6.png file:///C:\Users\hanxm\AppData\Roaming\Tencent\Users\416895063\TIM\WinTemp\RichOle\Q@`}}O`MCV8LV6R]@Y)G`~6.png 接线图: pm2.5模块 usb转tll模块 vcc 5v gnd gnd Tx Rx 源码: import serial import time def get_pm(com): ser = serial.Serial(port=com,baudrate=2400) time.sleep(0.1) data=ser.read_all() ser.close() data_all=data.hex() R = data_all.find('aa') if R>-1 and len(data_all)>(R+6): P="0x"+data_all[R+2:R+4] L="0x"+data_all[R+4:R+6] P_10=int(str(P),16) L_10=int(str(L),16) SHI=P_10*256+L_10 SHUCHU=SHI/(1024/5)*800 return int(SHUCHU) from urllib import request,parse import json DEVICE_ID='xxxxx' API_KEY='xxxxxxxxx' def Http_Pot_OnetNet(data): url='http://api.heclouds.com/devices/'+DEVICE_ID+'/datapoints' values={'datastreams':[{"id":"pm2.5","datapoints":[{"value":data}]}]} headers ={"api-key":API_KEY} d = json.dumps(values).encode("utf-8") r = request.Request(url,d,headers=headers) res = request.urlopen(r) print(json.loads(res.read())["error"]) while 1: Http_Pot_OnetNet(get_pm('com5')) time.sleep(60) 此内容由EEWORLD论坛网友youxinweizhi原创,如需转载或用于商业用途需征得作者同意并注明出处 本帖最后由 youxinweizhi 于 2018-3-29 12:42 编辑

回复评论 (4)

图片要重新传一下。
点赞  2018-3-29 15:09
没有图,另外代码建议使用插入代码的方式,也可以同时上传一个py,python对格式要求太严了。例如源码:
  1. import serial
  2. import time
  3. def get_pm(com):
  4. ser = serial.Serial(port=com,baudrate=2400)
  5. time.sleep(0.1)
  6. data=ser.read_all()
  7. ser.close()
  8. data_all=data.hex()
  9. R = data_all.find('aa')
  10. if R>-1 and len(data_all)>(R+6):
  11. P="0x"+data_all[R+2:R+4]
  12. L="0x"+data_all[R+4:R+6]
  13. P_10=int(str(P),16)
  14. L_10=int(str(L),16)
  15. SHI=P_10*256+L_10
  16. SHUCHU=SHI/(1024/5)*800
  17. return int(SHUCHU)
  18. from urllib import request,parse
  19. import json
  20. DEVICE_ID='xxxxx'
  21. API_KEY='xxxxxxxxx'
  22. def Http_Pot_OnetNet(data):
  23. url='http://api.heclouds.com/devices/'+DEVICE_ID+'/datapoints'
  24. values={'datastreams':[{"id":"pm2.5","datapoints":[{"value":data}]}]}
  25. headers ={"api-key":API_KEY}
  26. d = json.dumps(values).encode("utf-8")
  27. r = request.Request(url,d,headers=headers)
  28. res = request.urlopen(r)
  29. print(json.loads(res.read())["error"])
  30. while 1:
  31. Http_Pot_OnetNet(get_pm('com5'))
  32. time.sleep(60)
本帖最后由 strong161 于 2018-3-29 15:26 编辑
点赞  2018-3-29 15:17

源代码

import  serial
import serial
import time
def get_pm(com):
    ser = serial.Serial(port=com,baudrate=2400)
    time.sleep(0.1)
    data=ser.read_all()
    ser.close()
    data_all=data.hex()
    R = data_all.find('aa')
    if R>-1 and len(data_all)>(R+6):
    P="0x"+data_all[R+2:R+4]
    L="0x"+data_all[R+4:R+6]
    P_10=int(str(P),16)
    L_10=int(str(L),16)
    SHI=P_10*256+L_10
    SHUCHU=SHI/(1024/5)*800
    return int(SHUCHU)

from urllib import request,parse
import json
DEVICE_ID='xxxxx'
API_KEY='xxxxxxxxx'
def Http_Pot_OnetNet(data):
    url='http://api.heclouds.com/devices/'+DEVICE_ID+'/datapoints'
    values={'datastreams':[{"id":"pm2.5","datapoints":[{"value":data}]}]}
    headers ={"api-key":API_KEY}
    d = json.dumps(values).encode("utf-8")
    r = request.Request(url,d,headers=headers)
    res = request.urlopen(r)
    print(json.loads(res.read())["error"])

while 1:
Http_Pot_OnetNet(get_pm('com5'))
time.sleep(60)
点赞  2018-3-29 15:36
引用: strong161 发表于 2018-3-29 15:17
没有图,另外代码建议使用插入代码的方式,也可以同时上传一个py,python对格式要求太严了。例如源码:

...

还能这么玩么。。没混过论坛。。
点赞  2018-3-30 16:32
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复