找回密码
 立即注册

微信扫码登录

搜索
查看: 226|回复: 15

[UI界面] 分享一个简单开关功能的电器控制卡片,button-card+card_mod

[复制链接]

29

主题

215

回帖

1805

积分

论坛UI达人

积分
1805
金钱
1556
HASS币
50
发表于 昨天 15:28 | 显示全部楼层 |阅读模式
本帖最后由 gasment 于 2025-8-29 15:48 编辑

废话不多说,先上图:

image.png image.png image.png

适合使用水平堆叠2个使用,手机界面友好,可以配合bubble-card弹窗使用
列举几个我在用的使用例子

  • 灯类,带亮度色温控制的,可配置额外的控制按钮,动态图:
  • 亮度色温直接使用more-info动作来拉起ha自带控件,简单高效
  • light.webp






  • 风扇类,可配置定时,风速之类的额外按钮,动态图:
  • 这些控件都是用nodered自建实体做的,不展开了,过于繁琐
  • fan-1.webp
  • fan.webp






  • 插座类,可以配置显示当前功率等,动态图:
  • plug.webp






  • 对于不能随便开关的的电器,可以加个锁,防止误触:
  • 锁定时,开关按钮无法触发,长按锁头图标可解锁10秒(秒数可自定义),10秒内可操作开关,超时后自动回锁,这个是button-card自带的功能
  • lock.webp





下面开始操作:


1、先去HACS搜索下载安装button-card和card-mod,可选bubble-card(安装插件是基础知识,不赘述了)


2、在仪表盘原始代码插入我的button-card模板,附件
游客,如果您要查看本帖隐藏内容请回复

    template.webp
  • 打开附件代码后,共有两个template模板:
  • image.png
  • single_button_control_card_with_option:用于卡片整体布局
  • animation_switch_template:用于开关按钮的动画样式




3、建议分批插入到到原始代码中,注意需要插入到首行,views的上面(button_card_templates:与views:同级都是顶格),格式缩进比较严格,注意边添加边检查
image.png

4、新建一个卡片,搜索输入yaml,选入手动编辑,之后粘贴代码:
注意注释说明!!!!!
图例:

image.png
type: custom:button-card
triggers_update:
  - example.entity.1
  - example.entity.2   ##你的实体,该卡片用到的实体都要加到此处,用于刷新卡片状态
name: 夜灯    ###对应图例p1文字
variables:
  entity: example.entity   ####你的实体,此实体状态用于图标变化,背景色变化,图例p2的状态显示等
  control_method: auto   ###该电器的控制方式,自动化控制为auto,未做自动化为manual,对应图例p3,auto才会显示,非auto不显示文字
  entity_on_icon: /local/ui_v3/apng_webp_icon/control_card/light/night_light_on.svg    ##实体on时的图标路径
  entity_on_bg: rgb(244,236,220)     ##实体on时的卡片背景色
  entity_off_icon: /local/ui_v3/apng_webp_icon/control_card/light/night_light_off.svg   ##实体off时的图标路径
  entity_off_bg: rgb(255,255,255)    ##实体off时的卡片背景色
  option_state: |  ##图例p6中显示的状态,此处例子为亮度转换,注意替换light.entity为自己的实体名,如果没有,直接删掉js语句后配置为option_state: null
    [[[ 
        var brightness = states[`light.entity`].attributes.brightness;
        brightness = parseFloat(brightness / 255 *100).toFixed(0)+"%"
        return brightness
       ]]]
  option_gb: rgb(255,170,0)  ##图例中p5p6的背景颜色,如果没有,直接配置为option_gb: null
  ##option_show控制图例中p5p6 的显示时机,此处例子为灯打开才显示,注意替换example.entity为自己的实体名, 
  ##如果没有,直接删掉js语句后配置为option_show: none
  option_show: |                    
    [[[   
      if (states[`example.entity`].state === "on"){
        return "block";
      } else { 
          return "none"
      }
       ]]]
template: single_button_control_card_with_option  ##引用模板
custom_fields:
  option:   #图例中p5p6的按钮配置,如果没有,直接从option到icon整段删掉
    card:
      type: custom:button-card
      entity: example.entity  #该实体用于点击p5p6打开的窗口,注意替换example.entity为自己的实体名
      tap_action:
        action: more-info
      icon: mdi:brightness-6  #图例p5的图标
      styles:
        state:
          - font-size: 12px  ##如果P6字体大小不对,可单独调整px
  switch:
    card:
      type: custom:button-card
      entity: example.entity   #该实体用于实际的开关操作,注意替换example.entity为自己的实体名
      entity_on_color: "#FFAA00"   #实体打开时,图例p7的颜色
      template: animation_switch_template   ##引用模板
      lock:
        enabled: true    #给开关上锁,默认为false,加锁配置为true

