Pilight

Pilight 是一个模块化的开源解决方案,用于与 433 MHz 设备进行通信,并在各种小型计算机上运行。许多常用的 协议 已经可以使用。

该 pilight 集线器通过套接字连接到 pilight-daemon,以接收和发送代码。因此,Home Assistant 不必在负责 RF 通信的计算机上运行。

接收到并支持的 RF 代码会放在 Home Assistant 的事件总线中,因此其他集成(例如自动化)可以直接使用。此外,还提供发送操作以发送 RF 代码。

目前,Home Assistant 支持以下设备类型:

配置

要将 pilight 集成到 Home Assistant 中,请将以下部分添加到您的 configuration.yamlconfiguration.yaml 文件是 Home Assistant 的主要配置文件。它列出了要加载的集成及其特定配置。在某些情况下,需要直接在 configuration.yaml 文件中手动编辑配置。大多数集成可以在 UI 中配置。 [Learn more] 文件中。 在更改了configuration.yamlconfiguration.yaml 文件是 Home Assistant 的主要配置文件。它列出了要加载的集成及其特定配置。在某些情况下,需要直接在 configuration.yaml 文件中手动编辑配置。大多数集成可以在 UI 中配置。 [Learn more] 文件后,重启 Home Assistant 以应用更改。 该集成现在显示在集成页面的 设置 > 设备与服务 下。其实体在集成卡片上以及实体标签上列出。

# 示例 configuration.yaml 条目
pilight:

Configuration Variables

host string (Optional, default: 127.0.0.1)

运行 pilight-daemon 的计算机的 IP 地址,例如 192.168.1.32。

port integer (Optional, default: 5001)

