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 (可选, Time): BLE 连接在再次断开前维持的时间量。默认为
5s。 -
update_interval (可选, Time): 传输显示数据的间隔。默认为
60s。 -
validity_period (可选, Time): pvvx 设备应显示信息的时间段。默认为
5min。 -
auto_clear_enabled (可选, boolean): 是否在每次 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 Temperature" humidity: name: "PVVX Humidity" battery_level: name: "PVVX Battery-Level" battery_voltage: name: "PVVX Battery-Voltage"- platform: xiaomi_hhccjcy01 mac_address: XX:XX:XX:XX:XX:XX temperature: name: "Xiaomi HHCCJCY01 Temperature" id: miflora_temperature moisture: name: "Xiaomi HHCCJCY01 Moisture" id: miflora_moisture illuminance: name: "Xiaomi HHCCJCY01 Illuminance" conductivity: name: "Xiaomi HHCCJCY01 Soil Conductivity"
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 Temperature" humidity: name: "PVVX Humidity" battery_level: name: "PVVX Battery-Level" battery_voltage: name: "PVVX Battery-Voltage"
display:- platform: pvvx_mithermometer ble_client_id: pvvx_ble_display update_interval: 24h validity_period: 0s time_id: homeassistant_time