Nextion 二进制传感器组件
nextion 二进制传感器平台支持 Nextion 中的许多开关组件以及整数变量(>0 == true)。它可以是 Nextion 显示器中的组件或变量。最好在 Nextion Editor 中将组件的 vscope 设置为 global。这样无论页面是否显示,组件都可用。
请参阅 Nextion 设置显示器
# 示例配置条目display: - platform: nextion id: nextion1 # ...
binary_sensor: - platform: nextion page_id: 0 component_id: 8 component_name: page0.mode # 仅用于支持更改颜色 id: mode - platform: nextion id: r0_binary_sensor name: "无线电 0 二进制传感器" component_name: page0.r0 # r0 是 Nextion Editor 第 0 页上的全局组件 update_interval: 4s - platform: nextion id: darkmode name: "暗色模式是否设置" variable_name: darkmode- nextion_id (可选, ID): Nextion 显示器的 ID。
- component_name (可选, 字符串): Nextion 组件的名称。
- variable_name (可选, 字符串): Nextion 变量的名称。任何大于
0的值被认为是开启 - page_id (可选, 字符串): 组件所在页面的 ID。默认页面使用
0。 - component_id (可选, 字符串): 要跟踪的组件的 ID(数字,不是名称!)。
- update_interval (可选, 时间): 更新传感器的持续时间。如果使用 Nextion 自定义二进制传感器协议 则不应使用
- background_color (可选, 颜色): 背景颜色
- foreground_color (可选, 颜色): 前景颜色
- visible (可选, 布尔值): 是否可见
- 所有其他选项来自 二进制传感器。
触摸传感器: 当为组件选中 Send Component ID 复选框时,Nextion 将发送 page_id 和 component_id。要启用此本机事件,需要 page_id 和 component_id。不需要 Nextion 自定义二进制传感器协议。如果设置了 page_id 和 component_id,则组件仅对来自 Nextion 的触摸事件做出反应。设置 component_name 将允许设置前景颜色等选项。
NOTE
background_color(s)、foreground_color(s) 和 visible 在页面更改时不会保留其状态。二进制传感器设置。可以使用发送当前页面的 Nextion 传感器 执行 API 调用 Update Components By Prefix 来更新该页面的所有组件
示例:
- platform: nextion id: current_page nextion_id: nextion1 name: current_page variable_name: current_page on_value: lambda: |- id(nextion1).update_components_by_page_prefix("page"+x+".");请参阅 更新方式 获取更多信息
Nextion 在页面更改时不会保留数据。此外,如果更改页面且该页面上不存在 nextion_component_name,则不会更新任何内容。要解决此问题,可以将 Nextion 组件更改为 vscope 为 global。如果设置此项,则 nextion_component_name 应以页面名称为前缀(page0/page1)。
示例: nextion_component_name: page0.r0
binary_sensor.nextion.publish 操作
Section titled “binary_sensor.nextion.publish 操作”您还可以使用 binary_sensor.nextion.publish 操作从 YAML 文件的其他位置向 Nextion 二进制传感器发布状态。
# 示例配置条目binary_sensor: - platform: nextion id: nextion_bsensor ...# 在某个触发器中on_...: - binary_sensor.nextion.publish: id: nextion_bsensor state: true # 这些是可选的。默认为 true。 publish_state: true send_to_nextion: true # 模板化 - binary_sensor.nextion.publish: id: nextion_bsensor state: !lambda 'return true;' # 这些是可选的。默认为 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 调用
Section titled “Lambda 调用”从 lambda 中,您可以调用多个方法来访问一些更高级的功能(请参阅完整的 API Reference: nextion_binarysensor.h 了解更多信息)。
set_state(bool value, bool publish, bool send_to_nextion): 将状态设置为 value。向 HASS 发布新状态。Send_to_Nextion 是向 Nextion 发布状态。
update(): 从 Nextion 轮询
set_background_color(Color color): 将背景颜色设置为 Colorset_background_pressed_color(Color color): 将背景颜色设置为 Colorset_foreground_color(Color color): 将背景颜色设置为 Colorset_foreground_pressed_color(Color color): 将背景颜色设置为 Colorset_visible(bool visible): 设置是否可见。如果设置为 false,将不会向组件发送更新
如果设置了 update_interval,具有整数值 (.val) 或 Nextion 变量的 Nextion 组件将自动轮询。要让 Nextion 发送数据,您可以为此使用 Nextion 自定义二进制传感器协议。将 Nextion 自定义二进制传感器协议 添加到要触发发送的组件或函数。通常这在 Touch Press Event 中,但某些组件(如滑块)应在 Touch Release Event 中设置以捕获所有更改。由于这是自定义协议,可以从 Nextion 中的任何位置(定时器/函数/组件)发送。
NOTE
对于整数值组件,不需要在 Touch Press Event 或 Touch Release Event 中选中 Send Component ID,因为这将向 esphome 发送真实值,但确保为触摸传感器选中两者。
使用上面的 yaml 示例:
-
“mode” 是触摸传感器,当用户按下第
0页 ID 为8的组件时将触发 -
“无线电 0 二进制传感器” 将轮询 Nextion 获取
r0.val值并相应设置状态。 -
“暗色模式是否设置” 不会轮询 Nextion。Nextion 需要使用 Nextion 自定义二进制传感器协议 或使用 lambda:
NOTE
如果 Nextion 处于睡眠状态,将不会向其发送更新。一旦它唤醒,组件将被更新。如果组件不可见,visible(false),则在设置为可见之前不会更新。
Nextion 自定义二进制传感器协议
Section titled “Nextion 自定义二进制传感器协议”所有行都是必需的
printh 93prints "r0",0printh 00prints r0.val,0printh FF FF FFprinth 93: 告诉库这是二进制传感器布尔/整数数据prints "r0",0: 发送与 nextion_component_name 或 nextion_variable_name 匹配的名称printh 00: 发送 NULLprints r0.val,0: 要发送的实际值。对于变量使用不带.val的 Nextion 变量名r0printh FF FF FF: Nextion 命令确认