跳转到内容

PVVX MiThermometer 显示

pvvx_mithermometer 显示平台允许你将运行 pvvx 的 ATC_MiThermometer 固件 的设备作为显示驱动配合 ESPHome 使用。

小米 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): Time 的 ID。如果设置,时间将在每次连接时同步。

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

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

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

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

  • auto_clear_enabled (可选, boolean): 是否在每次 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 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();
}

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