跳转到内容

Nextion 传感器组件

nextion 传感器平台支持整数或浮点数(Xfloat)。它可以是 Nextion 显示屏中的组件、变量或波形。 最好在 Nextion Editor 中将组件的 vscope 设置为 global。这样无论页面是否显示,组件都可用。

NOTE

Nextion 可以接收整数,但只能发送 3 个字节的负整数。如果使用 Nextion 自定义传感器协议,范围为: -16777215 到 4294967295

设置显示屏请参阅 Nextion

# 示例配置条目
display:
- platform: nextion
id: nextion1
# ...
sensor:
- platform: nextion
name: "当前湿度"
component_name: humidity # pageX.humidity 表示全局变量
precision: 1
update_interval: 4s
- platform: nextion
nextion_id: nextion1
name: "当前温度"
variable_name: temperature
- platform: nextion
id: s01
component_id: 2
wave_channel_id: 0
wave_max_value: 100
waveform_send_last_value: "true"
wave_max_length: 400
update_interval: 1s
- platform: nextion
id: s02
component_id: 2
wave_channel_id: 1
wave_max_value: 100
update_interval: 1s
  • nextion_id (可选, ID): 手动指定 Nextion 显示屏的 ID。

  • component_name (可选, 字符串): 手动指定 Nextion 组件的名称。

  • variable_name (可选, 字符串): 手动指定 Nextion 变量的名称。

  • update_interval (可选, 时间): 更新传感器的时间间隔

  • precision (可选, 整数): 用于 Nextion 浮点组件。设置组件的精度。通常这是组件的 vvs1 设置。

  • background_color (可选, 颜色): 背景颜色

  • foreground_color (可选, 颜色): 前景颜色

  • visible (可选, 布尔值): 是否可见

  • wave_channel_id (可选, 整数): 波形 ID,范围为 0-3

  • wave_max_value (可选, 整数): 最大值。将 dis 设置为 Nextion 编辑器中组件的高度, 将此项设置为将发送的最大值。这将设置正确的比例。

  • waveform_send_last_value (可选, 整数): 这将在更新间隔期间发送最后设置的值。设置为 true 将生成时间序列风格的图表

  • wave_max_length (可选, 整数): 要存储的数据点数量。通常这是 Nextion 中组件的宽度

  • update_interval (可选, 时间): 更新传感器的时间间隔。通常应为波形设置此项以发送定期更新。

  • 来自 传感器 的所有其他选项。

只能设置 component_name variable_name 其中之一

NOTE

background_colorforeground_colorvisible 在页面更改时不会保留其状态。传感器设置。 可以使用发送当前页面的 Nextion 传感器 配合自定义协议来执行 API 调用 按前缀更新组件 以更新该页面的所有组件

有关更多信息,请参阅 更新机制

Nextion 在页面更改时不会保留数据。此外,如果更改页面并且该页面上不存在 component_name,则不会更新任何内容。 要解决此问题,可以将 Nextion 组件的 vscope 更改为 global。如果设置了此项,则 component_name 应以页面名称为前缀(page0/page1 或您更改的任何名称)。

示例: component_name: page0.humidity

您还可以使用 sensor.nextion.publish 动作从 YAML 文件的其他位置向 Nextion 传感器发布状态。

# 示例配置条目
sensor:
- platform: nextion
id: nextion_sensor
...
# 在某个触发器中
on_...:
- sensor.nextion.publish:
id: nextion_sensor
state: 100.0
# 这些是可选的。默认为 true。
publish_state: true
send_to_nextion: true
# 使用模板
- sensor.nextion.publish:
id: nextion_sensor
state: !lambda 'return 100.0;'
# 这些是可选的。默认为 true。
publish_state: true
send_to_nextion: true

配置变量:

  • id (必需, ID): Nextion 传感器的 ID。

  • state (必需, 字符串, 可模板化): 要发布的浮点状态。

  • publish_state (可选, 布尔值, 可模板化): 向 Home Assistant 发布新状态。 默认为 true。

  • send_to_nextion (可选, 布尔值, 可模板化): 向 Nextion 显示屏发布新状态 以更新组件。默认为 true。

NOTE

此动作也可以用 lambda 编写。请参阅 Lambda 调用

lambda 中,您可以调用多个方法来访问一些更高级的功能 (有关更多信息,请参阅完整的 API Reference: nextion_sensor.h)。

  • set_state(bool value, bool publish, bool send_to_nextion) : 将状态设置为 value。向 HASS 发布新状态。Send_to_Nextion 用于向 Nextion 发布状态。
  • update() : 从 Nextion 轮询
  • set_background_color(Color color) : 将背景颜色设置为 Color
  • set_foreground_color(Color color) : 将背景颜色设置为 Color
  • set_visible(bool visible) : 设置是否可见。如果设置为 false,则不会向组件发送更新

如果设置了 update_interval,具有整数值(.val)的 Nextion 组件或 Nextion 变量将被自动轮询。 要让 Nextion 发送数据,您可以为此使用 Nextion 自定义传感器协议。将 Nextion 自定义传感器协议 添加到 要触发发送的组件或函数。通常这在 Touch Press Event 中,但某些组件(如滑块)应在 Touch Release Event 中设置 以捕获所有更改。由于这是自定义协议,它可以从 Nextion 的任何位置(定时器/函数/组件)发送。

NOTE

不需要为 Touch Press EventTouch Release Event 检查 Send Component ID, 因为这将发送真实值给 esphome。

使用上面的 yaml 示例:

  • “当前湿度” 将轮询 Nextion 获取 humidity.val 值并相应地设置传感器。

  • “当前温度” 不会轮询 Nextion。Nextion 需要使用 Nextion 自定义传感器协议 或使用 lambda:

  • Lambda 调用

NOTE

如果 Nextion 处于睡眠状态,则不会向其发送更新。一旦唤醒,组件将被更新。如果组件不可见,visible(false),则在设置为可见之前不会更新。

所有行都是必需的

printh 91
prints "temperature",0
printh 00
prints temperature.val,0
printh FF FF FF
  • printh 91 告诉库这是传感器(整数)数据
  • prints "temperature",0 发送与 component_namevariable_name 匹配的名称
  • printh 00 发送 NULL
  • prints temperature.val,0 要发送的实际值。对于变量,使用不带 .val 的 Nextion 变量名 temperature
  • printh FF FF FF Nextion 命令确认