比派科技banana pi专区
直播中

曹峰

9年用户 94经验值
擅长:嵌入式技术
私信 关注
[经验]

【BPI-M64试用体验】基于物联网的智慧景区管理系统(下)之结项

【BPI-M64试用体验】基于物联网的智慧景区管理系统(上)之结项
说明:
  • 由于时间和各种原因,基于物联网的智慧景区管理系统没有完全呈现出来,只是用了部分传感器,基本打通了整个流程。
  • 本来计划是在香蕉派上实现web服务器的,但是在安装tomcat7的过程中遇到问题,目前还没有解决。截图如下 1.png
      因此,暂将方案修改为将数据上传到中移Onenet平台上,后期使用python支持的flask或者web2py来实现。

开始了
  • 步骤一:
     上篇中实现了将Arduino采集的数据上传到香蕉派上,本次使用的非接触式温度传感器,Arduino上烧写的代码保持不变。
2.png          3.png
应该是香蕉派raspberry系统的原因(香蕉派官方提供的ubuntu和安卓都可以直接连接wifi),连接wifi的时候连接不了,只能使用网线连接网络。

  • 步骤二:
  1. # -*- coding:utf-8 -*-
  2. # File: cputemp.py
  3. #向平台已经创建的数据流发送数据点
  4. import urllib2
  5. import json
  6. import time
  7. import datetime
  8. import serial

  9. APIKEY = 'key'   #改成你的APIKEY   向onenet、贝壳物联这些平台创建设备时都会提供APIKEY
  10.         
  11. def http_put():
  12.     wendu = read() #获取Arduino的数据
  13.     CurTime = datetime.datetime.now()
  14.     url='http://api.heclouds.com/devices/1122334/datapoints'      //中间1122334代表的意识是设备的ID好
  15.     values={'datastreams':[{"id":"temp","datapoints":[{"at":CurTime.isoformat(),"value":wendu}]}]}

  16.     print "当前的ISO时间为: %s" %CurTime.isoformat()
  17.     print "上传的温度值为: %.2f" %wendu

  18.     jdata = json.dumps(values)                  # 对数据进行JSON格式化编码
  19.     #打印json内容
  20.     print jdata
  21.     request = urllib2.Request(url, jdata)
  22.     request.add_header('api-key', APIKEY)
  23.     request.get_method = lambda:'POST'          # 设置HTTP的访问方式
  24.     request = urllib2.urlopen(request)
  25.     return request.read()

  26. def read():
  27.     ser=serial.Serial("/dev/ttyUSB0",9600,timeout=1)                  //上篇用ls /dev/tty*查看外设

  28.     flag = True
  29.     result=0.0
  30.     while flag:
  31.           ser.write('s')
  32.           response = ser.readall()                                                    //这段看似莫名奇妙的代码是将arduino上传的数据(字符型)转化成(整型)或者(浮点型)
  33.           response=response.strip()
  34.           if len(response) and len(response.split("."))==2:
  35.              st=response.split(".")
  36.              result=float(st[0])+float(st[1])*(pow(0.1,len(st[1])))
  37.              flag=False
  38.           elif len(response) and len(response.split("."))==1:
  39.              result=int(response)
  40.              flag=False

  41.     ser.close()
  42.     return result


  43. while True:
  44.       time.sleep(1)
  45.       resp = http_put()
  46.       print "OneNET请求结果:n %s" %resp
  47.       time.sleep(1)

      这段代码命名为onenet.py
4.png
  • 步骤三
       在中移onenet平台注册账号、创建设备,具体方法参考官方文档。
6.jpg
  • 步骤四
7.png
没找到怎么上传视频,我上传到百度云网盘

  • 结束语:非常感谢香蕉派和电子发烧友william hill官网 提供的bpi-m64和支持,由于各种原因没有将项目更好的呈现出来,同时也感谢各位大牛的帮助


更多回帖

发帖
×
20
完善资料,
赚取积分