HomeAssistant. свои svg иконки.

Собственно захотелось красоты. Я не претендую на то что для всех это будет красиво, на вкус и цвет все фломастеры разные, но не найдя нужных иконок в стандартном наборе я сделал свои из svg.

пойдем сразу иконки рисовать в templates, чтобы не дублировать одинаковый код по карточкам, использовать я буду для этих целей button card. Сделаем templates для Button card, для этого заходим в редактирование Dashboard и в верхнем правом углу нажимаем три точки и выбираем Текстовый редактор

в начало пишем следующий код:


button_card_templates:
  base_svg_icon:
    show_icon: false
    custom_fields:
      myicon: '[[[ return variables.my_svg ]]]'
    styles:
      card:
        - background: '#2a2a2a'
        - color: white
        - border-radius: 20px
        - height: 70px
        - width: 210px
        - box-shadow: none
        - font-size: 35px
        - font-weight: bold
        - justify-content: flex-start
      name:
        - font-weight: bold
        - margin-left: 0px
        - justify-content: flex-start !important
        - text-align: left !important
      grid:
        - grid-template-areas: '"myicon n"'
        - grid-template-columns: 44px 1fr
        - align-items: center
        - justify-items: start
      custom_fields:
        myicon:
          - width: 44px
          - height: 44px
          - display: flex
          - justify-content: center
          - align-items: center
          - margin-left: 10px
          - margin-right: 5px
  my_svg_icon_1:
    template: base_svg_icon
    variables:
      my_svg: >
        <svg width="44" height="44" viewBox="0 0 44 44" fill="none"
        xmlns="http://www.w3.org/2000/svg">
          <circle cx="22" cy="22" r="22" fill="url(#paint0_linear_91_1076)"/>
          <circle cx="25.5" cy="27.5" r="3.5" stroke="white" stroke-width="1.5"/>
          <path d="M23 25L20 22" stroke="white" stroke-width="1.5" stroke-linecap="round"/>
          <path d="M20 19L24 16.5" stroke="white" stroke-width="1.5" stroke-linecap="round"/>
          <circle cx="17" cy="20" r="3" stroke="white" stroke-width="1.5"/>
          <circle cx="26" cy="15" r="2" stroke="white" stroke-width="1.5"/>
          <defs><linearGradient id="paint0_linear_91_1076" x1="11" y1="0" x2="35" y2="44" gradientUnits="userSpaceOnUse">
          <stop stop-color="#3C5AFE"/><stop offset="1" stop-color="#5284BD"/></linearGradient></defs></svg>

тут 2 секции: base_svg_icon: и my_svg_icon_1:

my_svg_icon_1 — это шаблон который используется в my_svg_icon_1 для того чтобы не плодить одинаковый код, my_svg_icon_1 — это собственно наша иконка.

для добавления иконок просто скопируйте код

  my_svg_icon_1:
    template: base_svg_icon
    variables:
      my_svg: >
        ВАШ SVG

и замените ВАШ SVG на свой код, просто откройте svg иконку в текстовом редакторе и скопируйте код и вставьте сюда, не забудьте переименовать my_svg_icon_1 так как это имя должно быть уникально.

Сохраняем и закрываем редактор. Вставляем карточку Button Card со следующим содержимым:

type: custom:button-card
entity: weather.moscow
name: "[[[ return states['weather.moscow'].attributes.temperature + '°C'; ]]]"
template: my_svg_icon_1
show_icon: false
show_name: true
tap_action:
  action: more-info

созданный шаблон задается в строке:

template: my_svg_icon_1

 У Вас получится вот такая карточка 

стиль карточки можно поменять через template для всех карточек которые используют этот шаблон, или через саму карточку, например к карточке добавьте:

styles:
  card:
    - font-size: 30px

Это переопределит стиль заданный в template, в данном случае задаст размер текста 30px.

Так можно задать или переопределить любое свойство, свойство заданное в карточке имеет приоритет над свойством в шаблоне.

Вот код для разных иконок

