来自industrial.io的contxt sdk
contxt-sdk的Python项目详细描述
contxt python软件开发工具包
依赖关系
这个项目需要python 3.6+。
安装
要安装contxt-sdk
,只需使用pip:
$ pip install contxt-sdk
只要您的活动python环境已经安装了该包,它还将通过contxt
安装命令行界面(cli)。要查看支持的命令列表,请运行以下命令:
$ contxt -h
此外,还支持通过argcomplete完成命令行选项卡。要激活,请运行以下命令并刷新bash环境:
$ activate-global-python-argcomplete
贡献
请参考release guide。
命令行界面
开始
为了访问任何contxt api,我们首先需要登录。为此,请运行以下命令:
$ contxt auth login
它将提示您输入用户名和密码,这与您用于contxt应用程序的登录名相同。
可用命令
验证
$ contxt auth -h
usage: contxt auth [-h] {login,logout} ...
optional arguments:
-h, --help show this help message and exit
subcommands:
{login,logout}
login Login to contxt
logout Logout of contxt
物联网
$ contxt iot -h
usage: contxt iot [-h] {groupings,feeds,fields,unprovisioned,field-data} ...
optional arguments:
-h, --help show this help message and exit
subcommands:
{groupings,feeds,fields,unprovisioned,field-data}
groupings Get groupings
feeds Get feeds
fields Get fields
unprovisioned Unprovisioned fields
field-data Get field data
ems
$ contxt ems -h
usage: contxt ems [-h]
{util-spend,util-usage,util-spend-metrics,util-usage-metrics}
...
optional arguments:
-h, --help show this help message and exit
subcommands:
{util-spend,util-usage,util-spend-metrics,util-usage-metrics}
util-spend Utility spend
util-usage Utility usage
util-spend-metrics Utility spend metrics
util-usage-metrics Utility usage metrics
资产
$ contxt assets -h
usage: contxt assets [-h]
{facilities,types,assets,attr,attr-vals,metrics,metric-vals}
...
optional arguments:
-h, --help show this help message and exit
subcommands:
{facilities,types,assets,attr,attr-vals,metrics,metric-vals}
facilities Get facility assets
types Get asset types
assets Get assets
attr Get asset attributes
attr-vals Get asset attribute values
metrics Get asset metrics
metric-vals Get asset metric values
继续
$ contxt contxt -h
usage: contxt contxt [-h] {orgs,mk-org,users,add-user} ...
optional arguments:
-h, --help show this help message and exit
subcommands:
{orgs,mk-org,users,add-user}
orgs Get organizations
mk-org Create organization
users Get users
add-user Add user to an organization
总线
$ contxt bus -h
usage: contxt bus [-h] {channels} ...
optional arguments:
-h, --help show this help message and exit
subcommands:
{channels}
channels Get channels
工人
机器认证
$ contxt contxt -h
usage: contxt contxt [-h] {orgs,mk-org,users,add-user} ...
optional arguments:
-h, --help show this help message and exit
subcommands:
{orgs,mk-org,users,add-user}
orgs Get organizations
mk-org Create organization
users Get users
add-user Add user to an organization
$ contxt bus -h
usage: contxt bus [-h] {channels} ...
optional arguments:
-h, --help show this help message and exit
subcommands:
{channels}
channels Get channels
由于cli接口只是sdk中不同功能的包装器,用户还可以利用这些 函数在它们自己的代码中。在contxt中,我们有一个机器用户的概念,它由一个唯一的 客户机ID/客户机密钥对(而不是像普通用户那样的用户/密码组合)。在编写代码时 最终将进入需要调用其他api(这显然很常见)的生产环境 将在contxt中自动获得唯一的客户机id/客户机密钥对。创建此服务时, 您也可以在本地开发环境中使用这些凭据。
基层工人阶级
为了简化开发,我们在sdk中提供了一个worker基类来抽象 身份验证过程的细微差别(如果您有兴趣,here是指向此过程文档的链接,在 如果你真的很无聊,想找些“轻松”的读物)。在这个sdk的根路径中,您将 请参阅“示例”目录,其中包含一些如何执行各种任务的示例。在“sample_worker.py”文件中, 您将看到一个关于如何实现baseworker类的非常简单的示例。
在这个示例工作程序文件中,您将只看到几行代码,以便开始使用。然而,这是至关重要的, 为客户机ID和客户机机密设置环境变量。我们在环境中提供这些 原因:
- 你永远不想把你的客户机id/客户机密钥对放在你的代码中,以便提交到任何地方。这是一个 少校否,因为这些应视为与用户凭据相同
- contxt将在部署到contxt环境(staging、prod等)时在环境中自动设置这些值。 因此,在开发过程中设置此设置将使其在部署时实现无缝连接
看看这个example,您可以看到我们正在实现BaseWorker
类。在后面
在场景中,这个类正在做所有的工作,比如获取令牌、刷新令牌等等,所以您不必这样做。在
本例中,我们将调用contxt设施(资产)服务以获取可用设施的列表
给这个工人(机器用户)。为此,我们必须实例化facilities类并传入self.auth
。
接下来,在do_work
方法中,它只是使
调用get_facilities
。您可以遍历此列表,或将其打印到
控制台(就像我们在这里做的那样)。
从这里开始,您可以继续编写应用程序逻辑,以使用所有sdk执行所需的任何任务。 您可以使用的功能。
cli示例
导出物联网数据
您可以使用以下命令从IoT服务导出字段数据:
$ contxt iot field-data -h
usage: contxt iot field-data [-h] [-e END_DATE] [-p]
grouping_id start_date {0,60,900,3600}
例如:
$ contxt iot field-data "09d26434-7b5b-448f-911c-2deb5e9a78ce" "2019-02-01" 60
此命令将使用t的csv文件创建目录export_<grouping_slug>_<current_time>
他将分组内和指定时间范围内的每个字段关联起来。还有一个meta.json
文件,其中包含有关导出的特定信息,如行计数、字段id和单位。