设备配置单元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通知对象

api通知对象具有与 通知相同的属性 对象

示例:

url='ws://playground.devicehive.com/api/websocket'
6

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设备类型

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

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Oracle将休眠为ISO 8601日期格式   当有线程时,swing计时器不会停止。睡在Java里面   如何使用swing在java中清空密码字段值(字符串)   如何在编辑文本字段上设置单词java(安卓)   单独类中的java OkHttp请求   java Tomcat配置文件/上下文xml似乎已经崩溃了。请确保它是可分析和有效的。有关详细信息,请参阅服务器日志   java在科尔多瓦的ActivityResult上传递   java如何在映射中保持插入顺序。工厂?   “DataOutputStream”和“ObjectOutputStream”之间的java差异   java从FTP文件列表中获取项目的时间戳   java如何在spring security中为每个人忽略一些资源/URL?   模板类嵌套时新的Java泛型类构造函数问题   java读取并查找文件大小为1GB的行   java如何使用字符串say“stop”停止整数格式的while循环   java是否可以在应用程序启动之间将JVM保留在内存中?   java Springboot出现“出现意外错误(类型=内部服务器错误,状态=500)”的问题