从enOcean串行接口(USB)接收消息,并将选定的消息提供给MQTT代理。
enocean-mqtt的Python项目详细描述
EnOcean到MQTT转发器
这个Python模块从EnOcean接口(例如,通过USB)接收消息,并将选定的消息发布到MQTT代理。在
您也可以将其配置为用传出响应应答应答传入的EnOcean消息。响应内容也使用MQTT请求定义。在
它建立在Python EnOcean库之上。在
安装
enocean mqtt在PyPI上可用,可以使用pip安装:
pip install enocean-mqtt
或者,直接从github安装最新版本:
- 下载这个目录
- 使用
python setup.py develop
安装它
然后,执行配置:
- 调整
enoceanmqtt.conf.sample
文件并将其放入/etc/enoceanmqtt.conf公司- 设置enocean接口端口
- 定义MQTT代理地址
- 定义要监视的传感器
- 确保MQTT代理正在运行
- 从配置文件的目录中运行
enoceanmqtt
,或将配置文件作为命令行参数提供
设置为守护程序
假设您希望此工具作为守护程序运行,它由systemd自动启动:
- 将
enoceanmqtt.service
复制到/etc/systemd/system/
(只生成一个符号链接will not work) systemctl enable enoceanmqtt
systemctl start enoceanmqtt
设置为docker容器
或者,您可能希望使用Docker,而不是运行本机的deamon:
- 安装
/config
卷和您的enocean USB设备 - 调整
/config
文件夹中的enoceanmqtt.conf
文件
为EnOcean接口定义持久设备名
如果您拥有一个USB EnOcean接口,并将其与其他一些USB设备一起使用,则可能会面临这样的情况:EnOcean接口根据您的插拔顺序获得不同的设备名称,例如/dev/ttyUSB0
或{
要解决这个问题,您可以制定一个udev规则,为设备分配一个符号名。为此,使用以下内容创建文件/etc/udev/rules.d/99-usb.rules
:
SUBSYSTEM=="tty", ATTRS{product}=="EnOcean USB 300 DB", SYMLINK+="enocean"
重新启动后,这将分配符号名/dev/enocean
。如果您使用不同的enocean接口,您可能希望通过查看dmesg
来检查产品字符串,并在此处搜索相应的条目。或者,您可以检查udevadm info -a -n /dev/ttyUSB0
,假设接口当前映射到ttyUSB0
。在
配置
请查看提供的enoceanmqtt.conf.sample示例配置文件。大多数都应该自我解释。在
可以将多个配置文件指定为命令行参数。值被合并,后面的配置文件会覆盖前者的值。命令如下:
/etc/enoceanmqtt.conf
- 在Dockerfile:
/enoceanmqtt-default.conf
中,比较enoceanmqtt-default.conf。在 - 任何进一步的命令行参数。在
这可用于从设备配置中拆分安全敏感值。在
回答EnOcean消息
要回答EnOcean消息,请在配置文件中配置answer
开关和default_data
。要定制响应数据,您需要将MQTT消息发布到传感器主题,在该主题前面加上/req
。在
例如:如果要将名为heating
(例如,rorg = 0xA5
,func = 0x20
,type = 0x01
)的加热执行器的阀位(设定点)设置为80%,则将整数值80发布到主题enocean/heating/req/SP
。这将替换default_data
的相应部分。在
- 项目
标签: