跳转到内容

Atlas Scientific 蠕动泵

ezo_pmp 组件允许您在 ESPHome 中使用 Atlas Scientific 蠕动泵。 支持 EZO-PMP(数据手册)和 EZO-PMP-L(数据手册)。 此传感器需要在配置中设置 I²C 总线才能工作。

NOTE

此组件不会自动在 Home Assistant 前端直接可控,因为 Home Assistant 不支持泵。为了从前端控制泵,您需要使用模板来提供所需操作的访问。请参阅 Home Assistant 配置

ezo_pmp:
id: ezo_pmp
address: 103 # EZO-PMP 的默认地址
update_interval: 60s
  • id (必需, ID): 指定泵的 ID 以便控制它。
  • address (可选, int): 指定传感器的 I²C 地址。默认为 103。
  • update_interval (可选, Time): 检查传感器的时间间隔。默认为 60s

由于 EZO-PMP 提供大量传感器,且每个传感器需要单独轮询,代码已优化为不更新配置中未定义的传感器。如果您需要从泵获取非常快速的更新(3 秒以下),请只启用您实际需要的传感器。

此传感器指示当前正在运行或上次运行的投加命令中已投加的体积(毫升)。

sensor:
- platform: ezo_pmp
current_volume_dosed:
id: current_volume_dosed
name: 当前投加体积
  • id (可选, ID): 设置此传感器的 ID 以便在 lambda 中使用。
  • 传感器的所有其他选项。

此传感器指示自上次泵启动以来已投加的总体积(毫升)。如果泵已反向运行,可能为负数。

sensor:
- platform: ezo_pmp
total_volume_dosed:
id: total_volume_dosed
name: 总投加体积
  • id (可选, ID): 设置此传感器的 ID 以便在 lambda 中使用。
  • 传感器的所有其他选项。

此传感器指示自上次泵启动以来已投加的绝对总体积(毫升)。

sensor:
- platform: ezo_pmp
absolute_total_volume_dosed:
id: absolute_total_volume_dosed
name: 绝对总投加体积
  • id (可选, ID): 设置此传感器的 ID 以便在 lambda 中使用。
  • 传感器的所有其他选项。

指示正在被投加(或如果泵已完成投加)的总体积(毫升),由投加操作触发。当使用具有持续时间的投加操作时,传感器将正确计算总体积。

sensor:
- platform: ezo_pmp
last_volume_requested:
id: last_volume_requested
name: 上次请求体积
  • id (可选, ID): 设置此传感器的 ID 以便在 lambda 中使用。
  • 传感器的所有其他选项。

泵提供其可提供的最大流量的自身计算值(毫升/分钟)。超过此速率的投加请求将失败。当使用连续投加操作时,这是泵每分钟将投加的体积。此值将在泵校准后更新(参见 ezo_pmp.set_calibration_volume 操作)。

sensor:
- platform: ezo_pmp
max_flow_rate:
id: max_flow_rate
name: 最大流量
  • id (可选, ID): 设置此传感器的 ID 以便在 lambda 中使用。
  • 传感器的所有其他选项。

为泵供电的电源当前电压。不要与为泵上电子元件供电的电压混淆。

sensor:
- platform: ezo_pmp
pump_voltage:
id: pump_voltage
name: 泵电压

指示泵当前是否正在运行。

binary_sensor:
- platform: ezo_pmp
pump_state:
id: pump_state
name: 泵状态

指示投加操作当前是否已暂停。

binary_sensor:
- platform: ezo_pmp
is_paused:
id: is_paused
name: 已暂停

指示泵当前运行的投加模式。可以是 VolumeVolume/TimeConstant Flow RateContinuousNone 中的任何一个。

text_sensor:
- platform: ezo_pmp
dosing_mode:
id: dosing_mode
name: 投加模式

指示泵的校准状态。可以是 Fixed VolumeVolume/TimeFixed Volume & Volume/TimeUncalibrated 中的任何一个。

text_sensor:
- platform: ezo_pmp
calibration_status:
id: calibration_status
name: 校准状态

自动化中使用此操作,使蠕动泵以最大流量连续投加。泵将在连续模式运行 20 天后自动停止。

on_...:
then:
- ezo_pmp.find:
id: ezo_pmp
  • id (必需, ID): 泵的 ID。

自动化中使用此操作,使蠕动泵以最大流量投加特定体积(毫升)。如果体积为负,泵将反向运行。

on_...:
then:
- ezo_pmp.dose_volume:
id: ezo_pmp
volume: 10
# 模板化
- ezo_pmp.dose_volume:
id: ezo_pmp
volume: !lambda |-
return id(some_volume_sensor).state;
  • id (必需, ID): 泵的 ID。
  • volume (必需, float, 可模板化): 要投加的体积(毫升)。如果为负,泵将反向运行。

