====== Динамическая иконка графика в Home Assistant ====== ===== Назначение ===== Изменение цвета иконки на карточке графика (sensor card) в зависимости от состояния другого устройства. Например, иконка температуры бассейна становится оранжевой когда включена фильтрация. ===== Требования ===== * Home Assistant * HACS (Home Assistant Community Store) * card-mod (установить через HACS → Frontend) ===== Установка card-mod ===== - Открыть HACS → Frontend - Поиск: ''card-mod'' - Установить ''card-mod'' - Перезагрузить Home Assistant - Очистить кэш браузера (Ctrl+Shift+R) ===== Проверка установки ===== Открыть консоль браузера (F12 → Console) и ввести: customElements.get('card-mod') Если возвращает функцию — card-mod установлен корректно. ===== Синтаксис ===== - type: sensor entity: sensor.ваш_датчик name: Название icon: mdi:иконка graph: line card_mod: style: | :host { --paper-item-icon-color: {% if is_state('switch.ваш_переключатель', 'on') %}orange{% else %}var(--primary-text-color){% endif %} !important; } ha-card .header .icon { color: {% if is_state('switch.ваш_переключатель', 'on') %}orange{% else %}var(--primary-text-color){% endif %} !important; } ===== Примеры ===== ==== Температура бассейна + фильтрация ==== Иконка оранжевая когда фильтрация включена: - type: sensor entity: sensor.pool_temperature name: Бассейн icon: mdi:pool-thermometer graph: line card_mod: style: | :host { --paper-item-icon-color: {% if is_state('switch.pool_filtration', 'on') %}orange{% else %}var(--primary-text-color){% endif %} !important; } ha-card .header .icon { color: {% if is_state('switch.pool_filtration', 'on') %}orange{% else %}var(--primary-text-color){% endif %} !important; } ==== Температура котла + отопление ==== Иконка красная когда отопление работает: - type: sensor entity: sensor.boiler_temperature name: Котел icon: mdi:fire graph: line card_mod: style: | :host { --paper-item-icon-color: {% if is_state('switch.heating', 'on') %}red{% else %}var(--primary-text-color){% endif %} !important; } ha-card .header .icon { color: {% if is_state('switch.heating', 'on') %}red{% else %}var(--primary-text-color){% endif %} !important; } ==== Температура бойлера + насос ==== Иконка зелёная когда насос работает: - type: sensor entity: sensor.boiler_water_temperature name: Бойлер ГВС icon: mdi:thermometer graph: line detail: 1 card_mod: style: | :host { --paper-item-icon-color: {% if is_state('switch.boiler_pump', 'on') %}lime{% else %}var(--primary-text-color){% endif %} !important; } ha-card .header .icon { color: {% if is_state('switch.boiler_pump', 'on') %}lime{% else %}var(--primary-text-color){% endif %} !important; } ===== Доступные цвета ===== | **Цвет** | **Значение** | | Оранжевый | ''orange'' | | Красный | ''red'' | | Зелёный | ''green'' или ''lime'' | | Синий | ''blue'' или ''dodgerblue'' | | Жёлтый | ''yellow'' или ''gold'' | | Фиолетовый | ''purple'' или ''violet'' | | Голубой | ''cyan'' или ''aqua'' | | Белый | ''white'' | | HEX-код | ''#FF5722'' | | RGB | ''rgb(255, 87, 34)'' | ===== Множественные условия ===== Разные цвета для разных состояний: card_mod: style: | :host { --paper-item-icon-color: {% if is_state('switch.device', 'on') %} orange {% elif states('sensor.temperature')|float > 30 %} red {% else %} var(--primary-text-color) {% endif %} !important; } ha-card .header .icon { color: {% if is_state('switch.device', 'on') %} orange {% elif states('sensor.temperature')|float > 30 %} red {% else %} var(--primary-text-color) {% endif %} !important; } ===== Полный пример дашборда ===== views: - title: Климат path: climate icon: mdi:thermometer type: masonry cards: - type: grid columns: 2 square: false cards: - type: sensor entity: sensor.pool_temperature name: Бассейн icon: mdi:pool-thermometer graph: line card_mod: style: | :host { --paper-item-icon-color: {% if is_state('switch.pool_filtration', 'on') %}orange{% else %}var(--primary-text-color){% endif %} !important; } ha-card .header .icon { color: {% if is_state('switch.pool_filtration', 'on') %}orange{% else %}var(--primary-text-color){% endif %} !important; } - type: sensor entity: sensor.boiler_temperature name: Котел icon: mdi:fire graph: line card_mod: style: | :host { --paper-item-icon-color: {% if is_state('switch.heating', 'on') %}red{% else %}var(--primary-text-color){% endif %} !important; } ha-card .header .icon { color: {% if is_state('switch.heating', 'on') %}red{% else %}var(--primary-text-color){% endif %} !important; } ===== Устранение неполадок ===== **Иконка не меняет цвет:** * Очистить кэш браузера (Ctrl+Shift+R) * Проверить что card-mod установлен * Проверить правильность entity_id переключателя * Убедиться что ''!important'' присутствует в стилях **Ошибка YAML:** * Проверить отступы (2 пробела) * Символ ''|'' после ''style:'' обязателен * Кавычки в Jinja2 шаблонах должны быть одинарными ===== Ссылки ===== * [[https://github.com/thomasloven/lovelace-card-mod|card-mod GitHub]] * [[https://www.home-assistant.io/docs/configuration/templating/|Home Assistant Templating]]