与ELKM1报警/自动化面板交互的库。

elkm1-lib的Python项目详细描述


python elkm1库

用于与ELKM1报警/自动化面板交互的库。

https://github.com/gww/elkm1

要求

  • python 3.5(或更高版本)

说明

此包创建为一个库,用于与ELKM1报警/自动化交互 模式。写这篇文章的动机是和家庭助理一起使用 自动化平台。该库可用于编写其他elkm1集成 应用。面板的IO通过TCP或 串行端口。

安装

    $ pip install elkm1_lib

概述

ELK面板的基本连接:

fromelkm1_libimportElkimportlogging# Print to STDOUTLOG=logging.getLogger(__name__)logging.basicConfig(level=logging.DEBUG,format='%(message)s')# Connect to elkelk=Elk({'url':'elk://192.168.1.100'})elk.connect()elk.run()

以上将连接到IP地址为192.168.1.100的ELK面板。麋鹿:// 前缀指定连接为纯文本。或者,麋鹿://将 通过TLS连接。在这种情况下,必须指定用户ID和密码 呼叫麋鹿变为:

elk=Elk({'url':'elks://192.168.1.100','userid':'test','password':'pass'})

要查看工作示例代码,请查看脚本bin/simple

elk对象支持元素的概念。一个元素 是区域灯光等的基类表示。因此,对于 示例有一个区域列表:elk.zones,每个区域可以是 通过elk.zones[index]访问。每个元素都有一个\u str 表示,以便轻松打印其内容。

从0开始引用所有元素。即使麋鹿面板 例如,引用1-208区,库引用它们 作为0-207区。从基0到1以及从基0到1的所有转换都是 在elkm1_lib.message模块中内部处理。

在创建elk对象并连接到面板之后 库代码将所有元素与麋鹿面板中的数据同步。

许多麋鹿消息由库处理,缓存它们的内容。当A 消息导致更改已注册的元素的属性 调用回调以便通知用户对库的使用 不断变化的元素。以下用户代码显示了注册回调:

defcall_me(element,changeset):print(changeset)forzone_numberinrange(Max.ZONES.value):elk.zones[zone_number].add_callback(call_me)

库编码、解码和处理来自 麋鹿面板。所有的编码和解码都在elkm1 lib.message模块中完成。

接收到的消息用回调处理。图书馆 内部注册回调以便解码消息 可用于更新元素。的用户 库也可以注册回调。任何特定信息 可能有多个回调。

当收到消息时,它被解码 并做了一些验证。消息处理程序被调用 与解码消息中的字段一起。每种类型 消息具有与消息类型匹配的参数。所有处理程序参数 是命名参数。

下面是一个注册消息处理程序的示例,以及如何调用它:

defzone_status_change_handler(zone_number,zone_status):print(zone_number,zone_status)elk.add_handler('ZC',zone_status_change_handler)

上述代码为"zc"注册回调(麋鹿区域状态更改) 信息。当接收到zc消息时,将调用处理函数 带有区域号和区域状态。

实用程序

库的bin目录有一个实用程序和 库的几个示例用法。

mkdoc

实用程序mkdoc创建麋鹿列表的标记表 带有复选标记的消息具有编码器/解码器 而这些消息的x不打算被实现。 没有要mkdoc的参数。它输出到标准输出。 报告的数据主要来自ELKM1库代码。 mkdoc脚本中硬编码了一些东西,特别是 "无计划实施"列表。

简单

python脚本是elkm1库的一个简单用法。 它连接到面板,同步到内部内存,然后继续 收听来自面板的任何消息。ELKM1到的URL 从名为elkm1_url的环境变量中检索connect to

麋鹿

elkpython脚本有点像命令解释程序。它可以跑进去 两种模式。默认为非交互模式。只需运行elk命令。 非交互模式类似于simple除了 两个消息处理程序(超时未知处理程序)。

也可以通过调用 麋鹿-i。在此模式下使用光标(全屏使用终端) 它有一个命令行和一个输出窗口。选项卡在 命令行和输出窗口。在输出窗口中,箭头键 滚动滚轮滚动窗口内容。

在运行elk-i的命令行中 命令数。从帮助开始。然后help<;command>; 每个命令的详细信息。通常有命令来转储内部 元素的状态并调用任何编码器来发送消息 到麋鹿面板。

例如,light<;4、8、12-14将调用 用于灯光元素打印灯光0-3、8和12-14的缓存信息。

另一个例子是发出pf(关灯)的pf 3。 3号灯的命令(面板上的4号灯--记住0 相对于1个基)。

向面板发送消息的所有命令都是自动的 已发现并且是elkm1库消息中的所有xx_encode函数 模块。docstring和xx_encode的参数显示为 的帮助。

开发

此项目使用诗歌作为开发依赖项。安装说明在他们的网站上。

开始开发:

git clone https://github.com/gwww/elkm1.git
cd elkm1
poetry install
poetry shell # Or activate the created virtual environment
make test # to ensure everything installed properly

根目录中还有一个makefilemake命令 后面跟着makefile中的一个目标。如果你不 拥有或希望使用make作为常见的示例 可以运行的命令。

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

推荐PyPI第三方库


热门话题
c#Java Tcp服务器和。Net Tcp客户端的发送和接收问题   安卓应用程序上的java标记地理位置,其位置位于我周围5Km半径范围内。   向java添加对话框并检索html文件   当eclipse甚至无法打开时,java会在eclipse中更改不兼容的JVM   java中同一jframe中的jlabel和paintComponent   基于另一数组排序的java排序   java AADSTS7000012:该补助金是为另一个租户获得的   java在JSF中使用foreach循环   java如何通过maven为运行junit测试创建运行配置?   java Selenium webDriver不稳定错误堆栈跟踪   java有没有办法创建以键为大写的JSON对象?