自动化中使用此操作,使蠕动泵在指定的 duration(分钟)内投加特定的 volume(毫升)。在时间段结束时,泵将已投加指定的 volume。如果体积为负,泵将反向运行。

on_...:
then:
- ezo_pmp.dose_volume_over_time:
id: ezo_pmp
volume: 23.4
duration: 2
# 模板化
- ezo_pmp.dose_volume_over_time:
id: ezo_pmp
volume: !lambda |-
return id(some_volume_sensor).state;
duration: !lambda |-
return id(some_duration_sensor).state;
  • id (必需, ID): 泵的 ID。
  • volume (必需, float, 可模板化): 要投加的体积(毫升)。如果为负,泵将反向运行。
  • duration (必需, int, 可模板化): 泵投加所请求体积所需的时间(分钟)。

ezo_pmp.dose_with_constant_flow_rate 操作

Section titled “ezo_pmp.dose_with_constant_flow_rate 操作”

自动化中使用此操作,使蠕动泵在指定的 duration(分钟)内每分钟投加特定的 volume(毫升)。在时间段结束时,泵将已投加指定的 volume 乘以 duration。如果体积为负,泵将反向运行。

on_...:
then:
- ezo_pmp.dose_with_constant_flow_rate:
id: ezo_pmp
volume_per_minute: 10.2
duration: 2
# 模板化
- ezo_pmp.dose_with_constant_flow_rate:
id: ezo_pmp
volume_per_minute: !lambda |-
return id(some_volume_sensor).state;
duration: !lambda |-
return id(some_duration_sensor).state;
  • id (必需, ID): 泵的 ID。
  • volume_per_minute (必需, float, 可模板化): 每分钟要投加的体积(毫升)。如果为负,泵将反向运行。
  • duration (必需, int, 可模板化): 泵每分钟投加所请求体积的时间(分钟)。

使用此操作暂停先前发出的投加命令。要确定投加是否已暂停,可以使用已暂停传感器。如果泵当前已暂停,再次发出此操作将取消暂停。

on_...:
then:
- ezo_pmp.pause_dosing:
id: ezo_pmp
  • id (必需, ID): 泵的 ID。

使用此操作停止当前的投加命令。

on_...:
then:
- ezo_pmp.stop_dosing:
id: ezo_pmp
  • id (必需, ID): 泵的 ID。

清除当前投加体积总投加体积绝对总投加体积传感器的值。

on_...:
then:
- ezo_pmp.clear_total_volume_dosed:
id: ezo_pmp
  • id (必需, ID): 泵的 ID。

使用此操作校准蠕动泵。EZO-PMP 需要两种形式的校准:绝对体积和随时间变化的体积。您可以使用校准状态传感器检查校准状态。有关校准泵的程序,请参阅数据手册。

on_...:
then:
- ezo_pmp.set_calibration_volume:
id: ezo_pmp
volume: 10.01
# 模板化
- ezo_pmp.set_calibration_volume:
id: ezo_pmp
volume: !lambda |-
return id(some_volume_sensor).state;
  • id (必需, ID): 泵的 ID。
  • volume (必需, float, 可模板化): 作为校准过程一部分测量的体积。

清除存储在泵中的校准值。您可以使用校准状态传感器检查校准状态。

on_...:
then:
- ezo_pmp.clear_calibration:
id: ezo_pmp
  • id (必需, ID): 泵的 ID。

使用此操作使泵控制板上的 LED 闪烁一分钟。当 LED 闪烁时,泵不会响应任何其他操作。

on_...:
then:
- ezo_pmp.find:
id: ezo_pmp
  • id (必需, ID): 泵的 ID。

将泵的 I2C 地址更改为提供的值。更改地址后,您必须上传带有更新后的泵 I2C 地址的新版本 ESPHome 固件,泵才能工作。

on_...:
then:
- ezo_pmp.change_i2c_address:
id: ezo_pmp
address: 100
  • id (必需, ID): 泵的 ID。
  • address (必需, int, 可模板化): 泵的新 I2C 地址。

为了从 Home Assistant 前端控制泵,重要的是将操作公开为具有 UI 渲染的组件。这可以通过在 ESPHome 中使用模板来完成。以下是使用 模板按钮模板数字 在一段时间内投加特定体积的示例。

i2c:
ezo_pmp:
id: ezo_pmp
number:
- platform: template
id: volume
name: "体积"
optimistic: true
min_value: 0
max_value: 100
step: 0.01
- platform: template
id: duration
name: "持续时间"
optimistic: true
min_value: 0
max_value: 100
step: 1
button:
- platform: template
name: "定时投加"
on_press:
- ezo_pmp.dose_volume_over_time:
id: ezo_pump
volume: !lambda |-
return id(volume).state;
duration: !lambda |-
return id(duration).state;

lambda 中,您还可以访问蠕动泵上的操作来执行一些高级操作(有关更多信息,请参阅完整的 API 参考)。函数名称与 YAML 配置中的操作名称相同。