VBus 组件
VBus 组件通过 VBus 协议为太阳能集热器控制器提供状态读取连接。这些设备主要由 Resol 生产,也经常以 Viessmann、Kioto、Wagner 等不同品牌名称出现。该组件当前原生支持下表中的型号
,但任何设备都可以通过 lambda 添加,只需知道 其数据包结构。
下表显示当前支持的 Vbus 设备型号。
| 名称 | 配置值 | 十六进制地址 | 备注 |
|---|---|---|---|
| DeltaSol BS Plus | deltasol_bs_plus | 4221 | |
| DeltaSol BS 2009 | deltasol_bs_2009 | 427B | DeltaSol BS Plus V2 |
| DeltaSol BS/2 (DrainBack) | deltasol_bs2 | 4278 | |
| Dux H3214 | deltasol_bs_2009 | 427B | 泵 2 不支持 |
| DeltaSol C | deltasol_c | 4212 | |
| DeltaSol CS2 | deltasol_cs2 | 1121 | |
| DeltaSol CS4 | deltasol_cs4 | 1122 | Citrin Solar CS 1.3 |
| DeltaSol CS Plus | deltasol_cs_plus | 2211 |
Config Value 应用于 sensor 和 binary_sensor 条目中的 model 参数。
Hex Address 字段是设备在消息的 from 字段中发送的值。要识别未知
型号,将 logger 级别设置为 VERBOSE 并在日志输出中查找类似以下的行:
[10:53:48][V][vbus:068]: P1 C0500 427b->0000: 0000 0000 (0)
-> 符号前的值就是设备源地址。如果它与上表中的某个条目匹配
那么该型号应该与你的设备兼容。
设备必须通过仅支持接收线的 UART 总线 连接。UART 总线 必须与模块相同的速率配置,默认值为 9600bps。控制器每秒输出一次数据。
要连接到总线并读取数据需要进行电平转换,因为电压约为 8V(直接连接 会损坏 MCU)。对于我们的只读目的, 使用如下电路将电平适当调整到 3.3V 就足够了:
使用光耦合器的电气隔离版本:
另一种方法,带有可制造的 PCB 设计 可以在这里找到。
WARNING
不要将你的模块的 GND 引脚与 Resol 设备的接地连接,因为这可能会损坏其输出端口。 设备的输出是对称的,意味着信号不是相对于地,而是 两个导线之间的差分信号。然而,MCU 相对于地引用信号,因此这两个 地线不应当互相连接,正如上面所示的电路一样。
# 示例配置条目vbus: uart_id: resolWARNING
如果你使用了 Logger,请确保不要使用相同的引脚,否则请使用 baud_rate: 0 选项禁用 UART
日志记录。
- uart_id (可选, ID): 手动指定用于连接设备的 UART 中心的 ID。
NOTE
传感器的功能取决于设备类型及其控制的水力 系统的方案配置。实际的配置编号可以从设备设置中确定。请 查阅用户手册并评估你的方案以确定每个传感器的功能,并相应地 命名它们。
# 示例配置条目sensor: - platform: vbus model: deltasol_bs_plus temperature_1: name: Temperature 1 temperature_2: name: Temperature 2 temperature_3: name: Temperature 3 temperature_4: name: Temperature 4 pump_speed_1: name: Pump Speed 1 pump_speed_2: name: Pump Speed 2 operating_hours_1: name: Operating Hours 1 operating_hours_2: name: Operating Hours 2 heat_quantity: name: Heat Quantity time: name: Device Time version: name: Device firmware version- model (必选): 指定连接控制器的型号。选择上面支持型号表中列出的配置值之一。
支持的传感器:
- 对于 deltasol_bs_plus 和 deltasol_bs_2009:
temperature_1、temperature_2、temperature_3、temperature_4、pump_speed_1、pump_speed_2、operating_hours_1、operating_hours_2、heat_quantity、time、version。 - 对于 deltasol_bs2:
temperature_1、temperature_2、temperature_3、temperature_4、pump_speed_1、pump_speed_2、operating_hours_1、operating_hours_2、heat_quantity、version。 - 对于 deltasol_c:
temperature_1、temperature_2、temperature_3、temperature_4、pump_speed_1、pump_speed_2、operating_hours_1、operating_hours_2、heat_quantity、time。 - 对于 deltasol_cs2:
temperature_1、temperature_2、temperature_3、temperature_4、pump_speed、operating_hours、heat_quantity、version。 - 对于 deltasol_cs4:
temperature_1、temperature_2、temperature_3、temperature_4、temperature_5、pump_speed_1、pump_speed_2、operating_hours_1、operating_hours_2、heat_quantity、time、version、flow_rate。 - 对于 deltasol_cs_plus:
temperature_1、temperature_2、temperature_3、temperature_4、temperature_5、pump_speed_1、pump_speed_2、operating_hours_1、operating_hours_2、heat_quantity、time、version、flow_rate。
所有传感器均为 可选,并支持 Sensor 的所有其他选项。
NOTE
每次设备发送数据包时传感器都会更新。某些型号发送数据的频率很高,可能每秒一次。如果你
担心接收数据库的负载,可以为传感器添加 throttle 过滤器。
二进制传感器
Section titled “二进制传感器”# 示例配置条目binary_sensor: - platform: vbus model: deltasol_bs_plus relay1: name: Relay 1 On relay2: name: Relay 2 On sensor1_error: name: Sensor 1 Fault sensor2_error: name: Sensor 2 Fault sensor3_error: name: Sensor 3 Fault sensor4_error: name: Sensor 4 Fault collector_max: name: Option Collector Max collector_min: name: Option Collector Min collector_frost: name: Option Collector Frost tube_collector: name: Option Tube Collector recooling: name: Option Recooling hqm: name: Option Heat Quantity Measurement-
model (必选): 指定连接控制器的型号。选择上面支持型号表中列出的配置值之一。
支持的型号:
deltasol_bs_plus:relay1、relay2、sensor1_error、sensor2_error、sensor3_error、sensor4_error、collector_max、collector_min、collector_frost、tube_collector、recooling、hqm。deltasol_bs_2009:sensor1_error、sensor2_error、sensor3_error、sensor4_error、frost_protection_active。deltasol_bs2:sensor1_error、sensor2_error、sensor3_error、sensor4_error。deltasol_c:sensor1_error、sensor2_error、sensor3_error、sensor4_error。deltasol_cs2:sensor1_error、sensor2_error、sensor3_error、sensor4_error。deltasol_cs4:sensor1_error、sensor2_error、sensor3_error、sensor4_error。deltasol_cs_plus:sensor1_error、sensor2_error、sensor3_error、sensor4_error。custom:见下文。
所有二进制传感器均为 可选,并支持 Binary Sensor 的所有其他选项。
custom VBus 传感器
Section titled “custom VBus 传感器”VBus 上的设备由源地址标识。同一总线上可以有多个设备, 每种设备类型都有不同的地址。
sensor: - platform: vbus model: custom dest: 0x10 source: 0x1234 command: 0x100 sensors: - id: temp1 name: Temp 1 lambda: return ((x[1] << 8) + x[0]) / 10.0;-
dest (可选): 对应你设备的
DFA值(见下文)。 -
source (可选): 对应
your device model的地址(见下文)。 -
command (可选): 对应你设备的
command(见下文)。 -
sensors (可选): 一个 Sensor 定义列表,包含一个
lambda以进行解码并返回一个float值。 -
lambda (必选, lambda): 用于从传入数据包中解析值并返回它的代码。 数据包在一个名为
x的std::vector<uint8_t>中。
custom VBus 二进制传感器
Section titled “custom VBus 二进制传感器”-
dest (可选): 对应你设备的
DFA值(见下文)。 -
source (可选): 对应
your device model的地址(见下文)。 -
command (可选): 对应你设备的
command(见下文)。 -
binary_sensors (可选): 一个 Binary Sensor 定义列表,包含一个
lambda以进行解码并返回一个bool值。 -
lambda (必选, lambda): 用于从传入数据包中解析值并返回它的代码。 数据包在一个名为
x的std::vector<uint8_t>中。
要确定上述参数的正确值,请访问 数据包定义列表。在 Packets 表的搜索字段中,输入你的设备名称。
要用 lambda 提取值,请通过点击表中的 Bytes 链接查看数据包结构。每个值在数据包中的某个 offset 处放置。
对于 float 值,看看温度示例:值以 16 位值存储在 2 个字节的 little-endian 格式中。由于始终是第二个字节包含上字节,需要将其移位 8 位(乘以 256)(例如 0x34, 0x12 -> 0x1234)。结果需要乘以因子 0.1,以获得正确值:((x[1] << 8) + x[0]) * 0.1f)。方括号中的数字是 [offset]。
对于 binary 值,多个二进制值存储在通过掩码编码的单个数值中。要提取二进制值,只需在对应偏移处的值和表中显示的 mask 之间应用按位与运算符 &。
例如通过 lambda 解码 DeltaSol BS Plus 的一些传感器:
# 示例配置条目sensor: - platform: vbus model: custom dest: 0x10 source: 0x4221 command: 0x100 sensors: - id: scheme name: Arrangement scheme icon: mdi:pipe-wrench accuracy_decimals: 0 entity_category: diagnostic lambda: return x[14]; // 已配置的方案 - id: temp2 name: Temperature DHW state_class: measurement unit_of_measurement: "°C" lambda: return ((x[3] << 8) + x[2]) * 0.1f; // 温度 2
binary_sensor: - platform: vbus model: custom dest: 0x10 source: 0x4221 command: 0x100 binary_sensors: - name: Heat Quantity Measurement On id: bin_hqm icon: mdi:counter lambda: return x[15] & 0x20; // 启用热量测量选项