与ELKM1报警/自动化面板交互的库。
elkm1-lib的Python项目详细描述
python elkm1库
用于与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
麋鹿
elk
python脚本有点像命令解释程序。它可以跑进去
两种模式。默认为非交互模式。只需运行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
根目录中还有一个makefile
。make
命令
后面跟着makefile
中的一个目标。如果你不
拥有或希望使用make
作为常见的示例
可以运行的命令。