:TADA::TADA:版本3.4.0.:TADA::TADA:

新功能

  • 自动扩展组group_expand:true.这有助于您的实体或任何实体从triggers_update或者任何发现的实体是一个组,当子实体更新时,你也想更新卡片(例如:计算实体的数量在一组)。这也适用于嵌套组。(修正# 392

  • 支持配置卡片大小的自动布局功能的lovelace使用card_size.默认值仍然是3,但是您现在可以覆盖它。Lovelace将该值乘以大约50px作为自动布局功能。

    类型:自定义:按钮卡实体:Switch.my_switch card_size:42
  • 支持显示工具提示,同时使用工具提示范围。它支持JavaScript模板。您还可以将任何CSS样式应用于工具提示(主要是主要风格对象的任何状态入口)。

    类型:自定义:按钮卡实体:Switch.my_switch工具提示:|[[[ return entity.state ]]] styles: tooltip: - color: '[[[ return entity.state === "on" ? "red" : "green" ]]]'

    类型:自定义:按钮卡实体:Switch.my_switch工具提示:|[[返回实体.State]]状态: - 值:'ON'样式:ToolTip: - 颜色:红色 - 值:'OFF'样式:ToolTip: - 颜色:绿色

修正

  • 如果灯是关闭的,不要考虑亮度(这可能是光实体的虚假实现)。修复#378
  • 解决弃用的- 纸卡 - 背景颜色
  • 修复了定时器在页面更改时不更新(#365

其他

  • www.19463331.com文档错字(谢谢所有的贡献者)
  • 一些性能升级(可能只在慢系统上明显)
  • 更新所有依赖项
2喜欢

我已经使用按钮卡一段时间,只是重新阅读文档。www.19463331.com我对添加的所有新功能感到惊讶-非常感谢!我现在试图“整理”我的爱蕾丝视图使用模板和变量,但遇到了以下问题。我肯定我在做傻事,但是…

我只是想创建一个光按钮的模板。

这是基本的模板:

button_card_templates:light:变量:v_entity:light.fr1 v_name:“undef”v_con:mdi:灯名:'[[return variables.v_name]]'实体:'[[返回Variables.v_entity]]'图标:'[[[返回Variables.v_icon]]'

这是我的Lovelace配置:

- 类型:自定义:按钮卡模板:灯变量:v_entity:light.fr2 v_name:fr2 v_icon:mdi:灯泡

v_name和v_icon的变量按预期覆盖,但V_entity的变量不是。实际上,v_entity的默认值甚至没有工作。每当我点击按钮时,我会收到以下错误:

错误(mainthread)[frontend.js.latest.202011112] http://192.168.1.xxx:8123/hacsfiles/button-card/button-card.js:10589未捕获的typeerror:无法读取属性'州'的不明确的

我收到此错误我是否在Lovelace配置中指定V_entity变量。有人有主意吗?我需要将实体传递为变量,以便我可以将一些实体特定样式应用于模板。

你好,
有没有办法改变“起居室”标签卡的宽度以覆盖6个按钮的4个?
(作为红色箭头显示)
图像
谢谢// fredrik.

类型:垂直堆叠卡: - 类型:水平堆叠卡: - 颜色:'RGB(44,109,214,0.6)'Color_type:标签卡名称:客厅式:卡: - 高度:20px  - 填充:0px类型:“自定义:按钮卡” - 颜色:'RGB(44,109,214,0.6)'Color_type:标签卡名称:实用室款式:卡:高度:20px  - 填充:0px类型:'自定义:按钮卡 - 卡片: - 模板:Custom_Gap_Small类型:'Custom:Button-Card' - 实体:Light.600040352462ab0fdc9e hold_action:action:call-service服务:browser_mod.popup service_data:card:实体:Light.600040352462ab0fdc9e类型:'Scate:Slider-Entity-Row'DeviceID: - 此标题:Spotlights电视图标:'MDI:Spotlight'姓名:电视尺寸:40px模板:Custom_Button_light_Active_glow类型:'Custom:Button-Card' - 模板:Custom_gap_small类型:'Custom:按钮卡 - 实体:Switch.25803704D8F15B012287_2图标:'MDI:天花灯'名称:表格尺寸:40px模板:custom_button_light_active_glow类型:'custom:buttic-card' - 模板:custom_gap_small类型:“纯正:按钮卡” - 实体:Light.321728022462ab4df00e hold_action:action:call-service服务:browser_mod.popup service_data:card:card:light.321728022462ab4df00e类型:'custom:slider-entity-row'deviceId: - 这个标题:餐饮图标:'MDI:Spotlight'名称:天花板尺寸:40px模板:Custom_Button_light_Active_Glow类型:'Custom:Buttic-Card' - 模板:Custom_Gap_Small类型:'Custom:Buttic-Card' - 实体:Switch.25803704D8F15B012287_1图标:'MDI:天花板名称:用餐尺寸:40px模板:custom_button_light_active_glow类型:'custom:button-card' - 模板:custom_gap_small类型:'custom:button-card' - 实体:switch.25803704d8f15b015d79_1图标:'mdi:spotlight'名称:天花板尺寸:40px模板:custom_button_light_active_glow类型:'custom:button-card' - 模板:custom_gap_small类型:'custom:button-card' - 实体:switch.25803704d8f15b015d79_2图标:'mdi:灯'名称:窗口大小:40px模板:custom_button_light_active_glow类型:'custom:button-card' - 模板:custom_gap_small类型:'custom:button-card'类型:水平堆栈

实体不支持模板,因为这是不可能的。实现这一点的方法是对实体进行配置过载。

- 类型:自定义:按钮卡模板:灯实体:Light.fr2变量:v_name:fr2 v_icon:mdi:灯泡

这可能是布局卡可能是可能的。如果您想在不同的屏幕尺寸上使用界面,则无需超级易于使用的键可实现。

你能解释一下你所说的“仅仅是实体的配置过载”是什么意思吗?或者更好的是,给我指出关于这是什么的正确的文档方向?

我试图在模板中添加一个%标签如下:

标签:> [[var b =状态['light.fr1']。属性.Brightness;返回parseint(b?b / 2.55:'0')+'%';]]

这可能是这样的吗?有没有办法从模板中引用Entity_ID?我看到整理卡可以处理这个,但是在变量中使用默认值遇到问题。

我有一个奇怪的行为与样式的按钮卡。
有了这一部分的光模板:

风格:卡:宽度:105 px -高度:105 px -边界:黄色固体1 px - border - radius: 30 px -保证金:5 px 5 px 5 px 5 px -填充:10 px 0 px -字体类型:“格鲁吉亚”——过滤器:下拉阴影(0 0 0.75雷姆深红色)- -webkit-box-shadow: 0 px 0 px 9 px 3 px var(——button-card-light-color) -不必:0 px 0 px 9 px 3 px var(——button-card-light-color)

我期待一个边框半径像我配置它,但在前端我得到了卡没有边界半径(或者设置为0px)。
当我转到灯光时,边界半径显示在模板中,但在刷新后,它再次进入0px。

这是一个打开的灯和其他所有关闭的灯的截图,所有的按钮使用相同的模板:

Schermata 2020-12-04 Ast 11.58.08

如何在模板中设置正确的边框半径?

不幸的是,我一直无法在HA上工作几周(并且还有几个时间)所以我所做的就是让我的系统与HA版本和其他自定义组件更新保持最新状态。

我刚刚注意到这个错误,但我看不出任何错误的错误,这些代码始终在过去工作。有什么改变我错过了吗?

姓名:> [[[如果(outs ['input_boolean.irrigation_master_control_switch']。状态=='关闭')返回“系统关闭”;否则......等......]]]]


为了避免这些明显的问题,我们先来看看yaml.

姓名:> [[[如果(outs ['input_boolean.irrigation_master_control_switch']。状态=='关闭')返回“系统关闭”;else var today = new Date();var weekday = new Array(7);工作日[0]=“太阳”;工作日[1]=“我”;工作日[2]= "星期二";工作日[3]= "结婚";工作日[4]= "星期四";工作日[5]= "星期五";工作日[6]= "坐"; var day_today = weekday[today.getDay()]; var day_tomorrow = weekday[(today.getDay() + 1) % 7]; if (states['group.irrigation_group_cycle1_every_day'].state == 'on' || states['group.irrigation_group_cycle1_' + day_today].state == 'on') var cycle1_runs_today = true; else var cycle1_runs_today = false; if (states['group.irrigation_group_cycle2_every_day'].state == 'on' || states['group.irrigation_group_cycle2_' + day_today].state == 'on') var cycle2_runs_today = true; else var cycle2_runs_today = false; if (states['group.irrigation_group_cycle1_every_day'].state == 'on' || states['group.irrigation_group_cycle1_' + day_tomorrow].state == 'on') var cycle1_runs_tomorrow = true; else var cycle1_runs_tomorrow = false; if (states['group.irrigation_group_cycle2_every_day'].state == 'on' || states['group.irrigation_group_cycle2_' + day_tomorrow].state == 'on') var cycle2_runs_tomorrow = true; else var cycle2_runs_tomorrow = false; var time_now = states['sensor.time'].state; var cycle1_schedule_enabled = states['input_boolean.irrigation_cycle1_schedule_enabled'].state; var cycle2_schedule_enabled = states['input_boolean.irrigation_cycle2_schedule_enabled'].state; var cycle1_start_time = states['input_datetime.irrigation_cycle1_start_time'].state.substr(0, 5); var cycle2_start_time = states['input_datetime.irrigation_cycle2_start_time'].state.substr(0, 5); var cycle1_name = states['input_text.irrigation_cycle1_name'].state; var cycle2_name = states['input_text.irrigation_cycle2_name'].state; var cycle3_name = states['input_text.irrigation_cycle3_name'].state; var cycle1_running = states['input_boolean.irrigation_cycle1_running'].state; var cycle2_running = states['input_boolean.irrigation_cycle2_running'].state; var cycle3_running = states['input_boolean.irrigation_cycle3_running'].state; if (cycle1_running == 'on') return cycle1_name + ' cycle'; else if (cycle2_running == 'on') return cycle2_name + ' cycle'; else if (cycle3_running == 'on') return cycle3_name + ' cycle'; else if (cycle1_schedule_enabled == 'on' && cycle1_runs_today && cycle1_start_time > time_now) return cycle1_name + ' cycle at ' + cycle1_start_time; else if (cycle2_schedule_enabled == 'on' && cycle2_runs_today && cycle2_start_time > time_now) return cycle2_name + ' cycle at ' + cycle2_start_time; else if (cycle1_schedule_enabled == 'on' && cycle1_runs_tomorrow) return 'Tomorrow at ' + cycle1_start_time; else if (cycle2_schedule_enabled == 'on' && cycle2_runs_tomorrow) return 'Tomorrow at ' + cycle2_start_time; else return 'NOTHING SCHEDULED'; ]]]

通过参考实体实体.我建议查看文档中的示例。伟德国际官方app下载苹果版这是覆盖的JavaScript模板部分.它描述了所有可用的内置全局变量。

该错误声称一些状态[]实体不存在。重新访问所有实体并验证它们是否存在于系统中。

FWIW,确保某些东西存在总是最好的。

例如,你有:

如果州(“group.irrigation_group_cycle1_every_day”)。State == 'on'…

如果状态['group.irrigation_group_cycle1_very_day']不存在,则会收到一个例外。这是发生的事情。所以在从潜在的非现有对象中抓住状态之前......这样做:

Var my_entity = states['group.灌溉_group_cycle1_every_day'];如果(my_entity && my_entity。状态= =“上”……

如果my_entity不存在,它将不会解析If语句的第二部分。

同样,当你把它赋值给一个像那样的变量时,你可以添加console.log (my_entity);验证这些内容是否存在。这将为您看到异常的区域打印出信息。

啊哈!谢谢!我想你已经给了我所需的线索。

我有一些在ha开始上运行的自动化,在这个包装中设置一些东西。如果系统是“关闭”这些自动化也会关闭: man_facepalming:

现在没有时间进行全面调查,但我很确定这就是答案。

再次感谢Nudge和关于预先检查对象存在的建议。

当我最终回到HA工作时,我将把它添加到不断增长的待办事项列表中。

再次感谢(一如既往)。


编辑:刚刚用系统'开'重启,所以所有的自动化都跑了,一切都应该是。谢谢。

非常感谢你的帮助 - 我想我开始了解这一点。如果您不介意,我还有一个问题:在以下模板摘录中引用实体变量的正确语法是什么?

标签:> [[var b =状态['light.fr1']。属性.Brightness;返回parseint(b?b / 2.55:'0')+'%';]]

我想替换变量实体的'light.fr1'。我尝试了各种各样的语法,但总是得到一个错误。我尝试了以下几个,但没有工作。

Var b = states['entity'].attributes.亮度;Var b =状态[实体].属性。亮度;Var b =状态[(实体)].属性。亮度;Var b =状态(实体).属性。亮度;

简单的

var b = entity.Attributes.Brightness;

此外,属性始终是强烈的键入,因此亮度始终是int。此外,如果您不小心添加实体,则应在没有亮度或错误的entity_id的情况下构建安全性。

标签:> [[[返回(实体&& entity.attributes.brightness!=未定义)?`$ {entity.attributes.brightness / 2.55}%`:'错误';]]

实体字段是否支持模板?

我正在创建一个媒体按钮,我希望基于哪个扬声器动态更改。

实体:> [[[if (states["media_player.all_speakers"])。State == "playing")返回media_player.all_speakers;else if(州(“media_player.upstairs_speaker”)。状态== "playing") return media_player.upstairs_speakers; else return media_player.dining_room_speaker; ]]]

它不支持模板

您可以使用变量为此并使用所需的所有其他字段中的结果。

我有一个问题与模板和布局卡。
我使用这个按钮模板为我的灯光:

Light_Button:标签:> [[[var bri = math.round(实体。ority.attributes.brightness / 2.55);if(entity.state ==='上')返回(bri?(bri +“%”):'')]]]布局:icon_label show_label:true show_name:true大小:40%状态: - 值:'开'款式:名称: - 文本阴影:2px 2px 5px红卡: - 背景颜色:绿色 - 值:'关闭'样式:卡: - 背景 - 颜色:lightgray名称: - 颜色:黑色风格:卡: - 宽度:宽度:宽度:105px  - 高度:105px  - 边框:固体1px  - 边距:5px 5px 5px 5px  - 填充:10px 0px  -  font-family:'乔治亚州' - 边界半径:0px  - 过滤器:drop-shadow(0 0 0.75REM深红色) --webkit-box阴影:0px 0px 9px 3px var( - 按钮卡 - 浅色) - 盒子阴影:0px 0px 9px 3px var( - 按钮卡 - 光色) - 大纲式:双网格: - 网格模板:“L”“i”“n”' - 网格模板 - 行:min-content 1fr min-content  -  grid-template-columns:1fr图标: - 宽度:40px  - 颜色:var( -   - 禁区 - 卡片 - 光色)标签: - 字体大小:12px  - 字体重量:正常 - 颜色:白色名称: - 证明 - 自我:中心 - 齐全 - 自我:终端 - 填充:10px 10px  - 字体-size:13px  - 字体重量:正常- 颜色:白色Tap_Action:操作:切换触觉:灯

如果我在堆栈内卡片内使用它,并且所有视图都有布局卡,则灯不会遵循模板的一些选项(尤其是背景卡和文本选项的选项)。
相反,使用相同的模板,而没有堆栈卡和布局卡,一切都如预期的那样工作。

这是一些例子。伟德国际官方app下载苹果版
这没有堆栈卡和布局卡

这与他们

Schermata 2012-12-04等位基因19.33.56

如何让模板在这两种情况下正常工作?

如果您读取了堆栈的文档,您将看到www.19463331.com有选项可保持堆叠卡的背景/边框半径等......眨眼:

1像

有趣——我想知道那是如何工作的,因为这对我不起作用?

变量:var_name:“media_player。All_speakers '实体:'[[返回变量。var_name]]]“

我还考虑了我创建了一个自动化,以填写播放的实体名称的文本输入,然后可以使用文本输入的值作为按钮卡上的实体...但我不确定也可以工作。

实体仍然不支持模板,但您可以在其他字段中引用此变量的名字标签或支持JavaScript模板的任何其他字段。
您不需要卡的实体来工作。