IOTOS物联中台http接口驱动开发实例
本文章为原创,转载请注明出处!
登录平台:IOTOS®爱投斯物联中台
账号:iotos_test 密码:iotos123
代码地址:IOTOSDK-Python: IOTOS Python版本SDK,自带原生接口和采集引擎 (gitee.com)
目录
一、驱动目的
二、HTTP协议
三、驱动代码
4.1、导入相应的包,运行环境为python2.7
4.2、获取存放在中台的数据
4.3、根据协议获取数据将其展示到数据中台的数据点中
4.4、下发数据点数值如下
4.5、使用示...
本文章为原创,转载请注明出处!
账号:iotos_test 密码:iotos123
代码地址:IOTOSDK-Python: IOTOS Python版本SDK,自带原生接口和采集引擎 (gitee.com)
目录
一、驱动目的
使用驱动开发http跨平台,跨语言,跨设备之间的通信。
二、HTTP协议
HTTP超文本传输协议 (HTTP-Hypertext transfer protocol),是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展。它是一种详细规定了浏览器和万维网服务器之间互相通信的规则,通过因特网传送万维网文档的数据传送协议。
三、驱动代码
#coding=utf-8
import sys
import time
sys.path.append("..")
from driver import *
import datetime
import requests
import json
reload(sys)
sys.setdefaultencoding('utf8')
url = 'https://lock.keenzy.cn:88/info'
edate = datetime.date.today() + datetime.timedelta(days=1)
sdate = str(datetime.datetime.now().strftime('%Y-%m')) + "-01"
#获取token ->传入用户名和密码 ->返回token和刷新token的令牌refreshentoken
def GetToken(self):
basePath='/login/1/gettoken'
data={
'userlogin':self.cq_username,
'password':self.cq_password
}
"""print url+basePath+'?userlogin="'+userlogin+'"'+'&password="'+password+'"'
res = requests.post(url=url+basePath+'?userlogin='+userlogin+'&password='+password) 拼接"""
res=requests.post(url=url+basePath,data=data)
r=json.loads(res.text)
print res
return r['result']['token'],r['result']['refreshentoken']
#更新token ->传入刷新token的令牌refreshentoken ->返回响应信息
def refToken(refreshentoken):
basePath='/login/2/refreshentoken'
data = {
"refreshentoken":refreshentoken
}
res = requests.post(url=url + basePath, data=data)
r = json.loads(res.text)
print res
return r
#无线门锁列表查询 ->传入页码、每页数量、用户token和房间位置或者唯一ID(非必要) ->返回响应信息
def QueryDoor(self, page,rows,token):
basePath = '/lock/1/getdevicelock'
data = {
"page": page,
"rows": rows,
"token":token,
"serch": ''
}
try:
res = requests.post(url=url + basePath, data=data)
# self.debug(res)
r = json.loads(res.text)
except Exception,e:
pass
for data in r['result']['data']:
# 寻找到roomid对应的数据
if data["roomid"] == self.cq_roomid:
# 上传数据
self.cq_roomlocation = data['details']['roomlocation']
self.setValue(u'门锁号', data['roomid'])
self.setValue(u'门锁状态', data['roomstate'])
self.setValue(u'网关通讯ID', data['gatewaycode'])
self.setValue(u'门锁通讯ID', data['roomcode'])
self.setValue(u'门锁唯一ID', data['roomcode2'])
self.setValue(u'门锁位置', data['details']['roomlocation'])
self.setValue(u'电量', data['details']['roomcharge'])
self.setValue(u'roomissyso', data['details']['roomissyso'])
self.setValue(u'门锁强锁状态', data['details']['roomforcelock'])
self.setValue(u'门锁工作模式', data['details']['roomworkmode'])
self.setValue(u'最近在线时间', data['details']['lastactivedate'])
self.setValue(u'门锁类型', data['details']['roommodel'])
self.setValue(u'建筑号', data['buildid'])
self.setValue(u'网关类型', data['gatewaytype'])
self.setValue(u'roomid', "")
#防止开关状态被重复刷新
for key, lock_value in self.data2attrs.items(): # 拿出数据点的键和值
if "private" in lock_value['config']['param']:
if lock_value['config']['param']['private'] == 'lock':
self.lockkey = key
self.debug(self.lockkey)
if "memoryvalue" not in self.data2attrs[key]:
self.setValue(u'开关门', 0)
else:
self.setValue(u'开关门', self.data2attrs[key]["memoryvalue"])
if lock_value['config']['param']['private'] == 'face':
self.facekey = key
self.debug(self.facekey)
if "memoryvalue" not in self.data2attrs[key]:
self.setValue(u'操作人脸', '下发格式为facecode,type')
else:
self.setValue(u'操作人脸', self.data2attrs[key]["memoryvalue"])
print "-------------------------------------------"
#无线门锁列表查询 -> 传入时无roomid数据,则默认返回第一条数据,且返回的roomid为全部roomid拼接 ->返回响应信息
def QueryEmptyDoor(self, page,rows,token):
basePath = '/lock/1/getdevicelock'
data = {
"page": page,
"rows": rows,
"token":token,
"serch": ''
}
res = requests.post(url=url + basePath, data=data)
r = json.loads(res.text)
roomID = ""
for data in r['result']['data']:
roomID += data['roomid']
roomID += " "
print "-------------------------------------------"
# 上传数据
self.cq_roomlocation = r['result']['data'][0]['details']['roomlocation']
self.cq_roomid = r['result']['data'][0]['roomid']
self.setValue(u'门锁号', r['result']['data'][0]['roomid'])
self.setValue(u'门锁状态', r['result']['data'][0]['roomstate'])
self.setValue(u'网关通讯ID', r['result']['data'][0]['gatewaycode'])
self.setValue(u'门锁通讯ID', r['result']['data'][0]['roomcode'])
self.setValue(u'门锁唯一ID', r['result']['data'][0]['roomcode2'])
self.setValue(u'门锁位置', r['result']['data'][0]['details']['roomlocation'])
self.setValue(u'电量', r['result']['data'][0]['details']['roomcharge'])
self.setValue(u'roomissyso', r['result']['data'][0]['details']['roomissyso'])
self.setValue(u'门锁强锁状态', r['result']['data'][0]['details']['roomforcelock'])
self.setValue(u'门锁工作模式', r['result']['data'][0]['details']['roomworkmode'])
self.setValue(u'最近在线时间', r['result']['data'][0]['details']['lastactivedate'])
self.setValue(u'门锁类型', r['result']['data'][0]['details']['roommodel'])
self.setValue(u'建筑号', r['result']['data'][0]['buildid'])
self.setValue(u'网关类型', r['result']['data'][0]['gatewaytype'])
self.setValue(