option_state中显示功率?
option_state: |    #注意替换example.entity为自己的实体名,该结果不保留小数,添加单位w
    [[[ 
        var power = states[`example.entity`].state;
        power = parseFloat(power).toFixed(0)+"w"
        return power

    ]]]







以及:
图例中用到的图标:
游客,如果您要查看本帖隐藏内容请回复


那个魔改的bubble-card弹窗
image.png
type: vertical-stack
cards:
  - type: custom:bubble-card
    card_type: pop-up
    hash: "#test"   ##改为你自己的hash
    button_type: name
    card_layout: normal
    width_desktop: 390px
    styles: |-
      .bubble-header-container {
          height: 0px;
          padding: 15px;
      }
      .bubble-close-icon {   
          --mdc-icon-size: 60px;  /* 关闭弹窗按钮的大小调节*/
          color: white;
      }
      .bubble-close-button {
        position: absolute;
        margin-top: 230px;   /* 关闭弹窗按钮的垂直位置*/
        margin-left: 270px;  /* 关闭弹窗按钮的水平位置*/
        height: 80px;
        width: 80px;
        background: rgb(199,207,226);
        border-radius: 40px;
        #box-shadow: 0px 0px 0px 2px rgb(112,116,135)
      }
      .bubble-pop-up-background {
          border-radius: 30px;
          width: 0 !important;
      }
      .bubble-pop-up {
          bottom: 250px;  /* 弹窗底部空白高度*/
          height: 400px !important;  /* 弹窗本体高度*/
      }





✅以上全部,欢迎反馈测试

评分

参与人数 2金钱 +32 收起 理由
隔壁的王叔叔 + 12 高手,这是高手!
sorrypqa + 20 感谢楼主分享!

查看全部评分

回复

使用道具 举报

ck3 手机认证

11

主题

213

回帖

3371

积分

元老级技术达人

积分
3371
金钱
3137
HASS币
50
发表于 昨天 15:30 | 显示全部楼层
感谢大佬分享
回复

使用道具 举报

25

主题

399

回帖

2947

积分

金牌会员

积分
2947
金钱
2508
HASS币
110
发表于 昨天 15:34 | 显示全部楼层
大佬优秀,感谢分享
回复

使用道具 举报

55

主题

244

回帖

2081

积分

金牌会员

积分
2081
金钱
1782
HASS币
0
发表于 昨天 16:36 | 显示全部楼层
大佬优秀,感谢分享
回复

使用道具 举报

2

主题

47

回帖

255

积分

中级会员

积分
255
金钱
206
HASS币
0
发表于 昨天 16:38 | 显示全部楼层
这个好看,感谢大佬
回复

使用道具 举报

57

主题

334

回帖

1931

积分

金牌会员

积分
1931
金钱
1540
HASS币
50
发表于 昨天 16:53 | 显示全部楼层
大佬优秀,感谢分享大佬优秀,感谢分享大佬优秀,感谢分享
回复

使用道具 举报

0

主题

1

回帖

15

积分

新手上路

积分
15
金钱
14
HASS币
0
发表于 昨天 17:07 | 显示全部楼层
大佬优秀,实力担当,感谢分享!
回复

使用道具 举报

dach 手机认证

0

主题

3

回帖

46

积分

新手上路

积分
46
金钱
43
HASS币
0
发表于 昨天 18:02 | 显示全部楼层
1111111111111111111111111111111111111111111111
回复

使用道具 举报

1

主题

27

回帖

182

积分

注册会员

积分
182
金钱
154
HASS币
0
发表于 昨天 20:20 | 显示全部楼层
真好看。。。。。
回复

使用道具 举报

7

主题

287

回帖

3256

积分

论坛元老

积分
3256
金钱
2962
HASS币
0
发表于 昨天 20:46 | 显示全部楼层
感谢大佬分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian ( 晋ICP备17001384号-1 )

GMT+8, 2025-8-30 05:30 , Processed in 0.219897 second(s), 14 queries , MemCached On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表