Bang Bang 温控器
bang_bang 温控平台允许您使用 bang-bang 控制器(也称为滞回控制器)来调节某个值。
NOTE
thermostat 组件的行为更像普通温控器;它本质上是两个 bang-bang 控制器合二为一。如果您不确定哪个更适合您的应用,请参阅下面的 Bang-bang 与温控器对比 部分。
bang-bang 控制器的工作原理非常简单。首先,您指定一个可观测值(例如房间温度)。控制器将尝试使此观测值保持在定义的范围内。为此,控制器可以激活如加热单元等设备来改变观测值。
控制器将尝试使观测值保持在的范围内可以通过前端的 target_temperature_low 和 target_temperature_high 值来控制(见下面的截图)。一旦观测温度低于或高于此范围,它将激活定义的动作之一:cool_action、heat_action 和 idle_action。
此平台可以表示三种类型的 bang-bang 控制器:
-
加热器:用于只能增加观测温度的设备。
- 一旦温度低于较低目标温度,将调用
heat_action。 - 当温度高于较高温度时,将调用
idle_action。 - 如果您更改操作模式(手动模式),并且温度处于高低温度之间,它不会等待达到低温度,而是开始工作直到达到高温度。
- 一旦温度低于较低目标温度,将调用
-
制冷器:用于只能降低观测温度的设备。
- 一旦温度高于较高目标温度,将调用
cool_action。 - 当温度低于较低温度时,将调用
idle_action。 - 如果您更改操作模式(手动模式),并且温度处于高低温度之间,它不会等待达到高温度,而是开始工作直到达到低温度。
- 一旦温度高于较高目标温度,将调用
-
加热器+制冷器:用于温度可以主动升高和降低的设备。
- 当当前温度低于较低目标温度时,调用
heat_action。 - 当当前温度处于目标温度范围内时,调用
idle_action。 - 当当前温度高于较高目标温度时,调用
cool_action。
- 当当前温度低于较低目标温度时,调用
请注意,只有当当前温度离开目标温度范围时才会调用动作。
# 示例配置条目climate: - platform: bang_bang name: "Bang Bang Climate Controller" sensor: my_temperature_sensor default_target_temperature_low: 20 °C default_target_temperature_high: 22 °C
heat_action: - switch.turn_on: heater idle_action: - switch.turn_off: heater-
sensor (必填, ID): 用于测量当前温度的传感器。
-
humidity_sensor (可选, ID): 如果指定,此传感器用于测量当前湿度。这仅用于信息显示,不影响温度控制。
-
default_target_temperature_low (必填, float): 控制算法的默认较低目标温度。稍后可以在前端动态设置。
-
default_target_temperature_high (必填, float): 控制算法的默认较高目标温度。稍后可以在前端动态设置。
-
idle_action (必填, 动作): 当温控设备想要进入空闲模式时调用的动作。
-
heat_action (可选, 动作): 当温控设备想要进入加热模式并增加当前温度时调用的动作。
heat_action和cool_action中至少必须指定一个。 -
cool_action (可选, 动作): 当温控设备想要进入制冷模式并降低当前温度时调用的动作。
-
Climate 的所有其他选项。
高级选项:
-
away_config (可选): 另外指定离家模式的目标温度范围设置。离家模式可用于设置第二组目标温度(例如用户外出或夜间时)
-
default_target_temperature_low (必填, float): 离家模式下控制算法的默认较低目标温度。
-
default_target_temperature_high (必填, float): 离家模式下控制算法的默认较高目标温度。
-
NOTE
虽然此平台在各处都使用温度一词,但它也可以用于其他值。例如,使用此平台控制湿度也是可能的。
Bang-bang 与温控器对比
Section titled “Bang-bang 与温控器对比”bang-bang 控制器的行为是 ESPHome Discord 服务器上无数次出现的话题——许多人对它的作用感到困惑。虽然它们相似,但 bang-bang 组件和 thermostat 组件之间有两个关键区别:
- 动作何时触发
- 控制器如何使用设定点
现在是确保您准确理解 bang-bang 控制器应该如何行为的好时机;如果您对此没有清晰的理解,请务必查阅 维基百科文章。
双功能系统的问题
Section titled “双功能系统的问题”如果您不是尝试操作一个既可加热又可制冷的系统,您可能想跳到下一节关于用户界面的内容。
如上所述,一般来说:
- 一旦温度低于较低目标温度,调用
heat_action激活加热。 - 加热将持续直到温度达到较高目标温度,此时调用
idle_action停止加热。 - 一旦温度高于较高目标温度,调用
cool_action激活制冷。 - 制冷将持续直到温度达到较低目标温度,此时调用
idle_action停止制冷。
单个 bang-bang 控制器可能适用于仅加热或仅制冷的系统;然而,当应用于既可加热又可制冷的系统时,它开始出现问题。这仅仅是因为两个动作都与两个设定点相关联——也就是说,停止加热的点也是开始制冷的点。反之亦然:停止制冷的点也是开始加热的点。让我们看一个例子:
考虑一个既可加热又可制冷的系统。target_temperature_low 设定点为 20 °C,而 target_temperature_high 设定点为 22 °C。传感器报告温度为 19.75 °C,因此控制器调用 heat_action 激活加热。加热持续直到温度达到 target_temperature_high(本例中为 22 °C)。达到此温度后,调用 idle_action 停止加热。然而,如果温度甚至只是略微超过 target_temperature_high ——哪怕只是几分之一度持续几分之一秒——控制器就会调用 cool_action 开始制冷。现在,制冷将持续直到再次达到 target_temperature_low,但与之前一样,如果温度甚至只是略微低于 target_temperature_low 几分之一秒,heat_action 将再次被调用,循环将重复。它将在两个设定点之间”来回切换”,可能永远持续下去。在滞回窗口的”边缘”振荡,或向任一方向超过设定点,是应该预期的;例如,考虑一个达到设定点后关闭的加热器。加热元件将保持高温(可能持续相当长的时间),因此将继续加热空气,直到元件完全冷却到与周围空气/室温匹配。
thermostat 组件的不同之处在于每个设定点周围都有滞回。例如,如果 target_temperature_low 设定点为 20 °C,使用(默认)滞回值 0.5 °C,则在温度 19.5 °C 时调用 heat_action,在 20.5 °C 时调用 idle_action。如果制冷,由 target_temperature_high 定义为 22 °C,则在 22.5 °C 时调用 cool_action,在 21.5 °C 时调用 idle_action。同样,它本质上是两个 bang-bang 控制器合二为一。
除行为差异外,这两个组件之间还有另一个重要区别:用户界面。
通过 Home Assistant 用户界面与此组件的交互也与大多数普通家用温控器上看到的不同。一般来说,大多数温控器允许一个或两个设定点——其中一个与加热相关,另一个与制冷相关,这正是 thermostat 组件使用它们的方式。如果您将”加热”设定点设置为 20 °C,大多数人认为这意味着加热系统将使温度尽可能接近 20 °C。较高的设定点用于制冷也是一样:如果您设置温度为 22 °C,大多数人认为制冷系统将使温度尽可能接近 22 °C。
bang-bang 控制器不这样使用设定点。如果您将较低设定点设置为 20 °C,将较高设定点设置为 22 °C,那么温度将被提高到 22 °C,但不会低于 20 °C。
这种行为并不难理解,但正如我们从 Discord 服务器上的许多讨论中所了解到的,它与大多数人似乎期望的不同。
哪个适合我?
Section titled “哪个适合我?”归结为两点:
-
如果您有双功能系统(既可加热又可制冷),您几乎肯定想使用 thermostat 组件。
-
如果您有单功能系统,并且有特定需求或愿望手动控制滞回的上下限,请使用 bang-bang 控制器。
在所有其他情况下,thermostat 组件可能是最好的选择。