просто добавьте в редактор как написано выше следующий код (в карточке my_svg_icon_2, my_svg_icon_3, my_svg_icon_4):

  my_svg_icon_2:
    template: base_svg_icon
    variables:
      my_svg: >
        <svg width="44" height="44" viewBox="0 0 44 44" fill="none"
        xmlns="http://www.w3.org/2000/svg"> <circle cx="22" cy="22" r="22"
        fill="url(#paint0_linear_91_1071)"/> <path d="M18.9992 29.1983C17.9312
        29.1983 16.8871 28.8193 15.9991 28.1094C15.111 27.3994 14.419 26.3903
        14.0104 25.2097C13.6018 24.0292 13.4951 22.7302 13.7037 21.477C13.9123
        20.2239 14.4269 19.0729 15.1824 18.1697L18.9959 13.5996L20.906 15.8847"
        stroke="white" stroke-width="1.5" stroke-linecap="round"
        stroke-linejoin="round"/> <path d="M26.2363 27.235V26.6827C26.2363
        26.2532 26.3284 25.8561 26.5125 25.4914C26.6999 25.1266 26.9709 24.8335
        27.3255 24.6119C27.68 24.3903 28.1129 24.2795 28.6242 24.2795C29.1458
        24.2795 29.5838 24.3903 29.9383 24.6119C30.2962 24.8301 30.5655 25.1215
        30.7462 25.4862C30.9303 25.8476 31.0223 26.2464 31.0223
        26.6827V27.235C31.0223 27.6645 30.9303 28.0616 30.7462 28.4263C30.5621
        28.7911 30.2911 29.0842 29.9332 29.3058C29.5753 29.5274 29.1389 29.6382
        28.6242 29.6382C28.1061 29.6382 27.6697 29.5274 27.3152 29.3058C26.9607
        29.0842 26.6914 28.7911 26.5073 28.4263C26.3267 28.0616 26.2363 27.6645
        26.2363 27.235ZM27.8674 26.6827V27.235C27.8674 27.4531 27.9203 27.6628
        28.026 27.8639C28.135 28.065 28.3345 28.1656 28.6242 28.1656C28.9208
        28.1656 29.1202 28.0684 29.2224 27.8741C29.3247 27.6764 29.3758 27.4634
        29.3758 27.235V26.6827C29.3758 26.4543 29.3264 26.2396 29.2276
        26.0385C29.1321 25.8339 28.931 25.7317 28.6242 25.7317C28.3379 25.7317
        28.1402 25.8339 28.0311 26.0385C27.922 26.2396 27.8674 26.4543 27.8674
        26.6827ZM20.8061 21.2423V20.6901C20.8061 20.2537 20.8999 19.8549 21.0873
        19.4936C21.2782 19.1288 21.5509 18.8374 21.9055 18.6192C22.26 18.3977
        22.6895 18.2869 23.194 18.2869C23.7155 18.2869 24.1536 18.3977 24.5081
        18.6192C24.866 18.8374 25.137 19.1288 25.3211 19.4936C25.5052 19.8549
        25.5972 20.2537 25.5972 20.6901V21.2423C25.5972 21.6786 25.5034 22.0774
        25.316 22.4388C25.1319 22.8001 24.8609 23.0882 24.503 23.3029C24.145
        23.5177 23.7087 23.625 23.194 23.625C22.6793 23.625 22.2429 23.516
        21.885 23.2978C21.5305 23.0796 21.2612 22.7899 21.0771 22.4286C20.8965
        22.0672 20.8061 21.6718 20.8061 21.2423ZM22.4526 20.6901V21.2423C22.4526
        21.4707 22.5054 21.6837 22.6111 21.8814C22.7202 22.0757 22.9145 22.1729
        23.194 22.1729C23.494 22.1729 23.6934 22.0757 23.7922 21.8814C23.8945
        21.6837 23.9456 21.4707 23.9456 21.2423V20.6901C23.9456 20.4617 23.8979
        20.2469 23.8025 20.0458C23.707 19.8413 23.5042 19.739 23.194
        19.739C22.9076 19.739 22.7116 19.843 22.606 20.0509C22.5037 20.2589
        22.4526 20.4719 22.4526 20.6901ZM22.6716 29.1984C22.2085 29.1984 21.9353
        28.6791 22.1976 28.2975L28.6062 18.9759C28.7135 18.8198 28.8907 18.7266
        29.0801 18.7266C29.5432 18.7266 29.8164 19.246 29.5541 19.6276L23.1455
        28.9491C23.0382 29.1052 22.861 29.1984 22.6716 29.1984Z" fill="white"/>
        <defs><linearGradient id="paint0_linear_91_1071" x1="11"
        y1="-3.57628e-07" x2="35" y2="44" gradientUnits="userSpaceOnUse"> <stop
        stop-color="#3C5AFE"/><stop offset="1"
        stop-color="#5284BD"/></linearGradient></defs></svg>
  my_svg_icon_3:
    template: base_svg_icon
    variables:
      my_svg: >
        <svg width="44" height="44" viewBox="0 0 44 44" fill="none"
        xmlns="http://www.w3.org/2000/svg"> <circle cx="22" cy="22" r="22"
        fill="url(#paint0_linear_91_985)"/> <path d="M24.2222
        24.2573V15.0453C24.2222 14.5029 23.9881 13.9826 23.5713 13.5991C23.1546
        13.2155 22.5894 13 22 13C21.4106 13 20.8454 13.2155 20.4287
        13.5991C20.0119 13.9826 19.7778 14.5029 19.7778 15.0453V24.2573C19.0642
        24.6961 18.523 25.3345 18.2338 26.0781C17.9447 26.8218 17.9231 27.6313
        18.1722 28.3871C18.4213 29.1429 18.9279 29.805 19.6172 30.2755C20.3065
        30.746 21.1419 31 22 31C22.8581 31 23.6935 30.746 24.3828
        30.2755C25.0721 29.805 25.5787 29.1429 25.8278 28.3871C26.0769 27.6313
        26.0553 26.8218 25.7662 26.0781C25.477 25.3345 24.9358 24.6961 24.2222
        24.2573Z" stroke="white" stroke-width="1.5" stroke-linecap="round"
        stroke-linejoin="round"/> <defs><linearGradient
        id="paint0_linear_91_985" x1="11" y1="-3.57628e-07" x2="35" y2="44"
        gradientUnits="userSpaceOnUse"> <stop stop-color="#3C5AFE"/><stop
        offset="1" stop-color="#5284BD"/></linearGradient></defs></svg>
  my_svg_icon_4:
    template: base_svg_icon
    variables:
      my_svg: >
        <svg width="44" height="44" viewBox="0 0 44 44" fill="none"
        xmlns="http://www.w3.org/2000/svg"> <circle cx="22" cy="22" r="22"
        fill="url(#paint0_linear_161_13)"/> <path d="M24.5 16.835C26.3753 16.835
        28.165 18.7591 28.165 21.5C28.165 24.2409 26.3753 26.165 24.5
        26.165C22.6247 26.165 20.835 24.2409 20.835 21.5C20.835 18.7591 22.6247
        16.835 24.5 16.835Z" stroke="white" stroke-width="1.67"/> <path
        d="M28.1241 32V30.8439L30.4938 29.0173C30.651 28.896 30.7854 28.7823
        30.897 28.6763C31.0108 28.5684 31.0976 28.4576 31.1576 28.3439C31.2196
        28.2303 31.2506 28.104 31.2506 27.9653C31.2506 27.8131 31.2155 27.683
        31.1452 27.5751C31.0769 27.4672 30.9818 27.3844 30.8598 27.3266C30.7378
        27.2669 30.5972 27.237 30.438 27.237C30.2787 27.237 30.1381 27.2669
        30.0161 27.3266C29.8962 27.3863 29.8031 27.474 29.737 27.5896C29.6708
        27.7052 29.6377 27.8459 29.6377 28.0116H28C28 27.5954 28.1003 27.237
        28.3009 26.9364C28.5014 26.6358 28.7847 26.4046 29.1507 26.2428C29.5167
        26.0809 29.9458 26 30.438 26C30.9467 26 31.3871 26.0761 31.7593
        26.2283C32.1336 26.3786 32.422 26.5906 32.6247 26.8642C32.8294 27.1378
        32.9318 27.4586 32.9318 27.8266C32.9318 28.054 32.8811 28.2803 32.7798
        28.5058C32.6785 28.7293 32.4965 28.9769 32.2339 29.2486C31.9713 29.5202
        31.598 29.8439 31.1141 30.2197L30.5186 30.6821V30.7168H33V32H28.1241Z"
        fill="white"/> <path d="M19 19.6283H17.4109C17.3497 19.2798 17.236
        18.9731 17.0696 18.7082C16.9032 18.4433 16.6995 18.2185 16.4584
        18.0337C16.2173 17.849 15.9474 17.7096 15.6486 17.6155C15.3531 17.5214
        15.039 17.4743 14.7063 17.4743C14.1053 17.4743 13.5671 17.6294 13.0917
        17.9396C12.6197 18.2498 12.2462 18.7047 11.9711 19.3042C11.6995 19.9037
        11.5637 20.6356 11.5637 21.5C11.5637 22.3714 11.6995 23.1068 11.9711
        23.7063C12.2462 24.3058 12.6214 24.7589 13.0968 25.0656C13.5722 25.3723
        14.107 25.5257 14.7012 25.5257C15.0306 25.5257 15.343 25.4804 15.6384
        25.3897C15.9372 25.2956 16.2071 25.158 16.4482 24.9767C16.6893 24.7955
        16.893 24.5741 17.0594 24.3127C17.2292 24.0478 17.3464 23.7446 17.4109
        23.403L19 23.4083C18.9151 23.9346 18.7504 24.419 18.5059 24.8617C18.2649
        25.3009 17.9542 25.6808 17.5739 26.0014C17.1969 26.3186 16.7657 26.5643
        16.2801 26.7386C15.7946 26.9129 15.2649 27 14.691 27C13.7878 27 12.983
        26.7804 12.2767 26.3413C11.5705 25.8986 11.0136 25.266 10.6061
        24.4434C10.202 23.6209 10 22.6397 10 21.5C10 20.3568 10.2037 19.3756
        10.6112 18.5566C11.0187 17.734 11.5756 17.1031 12.2818 16.664C12.9881
        16.2213 13.7912 16 14.691 16C15.2445 16 15.7606 16.0819 16.2394
        16.2457C16.7216 16.4061 17.1545 16.6431 17.5382 16.9567C17.9219 17.267
        18.2394 17.6469 18.4907 18.0965C18.7419 18.5426 18.9117 19.0532 19
        19.6283Z" fill="white"/> <defs><linearGradient id="paint0_linear_161_13"
        x1="11" y1="-3.57628e-07" x2="35" y2="44"
        gradientUnits="userSpaceOnUse"> <stop stop-color="#3C5AFE"/><stop
        offset="1" stop-color="#5284BD"/></linearGradient></defs></svg>

HomeAssistant. свои svg иконки.

Навигация по записям