从enOcean串行接口(USB)接收消息,并将选定的消息提供给MQTT代理。

enocean-mqtt的Python项目详细描述


EnOcean到MQTT转发器

PyPI pyversionsPyPI statusPyPI version shields.ioPyPI download total

这个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 = 0xA5func = 0x20type = 0x01)的加热执行器的阀位(设定点)设置为80%,则将整数值80发布到主题enocean/heating/req/SP。这将替换default_data的相应部分。在

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

推荐PyPI第三方库


热门话题
java如何在安卓 studio中使用调用jaxws web服务的jar文件   java双时间模拟时钟不打印两个不同的时间   java Jackson反序列化处理不带字段的生成值   多线程在java同步中读锁的目的是什么   为什么java中有这么多获取日期时间的方法?   java从listview中的TextView获取数据   java是否可以定义如何对枚举进行(反)序列化以在枚举内持久化?   Java:异常处理我的catch()有问题   VMWare java SDK:可用的PerfMetricID何时不报告数据?   exec在Java中执行命令而不重定向输出   java使用SpringXML配置实现观察者模式?   java在竹笔平板电脑中使用JPen