文档章节

实现一个yeelink一样的服务平台

gotham
 gotham
发布于 2014/07/29 12:48
字数 478
阅读 1813
收藏 0

实现一个yeelink一样的服务平台

前段时间分析yeelink的服务平台,专门去注册了一个帐号,写了一些代码,现在把他记录下来。

根据yeelink的api文档能够分析出来一些url,要实现一个yeelink一样的服务平台只需要实现这个url就可以。

通过分析文档里面有几个对象,用户,设备,传感器,一个用户对应多个设备,一个设备对应多个传感器。

模型

代码如下:

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(80), unique=True)
    email = db.Column(db.String(120), unique=True)
    devices = db.relationship("Device", backref="user",
   	 			lazy="dynamic")
    def __init__(self, username, email):
    	self.username = username
    	self.email = email

    def __repr__(self):
    	return "<User %r>" % self.username
class Device(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    source = db.Column(db.Integer)
    name = db.Column(db.String(80), unique=True)
    tags = db.Column(db.String(80))
    description = db.Column(db.String(512))
    user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
    sensors = db.relationship('Sensor', backref='device',
    		lazy='dynamic')
    def __init__(self,name,uid):
    	self.name = name
    	self.user_id = uid
    def __repr__(self):
    	return '<Device %r>' % self.name

class Sensor(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    source = db.Column(db.Integer)
    name = db.Column(db.String(80), unique=True)
    tags = db.Column(db.String(80))
    description = db.Column(db.String(512))
    device_id = db.Column(db.Integer, db.ForeignKey('device.id'))
    	status=db.Column(db.Integer)
    
    def __init__(self,name,did):
    	self.name = name
    	self.device_id = did
    def __repr__(self):
    	return '<Sensor %r>' % self.name`

实现url

主要有,

@app.route('/v1.0/device/<did>/sensor/<sid>/datapoints',methods=['POST', 'GET'])
这个是arduino用来访问传感器的url,did设备id,sid,传感器id

其他url实现和这个url一样, 然后再就是用户管理,设备管理,传感器管理方面的工作,这个比较简单。 arduino部分的代码直接用yeelink的就可以,更改代码里面的服务器地址即可。

整个代码采用python,flask实现,

@app.route('/v1.0/device/<did>/sensor/<sid>/datapoints',methods=['POST', 'GET'])
def datapoints(did,sid):
	dl = Device.query.filter_by(id=did).all()
	if len(dl)>0 :
		sl = Sensor.query.filter_by(id=sid).all()
		if len(sl)>0 :
			s = sl[0]
			if s.status == 1:
				return "{1}"
	return "{0}"

这部分能测试yeelink网页开关led那个例子。

© 著作权归作者所有

上一篇: 程序员的hao123
gotham

gotham

粉丝 12
博文 41
码字总数 4669
作品 0
成都
程序员
私信 提问
树莓派用Python写几个简单程序6_yeelink平台

首先先在yeelink平台上注册,获得自己的APIKEY, 创建设备及设备上传感器,读取传感器的apiurl。 例子1:上传树莓派温度数据到yeelink -> yeelink_temp.py #!/usr/bin/env python -- coding:...

RagingTyphoon
2015/08/15
324
0
使用API key时,如何确定访问的有效性,其原理(或流程)是什么?

用户申请api key后,使用其提交数据时,如何确定数据的有效性? 以Yeelink为例,Yeelink平台提供传感器云服务; 通过实时数据处理, 提供仪器的状态监控,我猜测: 1.通过api key找到user_id 2.检索u...

陈好
2013/07/29
538
0
PHP再学习5——RESTFul框架 远程控制LED

0.前言 去年(2013年)2月第一次接触yeelink平台,当时该平台已经运行了一些时间也吸引了不少极客。试想自己也将投身IoT(物联网)行业,就花了些时间研究了它。陆陆续续使用和研究了一年,大...

thinkyoung
2014/12/02
0
0
用树莓派通过Java实现远程控制电灯

用树莓派通过Java实现远程控制电灯 本文章由 亓根火柴 原创,转载请注明出处:http://blog.csdn.net/qigenhuochai/article/details/17661845 传说,女娲娘娘炼就七根火柴,来帮助人类度过第一个...

亓根火柴
2014/01/02
1K
2
pcDuino+yeelink实现远程监控办公室温度

pcDuino + TMP36可以实现全天候的温度监控,而且由于pcDuino本身的功率也不大所以即使一直开着耗电也不会很高。再配合yeelink把传感器的数据定时传送到网上。我们就可以随时随地的查看办公室...

酸酸苹果汁
2014/03/29
1K
2

没有更多内容

加载失败,请刷新页面

加载更多

java通过ServerSocket与Socket实现通信

首先说一下ServerSocket与Socket. 1.ServerSocket ServerSocket是用来监听客户端Socket连接的类,如果没有连接会一直处于等待状态. ServetSocket有三个构造方法: (1) ServerSocket(int port);...

Blueeeeeee
今天
6
0
用 Sphinx 搭建博客时,如何自定义插件?

之前有不少同学看过我的个人博客(http://python-online.cn),也根据我写的教程完成了自己个人站点的搭建。 点此:使用 Python 30分钟 教你快速搭建一个博客 为防有的同学不清楚 Sphinx ,这...

王炳明
昨天
5
0
黑客之道-40本书籍助你快速入门黑客技术免费下载

场景 黑客是一个中文词语,皆源自英文hacker,随着灰鸽子的出现,灰鸽子成为了很多假借黑客名义控制他人电脑的黑客技术,于是出现了“骇客”与"黑客"分家。2012年电影频道节目中心出品的电影...

badaoliumang
昨天
16
0
很遗憾,没有一篇文章能讲清楚线程的生命周期!

(手机横屏看源码更方便) 注:java源码分析部分如无特殊说明均基于 java8 版本。 简介 大家都知道线程是有生命周期,但是彤哥可以认真负责地告诉你网上几乎没有一篇文章讲得是完全正确的。 ...

彤哥读源码
昨天
18
0
jquery--DOM操作基础

本文转载于:专业的前端网站➭jquery--DOM操作基础 元素的访问 元素属性操作 获取:attr(name);$("#my").attr("src"); 设置:attr(name,value);$("#myImg").attr("src","images/1.jpg"); ......

前端老手
昨天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部