Atlas Scientific 蠕动泵
ezo_pmp 组件允许你使用 Atlas Scientific 蠕动泵与 ESPHome。支持 EZO-PMP(数据手册)和 EZO-PMP-L(数据手册)。要使此传感器工作,需要在配置中设置 I²C 总线。
NOTE
此组件不会自动在 Home Assistant 前端中直接可控制,因为 Home Assistant 不支持泵。为了从前端控制泵,你需要使用模板来提供对你所需操作的访问。请参阅Home Assistant 配置。
组件/集线器
Section titled “组件/集线器”ezo_pmp: id: ezo_pmp address: 103 # Default Address for the EZO-PMP. update_interval: 60s- id (Required, ID): 指定泵的 ID,以便你可以控制它。
- address (Optional, int): 指定传感器的 I²C 地址。默认为 103。
- update_interval (Optional, Time): 检查传感器的间隔。默认为
60s。
由于 EZO-PMP 提供大量的传感器,并且每个传感器都需要单独轮询,因此代码已被 优化为不更新配置中未定义的传感器。如果你需要泵的非常快速的更新(低于 3 秒), 只启用你实际需要的传感器。
current_volume_dosed
Section titled “current_volume_dosed”此传感器指示在当前运行的或最后运行的加药命令中所投加的体积(以毫升为单位)。
sensor: - platform: ezo_pmp current_volume_dosed: id: current_volume_dosed name: Current Volume Dosedtotal_volume_dosed
Section titled “total_volume_dosed”此传感器指示自上次泵开启以来已投加的总体积(以毫升为单位)。如果泵曾反向运行,则可能为负数。
sensor: - platform: ezo_pmp total_volume_dosed: id: total_volume_dosed name: Total Volume Dosedabsolute_total_volume_dosed
Section titled “absolute_total_volume_dosed”此传感器指示自上次泵开启以来已投加的绝对总体积(以毫升为单位)。
sensor: - platform: ezo_pmp absolute_total_volume_dosed: id: absolute_total_volume_dosed name: Absolute Total Volume Dosedlast_volume_requested
Section titled “last_volume_requested”指示正在由加药操作投加的总体积(以毫升为单位)(如果泵已经完成则指示已投加的)。当 使用具有持续时间的加药操作时,传感器将对总体积进行正确的计算。
sensor: - platform: ezo_pmp last_volume_requested: id: last_volume_requested name: Last Volume Requestedmax_flow_rate
Section titled “max_flow_rate”泵提供它自己计算的它可以提供的最大流速(以毫升/分钟为单位)。超过此流量的加药请求
将失败。当使用连续加药操作时,这是泵每分钟
将投加的体积。此值在泵校准后会更新(参见ezo_pmp.set_calibration_volume 操作)。
sensor: - platform: ezo_pmp max_flow_rate: id: max_flow_rate name: Max Flow Ratepump_voltage
Section titled “pump_voltage”为泵供电的电源当前的电压。不要与为泵上电子设备供电的电压混淆。
sensor: - platform: ezo_pmp pump_voltage: id: pump_voltage name: Pump Voltage- 来自传感器的所有选项。
二进制传感器
Section titled “二进制传感器”pump_state
Section titled “pump_state”指示泵当前是否正在运行。
binary_sensor: - platform: ezo_pmp pump_state: id: pump_state name: Pump State- 来自二进制传感器的所有选项。
is_paused
Section titled “is_paused”指示加药操作当前是否处于暂停状态。
binary_sensor: - platform: ezo_pmp is_paused: id: is_paused name: Is Paused- 来自二进制传感器的所有选项。
dosing_mode
Section titled “dosing_mode”指示泵当前运行的加药模式。可以是 Volume、Volume/Time、Constant Flow Rate、Continuous、None 中的任何一个。
text_sensor: - platform: ezo_pmp dosing_mode: id: dosing_mode name: Dosing Mode- 来自文本传感器的所有选项。
calibration_status
Section titled “calibration_status”指示泵的校准状态。可以是 Fixed Volume、Volume/Time、Fixed Volume & Volume/Time 或 Uncalibrated。
text_sensor: - platform: ezo_pmp calibration_status: id: calibration_status name: Calibration Status- 来自文本传感器的所有选项。
ezo_pmp.dose_continuously 操作
Section titled “ezo_pmp.dose_continuously 操作”在自动化中使用此操作,使蠕动泵以最大流速连续加药。泵将在连续模式下运行 20 天后自动停止。
on_...: then: - ezo_pmp.find: id: ezo_pmp- id (Required, ID): 泵的 ID。
ezo_pmp.dose_volume 操作
Section titled “ezo_pmp.dose_volume 操作”在自动化中使用此操作,使蠕动泵以最大流速投加特定体积(以毫升为单位)。如果体积为负数,泵将反向运行。
on_...: then: - ezo_pmp.dose_volume: id: ezo_pmp volume: 10
# Templated - ezo_pmp.dose_volume: id: ezo_pmp volume: !lambda |- return id(some_volume_sensor).state;- id (Required, ID): 泵的 ID。
- volume (Required, float, templatable): 要投加的体积(以毫升为单位)。如果为负数,泵将反向运行。
ezo_pmp.dose_volume_over_time 操作
Section titled “ezo_pmp.dose_volume_over_time 操作”在自动化中使用此操作,使蠕动泵在提供的 duration(以分钟为单位)内投加特定 volume(以毫升为单位)。在时间段结束时,泵将已投加指定的 volume。如果体积为负数,泵将反向运行。
on_...: then: - ezo_pmp.dose_volume_over_time: id: ezo_pmp volume: 23.4 duration: 2
# Templated - 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 (Required, ID): 泵的 ID。
- volume (Required, float, templatable): 要投加的体积(以毫升为单位)。如果为负数,泵将反向运行。
- duration (Required, int, templatable): 泵投加请求体积所需的时间(以分钟为单位)。
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
# Templated - 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 (Required, ID): 泵的 ID。
- volume_per_minute (Required, float, templatable): 每分钟要投加的体积(以毫升为单位)。如果为负数,泵将反向运行。
- duration (Required, int, templatable): 泵每分钟投加请求体积的时间(以分钟为单位)。
ezo_pmp.pause_dosing 操作
Section titled “ezo_pmp.pause_dosing 操作”使用此操作暂停之前发出的加药命令。要确定加药是否暂停,你可以使用是否暂停传感器。如果泵当前处于暂停状态,则再次发出此操作将取消暂停。
on_...: then: - ezo_pmp.pause_dosing: id: ezo_pmp- id (Required, ID): 泵的 ID。
ezo_pmp.stop_dosing 操作
Section titled “ezo_pmp.stop_dosing 操作”使用此操作停止当前的加药命令。
on_...: then: - ezo_pmp.stop_dosing: id: ezo_pmp- id (Required, ID): 泵的 ID。
ezo_pmp.clear_total_volume_dosed 操作
Section titled “ezo_pmp.clear_total_volume_dosed 操作”清除当前已投加体积、已投加总体积和绝对已投加总体积传感器的值。
on_...: then: - ezo_pmp.clear_total_volume_dosed: id: ezo_pmp- id (Required, ID): 泵的 ID。
ezo_pmp.set_calibration_volume 操作
Section titled “ezo_pmp.set_calibration_volume 操作”使用此操作校准蠕动泵。EZO-PMP 需要两种形式的校准:绝对体积和随时间变化的体积。你可以使用校准状态传感器检查校准状态。有关校准泵的操作流程,请检查数据手册。
on_...: then: - ezo_pmp.set_calibration_volume: id: ezo_pmp volume: 10.01
# Templated - ezo_pmp.set_calibration_volume: id: ezo_pmp volume: !lambda |- return id(some_volume_sensor).state;- id (Required, ID): 泵的 ID。
- volume (Required, float, templatable): 在校准过程中测量到的体积。
ezo_pmp.clear_calibration 操作
Section titled “ezo_pmp.clear_calibration 操作”清除泵中存储的校准值。你可以使用校准状态传感器检查校准状态。
on_...: then: - ezo_pmp.clear_calibration: id: ezo_pmp- id (Required, ID): 泵的 ID。
ezo_pmp.find 操作
Section titled “ezo_pmp.find 操作”使用此操作使泵控制板上的 LED 闪烁一分钟。在 LED 闪烁期间,泵不会响应任何其他操作。
on_...: then: - ezo_pmp.find: id: ezo_pmp- id (Required, ID): 泵的 ID。
ezo_pmp.change_i2c_address 操作
Section titled “ezo_pmp.change_i2c_address 操作”将泵的 i2c 地址更改为提供的值。地址更改后,你必须上传带有更新后 I2C 地址的 ESPHome 固件新版本,泵才能工作。
on_...: then: - ezo_pmp.change_i2c_address: id: ezo_pmp address: 100- id (Required, ID): 泵的 ID。
- address (Required, int, templatable): 泵的新 I2C 地址。
Home Assistant 配置
Section titled “Home Assistant 配置”为了能够从 home assistant 前端控制泵,重要的是将操作暴露为具有 UI 渲染的组件。这可以使用 ESPHome 中的模板来实现。以下是一个使用 Template Button 和 Template Number 在一定时间内投加特定体积的示例。
i2c:
ezo_pmp: id: ezo_pmp
number: - platform: template id: volume name: "Volume" optimistic: true min_value: 0 max_value: 100 step: 0.01 - platform: template id: duration name: "Duration" optimistic: true min_value: 0 max_value: 100 step: 1
button: - platform: template name: "Dose Over Time" on_press: - ezo_pmp.dose_volume_over_time: id: ezo_pump volume: !lambda |- return id(volume).state; duration: !lambda |- return id(duration).state;lambda 调用
Section titled “lambda 调用”从 lambda 中,你也可以访问蠕动泵上的操作来做一些高级的事情(更多信息参见完整的 API 参考)。函数的名称与 YAML 配置中操作的名称相同。