通过MQTT和家庭助理自动完成的尚飞百叶窗

2020-11-24 05:24:50

在本文中,我将向您展示如何使用Raspberry Pi和一些焊接技巧,以通过Home Assistant和Google Home公开的MQTT协议自动化旧的Somfy百叶窗。

我们已经搬到了一个新公寓,它的功能之一是外部百叶窗(又称遮罩),该百叶窗是由尚飞品牌的专用遥控器控制的。但是,就像在电视机上一样,找到遥控器通常很棘手,因此我决定尝试通过Home Assistant和Google Home的其他语音命令来使外部盲目动作自动化。

该系统是尚飞的Telis 4 RTS Pure遥控器,带有两个遥控器,每个遥控器都可以对5个频道进行编程(4个独立频道并组合)。该系统使用称为RTS的传统专有无线电协议,只有Somfy和Telis使用。

Somfy提供了一个名为Somfy MyLink的RTS桥接器,价格约为300CHF,对于不需要的东西来说有点陡峭,只是痒痒。另外,这也没有太多的乐趣。

事实证明,尼克杜伊诺也有类似的痒挠。使用价值3-4瑞士法郎的硬件组件,可以很容易地构建一个软件无线电来模仿Somfy Telis遥控器并控制百叶窗。

有一个简单的Somfy Remote Arduino草图,显示了协议的工作原理。我最初想使盲目控制器尽可能小,并基于ESP32进行设计,并通过arduino-mqtt对其进行控制。

事实证明,这里有完整的MQTT / Web界面脚本Nickduino / Pi-Somfy,该脚本也仅详细介绍了如何焊接以及将其连接到Raspberry Pi的细节。懒惰赢得了这一天,尤其是因为我无论如何都想用我的备用Pi做某事。

通常对于433MHz信号,您可以轻松地使用现成的模块,例如2CHF发送器/接收器对。但是,为了使Somfy拥有比现在更高的RTS专有性,它没有使用典型的433.93MHz频率,而是使用433.42MHz🤦♂️。这意味着将需要进行一些焊接。

4周后,所有eBay物品都就位了,我可以开始焊接了。事实证明,取消焊接的难度比焊接的难度大得多。我设法通过使用瑞士军刀在杠杆下方施加杠杆并逐一加热其连接器来剥落原始振荡器。相比之下,焊接新产品非常容易。

然后,我拿起一根17厘米的实心铜电缆,并将其包裹成一个小线圈。原来,将一根1mm的电缆焊接到一个微小的连接器上是最棘手的事情,但是如果有足够的耐心,事情最终会持续下去。

最终,将所有东西都连接到GPIO 4引脚后,完全连接的发送器很好地适合Raspberry Pi外壳:

安装Pi-Somfy非常容易,只需执行以下步骤。假定您将其安装在/ home / pi的默认pi用户下,并且附带了一个方便的systemctl服务,用于自动启动系统。

默认情况下,它将在您的Pi的端口:80上显示。对百叶窗进行编程需要一点时间。步骤如下:

在您要进行编程的遥控器上设置正确的频道(单个百叶窗或全部)。

单击“添加新名称”以输入名称(顺便说一下,这将是您的MQTT名称)并添加时间。

用笔按遥控器另一侧的“孔”。这会将信号发送到百叶窗以接受对新遥控器的编程。

注意:系统依靠时间来确定盲注百分比。它通常会弄错事情(例如,如果您在中途停止),或者如果百叶窗的长度不同(例如,阳台),则可能会在全通道出现问题。但实际上,它的效果非常好。

MQTT是消息代理的标准协议,在家庭物联网中有很多用途。对于大多数用例,它都有一个基于主题的简单的发布-订阅机制。

家庭助理具有嵌入式MQTT代理,但是强烈建议使用外部代理,例如Mosquitto。您应该将其安装在运行Home Assistant的同一台计算机上,因为它将充当其他MQTT连接的服务的集线器。要在Ubuntu上做到这一点:

现在,与用户一起在/ etc / mosquitto / passwd中设置一个密码文件,以实现homeassantant和pisomfy。

为了进行调试,请在同一台计算机上打开一个单独的选项卡,并通过以下方法订阅“ home-assistant /#”主题下的所有消息:

在您的Pi机器上,打开/home/pi/operateShutters.conf并编辑`[MQTT]部分,如下所示

[MQTT]#MQTT服务器的位置(DNS名称的IP地址)MQTT_Server = myHAmachine#或家庭助手计算机的主机名#MQTT服务器的端口MQTT_Port = 1883#MQTT服务器的用户名MQTT_User = pisomfy#MQTT的密码服务器MQTT_Password = YourPiSomfyPassword#启用自动发现EnableDiscovery = true

此时,带有订阅的选项卡应充满消息。这些是针对每个已编程封面通过MQTT进行的自动发现消息。这将使Home Assistant自动添加实体。

为了简化操作,我只想将_all百叶窗(又称封面)暴露给Google Home / Assistant。为此,我在google_assistant的/etc/homeassistant/configuration.yaml部分中添加了显式部分:

google_assistant:#...暴露域:-风扇实体配置:cover.br_all:暴露:真实别名:-“卧室盖” cover.lr_all:暴露:真实别名:-“客厅盖”

重新启动Home Assistant,并说出神奇的Ok Google,同步所有设备后,封面将显示在您的Home App中:

杀手级功能将其设置为例行程序,以在您醒来,进入睡眠状态时打开/关闭百叶窗。