PVVX MiThermometer 显示屏
pvvx_mithermometer 显示平台允许您将运行 pvvx 开发的 ATC_MiThermometer 固件 的设备作为显示屏驱动器与 ESPHome 一起使用。
要显示的数据通过 BLE 作为外部数据传输。
为此,必须设置一个 ble_client 组件。
此组件还可以通过在每次连接时传输时间戳来同步 pvvx 设备的时间。
数据传输完成后,BLE 连接将被终止,以便能够接收 pvvx_mithermometer 传感器平台所需的广播数据。
pvvx 固件会定期刷新屏幕(可以在固件配置中设置为最小 LCD 刷新率)。
默认情况下,内部传感器数据和外部数据(如果可用且有效(validity_period))每 2.5 秒切换一次。
进一步的固件配置可以激活其他显示模式,如时间和电池状态。
可以使用 TelinkMiFlasher.html 通过浏览器更改固件配置。
# 配置示例esp32_ble_tracker:
ble_client:- mac_address: XX:XX:XX:XX:XX:XX id: pvvx_ble_display
display:- platform: pvvx_mithermometer ble_client_id: pvvx_ble_display lambda: |- it.print_bignum(23.1); it.print_unit(pvvx_mithermometer::UNIT_DEG_C); it.print_smallnum(33); it.print_percent(true); it.print_happy(true); it.print_bracket(true);-
ble_client_id (**必填”, ID):关联的 BLE 客户端的 ID。
-
disconnect_delay (可选, 时间):BLE 连接在断开之前保持的时间量。默认为
5s。 -
update_interval (可选, 时间):传输显示数据的间隔。默认为
60s。 -
validity_period (可选, 时间):pvvx 设备应显示信息的时间段。默认为
5min。 -
auto_clear_enabled (可选, 布尔值):是否在每次 lambda 调用之前自动清除显示数据, 或保留现有显示内容(必须显式覆盖,例如仅在数据更改时)。如果配置了 lambda 或页面,默认为
true,否则为 false。 -
id (可选, ID):手动指定用于代码生成的 ID。
渲染 Lambda
Section titled “渲染 Lambda”pvvx_mithermometer 显示屏只能显示两个带有可选单位和笑脸的数字。因此,API 是针对这些限制定制的。
在 lambda 中,与其他所有显示屏一样,您会收到一个名为 it 的变量。在这种情况下,it 是一个 PVVXDisplay 实例(请参阅 API 参考)。
display: - platform: pvvx_mithermometer # ... lambda: |- // 将 -2.1 打印为大数字(第一行) it.print_bignum(-2.1); // 在大数字旁边打印 °C it.print_unit(pvvx_mithermometer::UNIT_DEG_C); // 将 88 打印为小数字(第二行) it.print_smallnum(88); // 在小数字旁边打印 % it.print_percent(true); // 打印低电量符号 it.print_battery(true);
// 打印开心笑脸。结果为 " ^_^ " it.print_happy(true); // 打印难过笑脸。结果为 " -∧- " it.print_sad(true); // 开心和难过笑脸的组合结果为 " Δ△Δ "
// 在笑脸周围打印圆括号 it.print_bracket(true); // 最终结果为 "(Δ△Δ)"大数字(it.print_bignum())的有效值为 -99.5 到 1999.5。较小的值显示为 Lo,较大的值显示为 Hi。它将被打印到屏幕上。如果未定义,将显示 0。
小数字(it.print_smallnum())的有效值为 -9 到 99。较小的值显示为 Lo,较大的值显示为 Hi。如果未定义,将显示 0。
大数字单位(it.print_unit())的可能值为:
pvvx_mithermometer::UNIT_NONE:不显示单位pvvx_mithermometer::UNIT_DEG_GHE:显示°Гpvvx_mithermometer::UNIT_MINUS:显示-pvvx_mithermometer::UNIT_DEG_F:显示°Fpvvx_mithermometer::UNIT_LOWDASH:显示_pvvx_mithermometer::UNIT_DEG_C:显示°Cpvvx_mithermometer::UNIT_LINES:显示=pvvx_mithermometer::UNIT_DEG_E:显示°E
笑脸的外观可以通过组合函数 it.print_happy()、it.print_sad() 和 it.print_bracket(true) 来定义:
print_bracket() | print_sad() | print_happy() | 结果 |
|---|---|---|---|
| false | false | false | |
| false | false | true | ^_^ |
| false | true | false | -∧- |
| false | true | true | Δ△Δ |
| true | false | false | ( ) |
| true | false | true | (^_^) |
| true | true | false | (-∧-) |
| true | true | true | (Δ△Δ) |
显示其他传感器的状态
Section titled “显示其他传感器的状态”以下示例在 pvvx 显示屏上显示 MiFlora 传感器的传感器状态。时间也会同步。
time: - platform: homeassistant id: homeassistant_time
esp32_ble_tracker:
ble_client:- mac_address: XX:XX:XX:XX:XX:XX id: pvvx_ble_display
sensor:- platform: pvvx_mithermometer mac_address: XX:XX:XX:XX:XX:XX temperature: name: "PVVX 温度" humidity: name: "PVVX 湿度" battery_level: name: "PVVX 电池电量" battery_voltage: name: "PVVX 电池电压"- platform: xiaomi_hhccjcy01 mac_address: XX:XX:XX:XX:XX:XX temperature: name: "Xiaomi HHCCJCY01 温度" id: miflora_temperature moisture: name: "Xiaomi HHCCJCY01 湿度" id: miflora_moisture illuminance: name: "Xiaomi HHCCJCY01 光照" conductivity: name: "Xiaomi HHCCJCY01 土壤电导率"
display:- platform: pvvx_mithermometer ble_client_id: pvvx_ble_display update_interval: 10min validity_period: 15min time_id: homeassistant_time lambda: |- double temp = id(miflora_temperature).state; double moisture = id(miflora_moisture).state; it.print_bignum(temp); it.print_unit(pvvx_mithermometer::UNIT_DEG_C); it.print_smallnum(moisture); it.print_percent(); if (temp < 5 || temp > 30 || moisture < 10 || moisture > 50) { it.print_sad(); } else { it.print_happy(); }每天仅同步一次时间
Section titled “每天仅同步一次时间”以下示例将每天同步一次 pvvx 设备的时间。
time: - platform: homeassistant id: homeassistant_time
esp32_ble_tracker:
ble_client:- mac_address: XX:XX:XX:XX:XX:XX id: pvvx_ble_display
sensor:- platform: pvvx_mithermometer mac_address: XX:XX:XX:XX:XX:XX temperature: name: "PVVX 温度" humidity: name: "PVVX 湿度" battery_level: name: "PVVX 电池电量" battery_voltage: name: "PVVX 电池电压"
display:- platform: pvvx_mithermometer ble_client_id: pvvx_ble_display update_interval: 24h validity_period: 0s time_id: homeassistant_time