跳转到内容

PVVX MiThermometer 显示屏

pvvx_mithermometer 显示平台允许您将运行 pvvx 开发的 ATC_MiThermometer 固件 的设备作为显示屏驱动器与 ESPHome 一起使用。

Xiaomi LYWSD03MMC。

要显示的数据通过 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。

  • time_id (可选, ID):时间组件的 ID。如果设置,每次连接时都会同步时间。

  • disconnect_delay (可选, 时间):BLE 连接在断开之前保持的时间量。默认为 5s

  • update_interval (可选, 时间):传输显示数据的间隔。默认为 60s

  • validity_period (可选, 时间):pvvx 设备应显示信息的时间段。默认为 5min

  • lambda (可选, lambda):用于定义要显示的信息的 lambda。 详见渲染 Lambda

  • auto_clear_enabled (可选, 布尔值):是否在每次 lambda 调用之前自动清除显示数据, 或保留现有显示内容(必须显式覆盖,例如仅在数据更改时)。如果配置了 lambda 或页面,默认为 true,否则为 false。

  • id (可选, ID):手动指定用于代码生成的 ID。

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:显示 °F
  • pvvx_mithermometer::UNIT_LOWDASH:显示 _
  • pvvx_mithermometer::UNIT_DEG_C:显示 °C
  • pvvx_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()结果
falsefalsefalse
falsefalsetrue^_^
falsetruefalse-∧-
falsetruetrueΔ△Δ
truefalsefalse( )
truefalsetrue(^_^)
truetruefalse(-∧-)
truetruetrue(Δ△Δ)

以下示例在 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();
}

以下示例将每天同步一次 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