设备配置单元Python连接库
devicehive的Python项目详细描述
设备配置单元
创建客户机的最简单方法是使用 设备hiveapi 类。 如果需要处理服务器事件,例如 handle_command_insert , 处理命令更新 或 处理通知 您必须 扩展处理程序类并使用设备配置单元类来处理它。
使用设备hiveapi类创建客户机
首先需要创建 设备hiveapi 对象。然后你可以 将此对象用于API调用。
示例:
fromdevicehiveimportDeviceHiveApiurl='http://playground.devicehive.com/api/rest'refresh_token='SOME_REFRESH_TOKEN'device_hive_api=DeviceHiveApi(url,refresh_token=refresh_token)
WebSocket协议
如果要使用websocket协议,只需指定 URL:
url='ws://playground.devicehive.com/api/websocket'
身份验证
初始身份验证有三种方式:
- 使用刷新令牌
- 使用访问令牌
- 使用登录名和密码
示例:
fromdevicehiveimportDeviceHiveApiurl='ws://playground.devicehive.com/api/websocket'device_hive_api=DeviceHiveApi(url,refresh_token='SOME_REFRESH_TOKEN')
fromdevicehiveimportDeviceHiveApiurl='ws://playground.devicehive.com/api/websocket'device_hive_api=DeviceHiveApi(url,access_token='SOME_ACCESS_TOKEN')
fromdevicehiveimportDeviceHiveApiurl='ws://playground.devicehive.com/api/websocket'device_hive_api=DeviceHiveApi(url,login='SOME_LOGIN',password='SOME_PASSWORD')
信息
get_info() 方法返回 dict 下一个字段:
- API版本
- 服务器时间戳
- rest_server_url
- websocket_server_url
get_cluster_info() 方法返回 dict 和下一个字段:
- 引导服务器
- 变焦器.连接
示例:
fromdevicehiveimportDeviceHiveApiurl='http://playground.devicehive.com/api/rest'refresh_token='SOME_REFRESH_TOKEN'device_hive_api=DeviceHiveApi(url,refresh_token=refresh_token)info=device_hive_api.get_info()print(info)cluster_info=device_hive_api.get_cluster_info()print(cluster_info)
属性
get_property(name) 方法返回 dict 和下一个字段:
- 实体版本
- 姓名
- 值
设置属性(名称、值) 方法返回实体版本。
删除属性(名称) 方法不返回任何内容。
示例:
fromdevicehiveimportDeviceHiveApiurl='http://playground.devicehive.com/api/rest'refresh_token='SOME_REFRESH_TOKEN'device_hive_api=DeviceHiveApi(url,refresh_token=refresh_token)name='user.login.lastTimeoutSent'entity_version=device_hive_api.set_property(name,'value')print(entity_version)prop=device_hive_api.get_property(name)print(prop)device_hive_api.delete_property(name)
代币
创建令牌(用户id、过期、操作、网络id、设备id) 方法返回 dict 和下一个字段:
- 访问令牌
- 刷新令牌
只需要 用户id 。
refresh_token() 方法刷新访问令牌并返回它。
示例:
fromdevicehiveimportDeviceHiveApiurl='http://playground.devicehive.com/api/rest'refresh_token='SOME_REFRESH_TOKEN'device_hive_api=DeviceHiveApi(url,refresh_token=refresh_token)tokens=device_hive_api.create_token(1)print(tokens)access_token=device_hive_api.refresh_token()print(access_token)
设备
列出设备(名称、名称模式、网络id、网络名称、排序字段、排序顺序、take、skip) 方法返回设备对象的列表。所有参数都是可选的。
获取设备(设备id) 方法返回 设备 对象。
放置设备(设备id、名称、数据、网络id,被阻止) 方法 返回 设备 对象。只需要 设备id 。
列出命令(设备id、开始、结束、命令、状态、排序字段、排序顺序、获取、跳过) 方法返回 命令的对象列表。只有设备id是 必需。
发送命令(设备id、命令名、参数、生存期、时间戳、状态、结果) 方法返回 命令 对象。仅 设备id 和 命令名 是必需的。
< > >ST U通知(设备ID、开始、结束、通知、排序字段、排序顺序、Take、跳过) 方法返回通知对象的列表。只有设备id是 必需。发送通知(设备id、通知名称、参数、时间戳) 方法返回通知对象。仅 设备id 和 需要通知名称 。
设备对象
属性:
- id (只读)
- 姓名
- 数据
- 网络id
- 设备类型id
- 被阻塞
方法:
- save() 方法不返回任何内容。
- remove() 方法不返回任何内容。
- 列出命令(开始、结束、命令、状态、排序字段、排序顺序、执行、跳过) 方法返回 命令的对象列表。所有参数都是可选的。
- 发送命令(命令名、参数、生存期、时间戳、状态、结果) 方法返回 命令 对象。只需要 命令名 。
- 列出通知(开始、结束、通知、排序字段、排序顺序、接受、跳过) 方法返回通知对象的列表。所有的ARG都是 可选。
- 发送通知(通知名称、参数、时间戳) 方法返回通知对象。只有通知名是 必需。
命令对象
属性:
- id (只读)
- 用户id (只读)
- 命令 (只读)
- 参数 (只读)
- 生存期 (只读)
- 时间戳 (只读)
- 上次更新的 (只读)
- 状态
- 结果
方法:
- save() 方法不返回任何内容。
通知对象
属性:
- 设备id (只读)
- id (只读)
- 通知 (只读)
- 参数 (只读)
- 时间戳 (只读)
示例:
fromdevicehiveimportDeviceHiveApiurl='http://playground.devicehive.com/api/rest'refresh_token='SOME_REFRESH_TOKEN'device_hive_api=DeviceHiveApi(url,refresh_token=refresh_token)device_id='example-device'device=device_hive_api.put_device(device_id)device.name='new-device-name'device.data={'key':'value'}device.save()devices=device_hive_api.list_devices()fordeviceindevices:print('Device: %s, name: %s, data: %s'%(device.id,device.name,device.data))device.remove()
网络
列出网络(名称、名称模式、排序字段、排序顺序、take、skip) 方法返回网络对象的列表。所有参数都是可选的。
获取网络(网络id) 方法返回 网络 对象。
创建网络(名称、描述) 方法返回 网络 对象。
网络对象
属性:
- id (只读)
- 姓名
- 说明
方法:
- save() 方法不返回任何内容。
- remove(force) 方法不返回任何内容。所有的ARG都是 可选。
示例:
fromdevicehiveimportDeviceHiveApiurl='http://playground.devicehive.com/api/rest'refresh_token='SOME_REFRESH_TOKEN'device_hive_api=DeviceHiveApi(url,refresh_token=refresh_token)0
设备类型
列出设备类型(名称、名称模式、排序字段、排序顺序、take、skip) 方法返回 设备类型 对象的列表。所有参数都是可选的。
获取设备类型(设备类型id) 方法返回设备类型 对象:< /P>
创建设备类型(名称、描述) 方法返回设备类型 对象:< /P>
设备类型对象
属性:
- id (只读)
- 姓名
- 说明
方法:
- save() 方法不返回任何内容。
- remove(force) 方法不返回任何内容。所有的ARG都是 可选。
示例:
fromdevicehiveimportDeviceHiveApiurl='http://playground.devicehive.com/api/rest'refresh_token='SOME_REFRESH_TOKEN'device_hive_api=DeviceHiveApi(url,refresh_token=refresh_token)1
用户
列出用户(登录、登录模式、角色、状态、排序字段、排序顺序、Take、Skip) 方法返回 用户 对象的列表。所有参数是可选的。
get_current_user() 方法返回 user 对象。
获取用户(用户id) 方法返回 用户 对象。
创建用户(自我、登录、密码、角色、数据、所有可用的设备类型) 方法返回 用户 对象。
用户对象
属性:
- id (只读)
- 登录 (只读)
- 上次登录 (只读)
- 简介已审阅 (只读)
- 所有设备类型都可用 (只读)
- 角色
- 状态
- 数据
方法:
- save() 方法不返回任何内容。
- update_password(password) 方法不返回任何内容。
- remove() 方法不返回任何内容。
- list_networks() 方法返回 网络对象的列表。
- list_device_types() 方法返回 设备类型的列表 对象。
- assign_network(network_id) 方法不返回任何内容。
- 取消分配网络(网络id) 方法不返回任何内容。
- 分配设备类型(设备类型id) 方法不返回 什么都行。
- 取消分配设备类型(设备类型id) 方法不返回 什么都行。
- allow_all_device_types() 方法不返回任何内容。
- disallow_all_device_types() 方法不返回任何内容。
示例:
fromdevicehiveimportDeviceHiveApiurl='http://playground.devicehive.com/api/rest'refresh_token='SOME_REFRESH_TOKEN'device_hive_api=DeviceHiveApi(url,refresh_token=refresh_token)2
使用设备配置单元类创建客户端
首先,您需要创建自定义处理程序类。
创建自定义处理程序的示例
fromdevicehiveimportDeviceHiveApiurl='http://playground.devicehive.com/api/rest'refresh_token='SOME_REFRESH_TOKEN'device_hive_api=DeviceHiveApi(url,refresh_token=refresh_token)3
handle_connect是唯一需要的方法。如果你想的话 处理执行handle_command_insert要注意的服务器事件, handle_command_update 和 handle_notification 方法。
示例:
fromdevicehiveimportDeviceHiveApiurl='http://playground.devicehive.com/api/rest'refresh_token='SOME_REFRESH_TOKEN'device_hive_api=DeviceHiveApi(url,refresh_token=refresh_token)4
第二步是使用设备配置单元类创建连接 发送到服务器。
示例:
fromdevicehiveimportDeviceHiveApiurl='http://playground.devicehive.com/api/rest'refresh_token='SOME_REFRESH_TOKEN'device_hive_api=DeviceHiveApi(url,refresh_token=refresh_token)5
自定义处理程序参数
如果需要初始化处理程序,您可以按以下方式进行:
fromdevicehiveimportDeviceHiveApiurl='http://playground.devicehive.com/api/rest'refresh_token='SOME_REFRESH_TOKEN'device_hive_api=DeviceHiveApi(url,refresh_token=refresh_token)6
WebSocket协议
如果要使用websocket协议,只需指定 URL:
url='ws://playground.devicehive.com/api/websocket'
身份验证
初始身份验证有三种方式:
- 使用刷新令牌
- 使用访问令牌
- 使用登录名和密码
示例:
fromdevicehiveimportDeviceHiveApiurl='http://playground.devicehive.com/api/rest'refresh_token='SOME_REFRESH_TOKEN'device_hive_api=DeviceHiveApi(url,refresh_token=refresh_token)8
fromdevicehiveimportDeviceHiveApiurl='http://playground.devicehive.com/api/rest'refresh_token='SOME_REFRESH_TOKEN'device_hive_api=DeviceHiveApi(url,refresh_token=refresh_token)9
url='ws://playground.devicehive.com/api/websocket'0
API
所有的api调用都可以通过 api 对象完成。此对象可用 具有 self.api 属性的内部自定义处理程序。
API信息
self.api.get_info() 方法返回 dict 。 获取信息的方法 设备hiveapi 类是此调用顶部的包装器。
self.api.get_cluster_info() 方法返回 dict 。 获取集群信息的方法是 通话结束。
有关的方法,请参见设备hiveapi的说明 更多详细信息。
示例:
url='ws://playground.devicehive.com/api/websocket'1
API属性
self.api.get_property(name) 方法返回 dict 。 设备hiveapi的get_property 方法是上面的包装器 电话号码。
self.api.set_property(name,value) 方法返回实体版本。 设置属性的方法 电话号码。
self.api.delete_property(name) 方法不返回任何内容。 类的delete_属性是 THI顶部电话:
请参见设备hiveapi的说明 方法获取更多详细信息。
示例:
url='ws://playground.devicehive.com/api/websocket'2
api令牌
self.api.创建令牌(用户id、过期、操作、网络id、设备id) 方法返回 dict 。 创建令牌 设备hiveapi的方法 类是此调用的包装器。
self.api.refresh_token() 方法刷新访问令牌并 返回它。 刷新令牌的方法是 包装在这个电话上。
有关 更多详细信息。
示例:
url='ws://playground.devicehive.com/api/websocket'3
api命令订阅
self.api.subscribe\u insert\u命令(设备id、网络id、设备类型id、名称、时间戳) 方法返回对象。
self.api.subscribe_update_命令(设备id、网络id、设备类型id、名称、时间戳) 方法返回对象。
API命令订阅对象
属性:
- id (只读)
方法:
- remove() 方法不返回任何内容。
示例:
url='ws://playground.devicehive.com/api/websocket'4
API通知订阅
self.api.subscribe_通知(设备ID、网络ID、设备类型ID、名称、时间戳) 方法返回对象。
API通知订阅对象
属性:
- id (只读)
方法:
- remove() 方法不返回任何内容。
示例:
url='ws://playground.devicehive.com/api/websocket'5
API设备
self.api.列出设备(名称、名称模式、网络id、网络名称、排序字段、排序顺序、take、skip) 方法返回设备对象的列表。 列出设备的方法 设备hiveapi 类是此调用顶部的包装器。
self.api.get_device(device_id) 方法返回 device 对象。 获取设备的方法 电话号码。
self.api.放置设备(设备id、名称、数据、网络id、设备类型id,被阻止) 方法不返回任何内容。 放置设备的方法 设备hiveapi 类是此调用顶部的包装器。
self.api.list\u命令(设备id、开始、结束、命令、状态、排序字段、排序顺序、接受、跳过) 方法返回 命令的对象列表。 列出命令的方法 设备hiveapi 类是此调用顶部的包装器。
self.api.send_command(设备id、命令名、参数、生存期、时间戳、状态、结果) 方法返回 命令 对象。 发送命令的方法 设备hiveapi 类是此调用顶部的包装器。
self.api.list_通知(设备id、开始、结束、通知、排序字段、排序顺序、获取、跳过) 方法返回通知对象的列表。 列出通知 类的方法是这个调用之上的包装器。
self.api.发送通知(设备ID、通知名称、参数、时间戳) 方法返回通知对象。 发送通知的方法 设备hiveapi 类是此调用顶部的包装器。
请参见设备hiveapi的说明 有关详细信息。
API设备对象
API设备对象具有与设备相同的属性对象
API设备对象具有来自 对象,并使用:
扩展这些方法- subscribe\u insert\u命令(名称、时间戳) 方法返回 命令订阅对象。所有参数都是可选的。
- subscribe_update_命令(名称、时间戳) 方法返回 命令订阅对象。所有参数都是可选的。
- 订阅通知(名称、时间戳) 方法返回 通知订阅对象。所有参数都是可选的。
api命令对象
api命令对象的属性与命令相同 对象
api command对象的方法与 对象
API网络
self.api.list_networks(name,name_pattern,sort_field,sort_order,take,skip) 方法返回网络对象的列表。 列出网络的方法 设备hiveapi 类是此调用顶部的包装器。
self.api.get_network(network_id) 方法返回 network 对象。 获取网络的方法 电话号码。
self.api.create_network(name,description) 方法返回 网络对象。 创建网络的方法 是此呼叫的包装器。
参见 设备hiveapi的说明 有关详细信息。
API网络对象
API网络对象具有与网络相同的属性 对象
api network object具有 网络中的所有方法 对象,并使用:
扩展这些方法- 列出设备(名称、名称模式、排序字段、排序顺序、take、skip) 方法返回设备对象的列表。所有参数都是可选的。
- subscribe\u insert\u命令(名称、时间戳) 方法返回 命令订阅对象。所有参数都是可选的。
- subscribe_update_命令(名称、时间戳) 方法返回 命令订阅对象。所有参数都是可选的。
- 订阅通知(名称、时间戳) 方法返回 通知订阅对象。所有参数都是可选的。
示例:
url='ws://playground.devicehive.com/api/websocket'7
API设备类型
self.api.list_设备类型(名称、名称模式、排序字段、排序顺序、take、skip)
方法返回
设备类型
对象的列表。
列出设备类型
类的方法是这个调用之上的包装器。
self.api.get_device_type(device_type_id)
方法返回
设备类型
对象。
获取设备类型的方法
类是此调用的包装器。
self.api.create_device_type(name,description)
方法返回
设备类型
对象。
创建设备类型
设备hiveapi
类是此调用顶部的包装器。
请参阅设备hiveapi的说明 键入 方法以获取更多详细信息。
API设备类型对象
API设备类型对象具有与设备类型相同的属性 对象
API设备类型对象具有来自设备类型的所有方法 对象并将这些方法扩展为:
- 列出设备(名称、名称模式、排序字段、排序顺序、take、skip) 方法返回设备对象的列表。所有参数都是可选的。
- subscribe\u insert\u命令(名称、时间戳) 方法返回 命令订阅对象。所有参数都是可选的。
- subscribe_update_命令(名称、时间戳) 方法返回 命令订阅对象。所有参数都是可选的。
- 订阅通知(名称、时间戳) 方法返回 通知订阅对象。所有参数都是可选的。
示例:
url='ws://playground.devicehive.com/api/websocket'8
API用户
self.api.list用户(登录、登录模式、角色、状态、排序字段、排序顺序、take、skip) 方法返回 用户 对象的列表。 列出用户 设备hiveapi 类是此调用顶部的包装器。
方法返回对象。 获取当前用户的方法是 通话结束。
self.api.get_user(user_id) 方法返回 user 对象。 获取用户的方法是 这个电话。
self.api.创建用户(self、登录、密码、角色、数据、所有可用的设备类型) 方法返回用户对象。 创建用户的方法 设备hiveapi 类是此调用顶部的包装器。
请参阅 设备hiveapi的说明 更多详细信息。
API用户对象
api用户对象具有与用户相同的属性 对象
api用户对象的方法与用户对象的方法相同。
示例:
url='ws://playground.devicehive.com/api/websocket'9
API扩展示例
在这里,我们将创建一个发送通知和其他 接收这些通知的终结点。
首先,我们将创建 receiver.py :
fromdevicehiveimportDeviceHiveApiurl='ws://playground.devicehive.com/api/websocket'device_hive_api=DeviceHiveApi(url,refresh_token='SOME_REFRESH_TOKEN')0
在下一步中,我们将创建 sender.py
fromdevicehiveimportDeviceHiveApiurl='ws://playground.devicehive.com/api/websocket'device_hive_api=DeviceHiveApi(url,refresh_token='SOME_REFRESH_TOKEN')1
在第一个终端运行python receiver.py。和 python sender.py 在第二个。运行顺序很重要。 必须先启动receiver.py 。
Docker测试
生成图像
fromdevicehiveimportDeviceHiveApiurl='ws://playground.devicehive.com/api/websocket'device_hive_api=DeviceHiveApi(url,refresh_token='SOME_REFRESH_TOKEN')2
运行测试
通过设置 管理刷新令牌,可以使用刷新令牌运行测试 和/或 客户端刷新令牌 变量:
fromdevicehiveimportDeviceHiveApiurl='ws://playground.devicehive.com/api/websocket'device_hive_api=DeviceHiveApi(url,refresh_token='SOME_REFRESH_TOKEN')3
或通过设置 管理访问令牌和/或 客户端访问令牌 变量:
fromdevicehiveimportDeviceHiveApiurl='ws://playground.devicehive.com/api/websocket'device_hive_api=DeviceHiveApi(url,refresh_token='SOME_REFRESH_TOKEN')4
或者通过设置 管理员登录名和密码 管理员帐户的管理员密码和/或客户端登录名 客户端密码 用于客户端帐户。
fromdevicehiveimportDeviceHiveApiurl='ws://playground.devicehive.com/api/websocket'device_hive_api=DeviceHiveApi(url,refresh_token='SOME_REFRESH_TOKEN')5
要使用已启用的请求日志运行测试,您需要更改 日志级别 变量:
fromdevicehiveimportDeviceHiveApiurl='ws://playground.devicehive.com/api/websocket'device_hive_api=DeviceHiveApi(url,refresh_token='SOME_REFRESH_TOKEN')6
要运行特定的测试,您需要设置 测试 变量:
fromdevicehiveimportDeviceHiveApiurl='ws://playground.devicehive.com/api/websocket'device_hive_api=DeviceHiveApi(url,refresh_token='SOME_REFRESH_TOKEN')7