要连接的网络端口,详情请参见: (https://manual.pilight.org/development/socket/)。

send_delay float (Optional, default: 0.0)

如果在尝试同时切换多个开关时遇到传输问题,您可以定义发送延迟(以秒为单位的分数)。当使用 pilight USB Nano 作为硬件并同时打开或关闭多个开关时,可能会发生这种情况。经过测试的值在 0.3 到 0.8 秒之间,具体取决于硬件。

whitelist string (Optional)

您可以定义一个白名单,以防止过多不必要的 RF 代码(例如,邻居的气象站)被放入您的 HA 事件总线。所有定义的子部分都必须匹配。如果有一个项目为真,则匹配一个子部分。

在此示例中,仅将使用 daycom 或 Intertechno 协议接收的 RF 代码放在事件总线上,并且仅在设备 ID 为 42 时才如此。有关更多可能的设置,请查看 pilight API 的接收器部分。

完整的配置示例可能如下所示:

# 示例 configuration.yaml 条目
pilight:
  host: 127.0.0.1
  port: 5000
  send_delay: 0.4
  whitelist:  # 可选
    protocol:
      - daycom
      - intertechno
    id:
      - 42

二进制传感器

pilight 二进制传感器平台实现了 pilight hub 的二进制传感器功能。有两种类型的 Pilight 二进制传感器配置:一种是正常传感器,它发送开和关的循环状态,另一种是触发传感器,它仅在发生事件时发送触发信号(例如许多廉价的 PIR 动态检测器)。

要在您的安装中启用 Pilight 二进制传感器,请在您的 configuration.yamlconfiguration.yaml 文件是 Home Assistant 的主要配置文件。它列出了要加载的集成及其特定配置。在某些情况下,需要直接在 configuration.yaml 文件中手动编辑配置。大多数集成可以在 UI 中配置。 [Learn more] 文件中添加以下内容:

# 示例 configuration.yaml 条目
binary_sensor:
  - platform: pilight
    variable: "state"

Configuration Variables

variable string Required

数据流中定义传感器值的变量名称。

payload string Required

消息负载标识符。 只有在所有标识符匹配时,传感器值才会被设置。

name string (Optional)

传感器的名称。

payload_on string | float | integer (Optional)

变量 on 值。集成将把其识别为逻辑 ‘1’。

payload_off string | float | integer (Optional)

变量 off 值。集成将把其识别为逻辑 ‘0’。

disarm_after_trigger boolean (Optional, default: false)

将传感器配置为触发类型。

reset_delay_sec integer (Optional, default: 30)

如果 disarm_after_trigger 设置为 true,则在传感器解除警报前的秒数。

完整示例

完整的配置示例可能如下所示:

# 示例 configuration.yaml 条目
binary_sensor:
  - platform: pilight
    name: "运动"
    variable: "state"
    payload:
      unitcode: 371399
    payload_on: "关闭"
    disarm_after_trigger: true
    reset_delay_sec: 30

传感器

pilight 传感器平台用于 433 MHz 设备,使用消息负载中的值作为传感器值。可以设置唯一标识符(例如 uuid)以区分多个 pilight 设备。要使用 pilight 传感器,必须先设置 pilight Home Assistant 集线器。

要通过 pilight 使用您的传感器,请确保其被 支持,并在您的 configuration.yamlconfiguration.yaml 文件是 Home Assistant 的主要配置文件。它列出了要加载的集成及其特定配置。在某些情况下,需要直接在 configuration.yaml 文件中手动编辑配置。大多数集成可以在 UI 中配置。 [Learn more] 文件中添加以下内容:

# 示例 configuration.yaml 条目
sensor:
  - platform: pilight
    variable: temperature
    payload:
      uuid: "0000-b8-27-eb-f447d3"

Configuration Variables

variable string Required

数据流中定义传感器值的变量名称。

payload string Required

消息负载标识符。只有在所有标识符匹配时,传感器值才会被设置。

name string (Optional, default: Pilight 传感器)

传感器的名称。

unit_of_measurement string (Optional)

定义传感器的计量单位(如果有)。

示例:气象站

本节展示了如何使用气象站的值的实际示例。

# 示例 configuration.yaml 条目
sensor:
  - platform: pilight
    name: "温度"
    variable: "temperature"
    payload:
      uuid: 0000-b8-27-eb-f1f72e
    unit_of_measurement: "°C"
  - platform: pilight
    name: "湿度"
    variable: "humidity"
    payload:
      uuid: 0000-b8-27-eb-f1f72e
    unit_of_measurement: "%"
  - platform: pilight
    name: "电池"
    variable: "battery"
    payload:
      uuid: 0000-b8-27-eb-f1f72e
    unit_of_measurement: "%"

开关

pilight 开关平台使用 pilight 发送 433 MHz 命令以打开或关闭 433 MHz 设备。必须设置 Pilight Home Assistant 集线器。

此外,可以定义 RF 命令来触发该开关的开关。这允许您在不混淆 Home Assistant 状态的情况下,使用附带的遥控器来控制 433 MHz 开关。您甚至可以定义多个开/关命令,因此可以使用多个 RF 遥控器来切换此开关。

为确保 Home Assistant 知道设备的实际状态,建议使用具有对任何 433 MHz 设备未知代码的 RF 遥控器。因此,您使用遥控器触发此开关以发送正确的 RF 代码到设备。

要定义一个 Pilight 开关,请在您的 configuration.yamlconfiguration.yaml 文件是 Home Assistant 的主要配置文件。它列出了要加载的集成及其特定配置。在某些情况下,需要直接在 configuration.yaml 文件中手动编辑配置。大多数集成可以在 UI 中配置。 [Learn more] 文件中添加以下行:

# 示例 configuration.yaml 条目
switch:
  - platform: pilight
    switches:
      床灯:
        on_code:
          protocol: intertechno_old
          'on': 1
        off_code:
          protocol: intertechno_old
          'off': 1

Configuration Variables

switches string Required

包含所有命令开关的列表。

entry list Required

命令开关的名称,可以有多个条目。

on_code list Required

用于打开设备的代码。

off_code list Required

用于关闭设备的代码。

on_code_receive list (Optional)

如果给定,如果 pilight 收到该命令,将打开开关。

off_code_receive list (Optional)

如果给定,如果 pilight 收到该命令,将关闭开关。

不同代码(on_codeoff_code)的变量:

  • protocol (必填): 要使用的协议,例如 intertechno_olddaycom
  • systemcode (可选): 设备的系统代码。
  • unit (可选): 要使用的单元(相当于 pilight-send --unit)。
  • unitcode (可选): 要使用的单元代码(相当于 pilight-send --unitcode)。
  • id (可选): 设备的 ID
  • state (可选): 'on''off' 必须用引号括起来以正确解析。
  • ‘off’ (可选): 10
  • ‘on’ (可选): 10

有关可能的代码条目,请查看 pilight API。所有由 pilight-send 允许的命令都可以使用。这意味着如果对于某个特定协议,使用了不同的参数,您应该能够用特定协议所需的适当变量替换上面的变量。例如,在使用 elro_800_switchmumbi 协议时,您将必须用 unitcode 替换变量 unit,否则会发生错误。

不同接收代码(on_code_receiveoff_code_receive)的变量:

  • echo (可选): 如果在接收到给定代码时应发送打开/关闭代码,则设置为 true

这在您直接将发送器与接收器配对的情况下非常有用,以防止信号被发送两次。

示例

switch:
  - platform: pilight
    switches:
      床灯:
        on_code:
          protocol: intertechno_old
          unit: 3
          id: 4
          'on': 1
        off_code:
          protocol: intertechno_old
          unit: 3
          id: 4
          'off': 1
        on_code_receive:
          protocol: daycom
          systemcode: 14462
          unit: 6
          id: 34
          state: "on"
        off_code_receive:
          protocol: daycom
          systemcode: 14462
          unit: 6
          id: 34
          state: "off"

灯光

Pilight LED 调光器设备可以根据不同的亮度值用作灯光。 调光器和开关的配置参数相同,但调光器支持最低和最高调光级别。

dimlevel_mindimlevel_max 设置应在 015 的范围内设置,正如 pilight 所使用的那样。由 Home Assistant 执行的任何调光(最有可能在 0100 范围内)将在 Pilight 中转换为可用配置范围的百分比。

Configuration Variables

lights string Required

包含所有命令灯具的列表。

entry list Required

命令灯具的名称,与开关的名称相同。可以有多个条目。

示例

light:
  - platform: pilight
    lights:
      test2:
        dimlevel_min: 2
        dimlevel_max: 14
        on_code:
          protocol: kaku_dimmer
          id: 23298822
          unit: 10
          'on': 1
        off_code:
          protocol: kaku_dimmer
          id: 23298822
          unit: 10
          'off': 1
        on_code_receive:
          protocol: kaku_dimmer
          id: 23298822
          unit: 10
          state: "on"
        off_code_receive:
          protocol: kaku_dimmer
          id: 23298822
          unit: 10
          state: "off"

故障排除

  • 经测试的 RF 发送和接收硬件列表可在 这里 获得。这在购买之前可能会很有用。
  • 当协议已被 pilight 知道时,发送命令很简单,但是接收命令可能会相对困难。由于发送硬件或 RF 接收器的时间不同,可能会导致代码未能正确识别。如果发生这种情况,请按以下步骤操作:
  1. 安装 pilight 源代码(请放心,这非常简单),并仅在弹出菜单中激活您期望的协议。这将减少误报。
  2. 通过运行 pilight-debug 检查您的设备和 RF 接收器的实际时间。记住 pulslen 参数。
  3. 转到 pilight 源代码的 libs/pilight/protocols/433.92 子文件夹并打开您协议的 .c 文件。查找 MIN_PULSE_LENGTHMAX_PULSE_LENGTHAVG_PULSE_LENGTH。将脉冲长度更改为与您测量的一致。通过重新运行 $ sudo ./setup.sh 重新编译并安装 pilight。