【BPI-M64试用体验】基于物联网的智慧景区管理系统(上)之结项
说明:
- 由于时间和各种原因,基于物联网的智慧景区管理系统没有完全呈现出来,只是用了部分传感器,基本打通了整个流程。
- 本来计划是在香蕉派上实现web服务器的,但是在安装tomcat7的过程中遇到问题,目前还没有解决。截图如下
因此,暂将方案修改为将数据上传到中移Onenet平台上,后期使用python支持的flask或者web2py来实现。
开始了
上篇中实现了将Arduino采集的数据上传到香蕉派上,本次使用的非接触式温度传感器,Arduino上烧写的代码保持不变。
应该是香蕉派raspberry系统的原因(香蕉派官方提供的ubuntu和安卓都可以直接连接wifi),连接wifi的时候连接不了,只能使用网线连接网络。
- # -*- coding:utf-8 -*-
- # File: cputemp.py
- #向平台已经创建的数据流发送数据点
- import urllib2
- import json
- import time
- import datetime
- import serial
- APIKEY = 'key' #改成你的APIKEY 向onenet、贝壳物联这些平台创建设备时都会提供APIKEY
-
- def http_put():
- wendu = read() #获取Arduino的数据
- CurTime = datetime.datetime.now()
- url='http://api.heclouds.com/devices/1122334/datapoints' //中间1122334代表的意识是设备的ID好
- values={'datastreams':[{"id":"temp","datapoints":[{"at":CurTime.isoformat(),"value":wendu}]}]}
- print "当前的ISO时间为: %s" %CurTime.isoformat()
- print "上传的温度值为: %.2f" %wendu
- jdata = json.dumps(values) # 对数据进行JSON格式化编码
- #打印json内容
- print jdata
- request = urllib2.Request(url, jdata)
- request.add_header('api-key', APIKEY)
- request.get_method = lambda:'POST' # 设置HTTP的访问方式
- request = urllib2.urlopen(request)
- return request.read()
- def read():
- ser=serial.Serial("/dev/ttyUSB0",9600,timeout=1) //上篇用ls /dev/tty*查看外设
- flag = True
- result=0.0
- while flag:
- ser.write('s')
- response = ser.readall() //这段看似莫名奇妙的代码是将arduino上传的数据(字符型)转化成(整型)或者(浮点型)
- response=response.strip()
- if len(response) and len(response.split("."))==2:
- st=response.split(".")
- result=float(st[0])+float(st[1])*(pow(0.1,len(st[1])))
- flag=False
- elif len(response) and len(response.split("."))==1:
- result=int(response)
- flag=False
- ser.close()
- return result
- while True:
- time.sleep(1)
- resp = http_put()
- print "OneNET请求结果:n %s" %resp
- time.sleep(1)
这段代码命名为onenet.py
在中移onenet平台注册账号、创建设备,具体方法参考官方文档。
没找到怎么上传视频,我上传到
百度云网盘了