跳转到主要内容

一个用于获取和设置EZcontrol XS1网关值的库

项目描述

xs1-api-client pypi_version

一个用于通过HTTP API访问EZcontrol® XS1网关上的执行器和传感器数据的Python 3.5+库。

构建状态

主分支

Beta版本

开发版本

build_master

build_beta

build_dev

codebeat_master

codebeat_beta

codebeat_dev

Home Assistant

此库的初始目标是能够将EZcontrol® XS1网关与Home Assistant集成。相关集成文档可以在这里找到:XS1 Home Assistant组件文档

注意:xs1-api-client被设计为具有可重复使用的设备对象,这意味着设备对象可以被更新。当用户在XS1网关中更改设备的顺序时,它们的ID不会改变,但它们的数字(顺序)会改变。这会导致“设备对象”与设备ID的关联出错。由于我们无法了解这种变化,所以如果没有重新获取所有设备,我们就无法知道我们用于已创建的设备对象的设备号已经不再对应正确的设备。重新获取所有设备需要重新创建所有设备对象。

TL;DR: 如果可能,请不要更改XS1网关中设备的顺序;如果确实需要更改,请重启依赖于xs1-api-client的服务,以强制重新获取所有设备。

如何使用

安装

pip install xs1-api-client

使用

查看[example.py]文件以获取基本示例。如需更多信息,请参阅[文档],它应该能帮到您。

基本示例

创建API对象

创建API对象的基本方法是直接在创建时提供连接信息。

from xs1_api_client import api as xs1api
from xs1_api_client import api_constants

# Create an api object with private configuration
api = xs1api.XS1(host='192.168.2.20', user="Username", password="Password")

这将自动尝试使用给定的凭据连接到网关,并检索基本网关信息,您可以像这样输出:

print("Gateway Hostname: " + api.get_gateway_name())
print("Gateway MAC: " + api.get_gateway_mac())
print("Gateway Hardware Version: " + api.get_gateway_hardware_version())
print("Gateway Bootloader Version: " + api.get_gateway_bootloader_version())
print("Gateway Firmware Version: " + api.get_gateway_firmware_version())
print("Gateway uptime: " + str(api.get_gateway_uptime()) + " seconds")

您还可以指定自定义端口并启用SSL。

api = xs1api.XS1(host='192.168.2.20', port=1234, ssl=True, user="Username", password="Password")

现在您已经连接到您的网关,我们可以检索其配置,设置或检索配置的执行器和传感器的值,甚至修改它们的配置。

设备

您在XS1中配置的所有设备都使用XS1Device基类实现,该类位于/device/__init__.py。此类为每个设备提供基本功能,例如获取idnametype和其他值。

检索执行器

要检索所有64个执行器的列表,请使用以下调用

actuators = api.get_all_actuators()

这将返回一个包含XS1Actuator对象的列表,这是所有执行器的另一个基类。您可以使用类似以下的方式打印所有您的执行器

for actuator in actuators:
    print("Actuator " + str(actuator.id()) + ": " + actuator.name() + " (" + str(actuator.type()) + ")")

还有一个内置的__str__方法来打印出大多数有用的属性,就像这样

for actuator in actuators:
    print(actuator)

您也可以通过使用以下方式根据enableddisabled状态筛选元素

enabled_actuators = api.get_all_actuators(True)

通过简单地使用以下方式检索单个执行器

actuator_1 = api.get_actuator(1)

检索执行器值

要检索执行器的当前值,只需调用

current_value = actuator.value()

设置新的执行器值

要设置此执行器的新值,请使用

actuator.set_value(100)

这将向XS1发送所需请求并设置new_value属性为您提供的值。通常,此值会立即设置,与value属性同步。但是,如果此值与标准value不同,XS1网关仍在尝试更新远程设备上的值。对于某些设备,这可能需要几分钟(例如FHT 80B加热)。

更新执行器信息

当前在值最终更新时没有回调,因此如果您想获取其当前状态更新,您必须手动更新设备信息

actuator.update()

之后,通常的方法如actuator.value()将响应更新的状态。

执行执行器功能

如果您为设备定义了功能预设,您可以使用以下方式获取所有功能的列表

functions = actuator.get_functions()

并按如下方式打印它们

for function in functions:
    print(function)

要执行其中一个功能,请输入

function.execute()

这将立即更新设备状态,与网关的响应同步。但是请记住,向实际远程设备发送此值可能会有延迟,如上所述。

检索传感器列表

要检索所有64个传感器的列表,请使用以下调用

sensors = api.get_all_sensors()

就像执行器一样,您可以使用以下方式根据enableddisabled状态筛选元素

enabled_sensors = api.get_all_sensors(True)
这将返回一个包含XS1Sensor对象的列表,这是所有传感器的基类。
您可以像这样打印它们的基本信息
for sensor in sensors:
    print("Sensor " + str(sensor.id()) + ": " + sensor.name() + " (" + str(sensor.value()) + ")")

就像上面提到的,您也可以使用以下方式检索特定传感器:

for sensor in sensors:
    print(sensor)

sensor_1 = api.get_sensor(1)

来检索特定的传感器。

更新传感器信息

与执行器一样,传感器也没有自动更新。要从XS1网关获取传感器对象的州更新,请调用

sensor.update()

之后,此传感器的完整状态将更新。

禁用设备

XS1支持最多64个执行器和64个传感器配置。这128个设备配置可以通过HTTP API在任何时间访问 - 即使对于特定的设备ID/编号没有配置也是如此。

要检查设备是否已在XS1网页界面中配置(并启用),请调用

device.enabled()

适用于执行器和传感器的统一接口。

获取设备配置

自2.0版本以来,可以使用此库获取和设置XS1上的设备配置。

请查看< span class="docutils literal">example_config.py文件,了解如何检索设备配置。

修改设备配置

在您继续之前

每次配置更改都会写入XS1的内部闪存。请注意,频繁写入闪存可能会降低其性能。

复制设备配置

在此项目中有一个非常详细的示例,名为< span class="docutils literal">example_config_copy_actuator.py,将向您展示如何复制设备配置,并解释您将需要设置自定义配置的大部分重要配置参数。请记住,配置参数可能因设备类型和系统而异。

贡献

Github是社交编码的地方:如果您想编写代码,我鼓励您通过此存储库的分支的拉取请求进行贡献。为错误和新功能创建GitHub工单,并对您感兴趣的项目进行评论。

许可证

xs1-api-client by Markus Ressel
Copyright (C) 2017  Markus Ressel

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program.  If not, see <https://gnu.ac.cn/licenses/>.

项目详情


下载文件

下载适合您的平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分发

xs1_api_client-3.0.1.tar.gz (20.4 kB 查看散列)

上传时间:

构建分发

xs1_api_client-3.0.1-py3-none-any.whl (30.9 kB 查看散列)

上传时间: Python 3

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面