跳转到主要内容

将qt-openzwave的MQTT消息转换为Python对象和事件

项目描述

python-openzwave-mqtt

Python库,用于OpenZWave MQTT实现。

消耗来自https://github.com/OpenZWave/qt-openzwave的MQTT输出

有关Home Assistant集成,请参阅自定义组件homeassistant-zwave_mqtt

安装

  • 需要Python 3.7+。我们支持任何一次发布的两个最新Python 3版本。
pip install python-openzwave-mqtt

结构

每个对象映射到主题中的一或两个部分。一个主题可以包含以下部分

  • <Prefix>:每个主题的前缀。在处理中忽略此内容。通常为openzwave/
  • <CollectionType>/<CollectionID>:集合类型和集合中项目的ID。例如:value/3
  • <CollectionID>:某些对象将具有未在主题中类型化的直接集合。例如,在<Prefix>/1中的OZW实例。
  • <ObjectType>:如果父项下只有一个实例。例如:node/2/statistics

示例

向主题openzwave/1/node/2/statistics发送消息。这映射到

类型 标识符
前缀 -
OZW实例 1
OZW节点 2
OZW节点统计信息 -

消息顺序

我们与信号一起工作,当事物发生变化时向信号监听器发送信号。然而,当我们连接到MQTT时,我们一次会接收到大量的保留消息。为了防止信号发送顺序出错,我们将保留所有子消息,直到父消息接收到其信息。

此功能已在OZWManagerOZWInstance中禁用。

如果我们接收到以下主题的消息

  1. openzwave/1/node/2/statistics
  2. openzwave/1/node/2

我们将按相反的顺序处理这些消息

  1. openzwave/1/node/2
  2. openzwave/1/node/2/statistics

建模规则

这个库不应该追求复杂的功能。我们应该尽可能直接表示MQTT中的数据。我们不想更改名称,除了使它们具有Python风格(驼峰式 -> 蛇形_case)。

自动添加辅助器

模型将根据其子模型自动添加辅助器。例如,Node模型有以下子集合

    def create_collections(self):
        """Create collections that Node supports."""
        return {
            # A collection of children
            "instance": ItemCollection(OZWNodeInstance),
            # A single child
            "statistics": OZWNodeStatistics,
        }

这意味着Node创建了以下自动函数

  • get_instance(item_id)通过ID获取实例。
  • instances()获取所有可用实例的迭代器。
  • get_statistics()获取直接子节点。

收集数据

此库使用从MQTT接收到的消息进行实例化。为了使开发更容易,我们创建了两个辅助脚本。一个将转储所有MQTT消息,另一个将读取文本文件中的消息并使用所有数据实例化OZWManager。这可以用于开发、测试或重现错误。

python3 -m script.dump_mqtt > dump.csv
python3 -m script.instance_from_file dump.csv

开发

  • 安装所有要求

    pip install -r requirements_dev.txt
    
  • 我们使用black格式化代码

    black ./
    
  • 使用tox运行测试和代码检查

    tox
    

项目详情


下载文件

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

源分布

python-openzwave-mqtt-1.4.0.tar.gz (24.3 kB 查看散列)

上传时间

构建分布

python_openzwave_mqtt-1.4.0-py3-none-any.whl (31.8 kB 查看散列)

上传时间 Python 3

支持者

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