Приручи Home Assistant. Визуальная часть

25 мая 2021, 12:57

По большому счету, интерфейс HA можно сделать каким угодно, здесь описаны только некоторые составляющие.

Карта погоды

Карточка масштабируется по любому размеру, отличного качества.

Страничка для настройки Windy.

Код просто прописывается в карточке:

aspect_ratio: 100%
type: iframe
url: >-
  https://embed.windy.com/embed2.html?lat=59.889&lon=30.278&zoom=7&level=surface&overlay=rain&menu=&message=&marker=&calendar=&pressure=&type=map&location=coordinates&detail=&detailLat=59.898&detailLon=30.262&metricWind=m/s&metricTemp=°C&radarRange=-1"
  frameborder="0"></iframe>

Сцены освещения

Карточки - это клавиши, которые отрабатывают различные скрипты. Клавиша на несколько секунд становится активной, подсвечивается цветом, после чего выключается. Скрипт продолжает исполняться.

Код карточки на панели:

cards:
  - aspect_ratio: 100%
    entity: input_boolean.kamin_mode
    hold_action:
      action: none
    image: /local/fireplace.jpg
    name: Камин
    show_name: true
    show_state: false
    tap_action:
      action: toggle
    type: picture-entity
  - aspect_ratio: 100%
    entity: input_boolean.kino
    hold_action:
      action: none
    image: /local/cinema.jpg
    name: Кино
    show_state: false
    tap_action:
      action: toggle
    type: picture-entity
  - aspect_ratio: 100%
    entity: input_boolean.nlight
    hold_action:
      action: none
    image: /local/northen lights.jpg
    name: Аврора
    show_state: false
    tap_action:
      action: toggle
    type: picture-entity
type: horizontal-stack

Конфигурация, автоматизация и сцены для режима камин.

Во время запуска этой сцены: выключается весь свет, включается только ночник и светодиодная лента, запуск ТВ с качественным видео из ютуба во весь экран.

homeassistant:
  customize:
#Создаем кастомный переключатель
    input_boolean.kamin_mode:
      templates:
        hs_color: >
          if (state === 'off') return [0, 0];
          else return [141, 48];
        brightness: >
          if (state === 'on') return 92;
  customize_glob:
    input_boolean.kamin_mode:
      templates:
        hs_color: "if (state === 'off') return [0, 0];
        else return [116, 85];"

input_boolean:
  kamin_mode:
    name: Kamin Mode
    icon: mdi:fireplace

#Создаем сцену для освещения. У меня телевизор запускает сцену не камина, а костра в лесу. Для него:
scene:
  - name: Камин
    entities:
#Ночник стоит в задней части комнаты. Даем легкое зеленое свечение, эмитирующее лес.
      light.mibedsidelamp2_ddb5:
        state: on
        transition: 3
        rgb_color: [134,255,167]
        brightness_pct: 1
#Светодиодная лента под подвесной тумбой, на которой стоит ТВ. Даем эффект огня: пульсирующее свечение:
      light.walli:
        state: on
        transition: 3
        effect: 'Fire Flicker'

yeelight:
#Эффект огня
  custom_effects:
    - name: 'Fire Flicker'
      flow_params:
        count: 0
        transitions:
          - TemperatureTransition: [1900, 1000, 80]
          - TemperatureTransition: [1900, 2000, 40]
          - SleepTransition:       [1000]


automation:
  - alias: 'Kamin Mode On'
    trigger:
      platform: state
      entity_id: input_boolean.kamin_mode
      to: 'on'
    action:
#уменьшаем громкость Яндекс станции
      - service: media_player.volume_set
        entity_id: media_player.yandex_station
        data:
          volume_level: 0.0
#выключаем весь свет
      - service: input_boolean.turn_off
        entity_id: group.light_relay_all
      - delay: '00:00:05'
#громкость Яндекс станции на 4
      - service: media_player.volume_set
        entity_id: media_player.yandex_station
        data:
          volume_level: 0.4
#произносим действие на Яндекс станции, следом эффект треска костра. https://yandex.ru/dev/dialogs/alice/doc/sounds.html
      - service: media_player.play_media
        entity_id: media_player.yandex_station
        data_template:
          media_content_id: Зажигаю огонь, сейчас потеплеет. #<speaker audio="alice-sounds-nature-fire-2.opus">
          media_content_type: text
#запускаем на телевизоре видео на котором лес и костер
      - service: script.tv_on_browser_kamin
#ждем 8 секунд
      - delay: '00:00:08'
#включаем сцену освещения ночника и ленты
      - service: scene.turn_on
        entity_id: scene.kamin
        data:
          transition: 3

#выключаем клавишу/убираем подсветку.
  - alias: 'Kamin Mode Off'
    trigger:
      platform: state
      entity_id: input_boolean.kamin_mode
      to: 'on'
    action:
      - delay: '00:00:05'
      - service: input_boolean.turn_off
        entity_id: input_boolean.kamin_mode

#скрипт запуска на телевизоре ютуба с видео леса во весь экран
script:
  tv_on_browser_kamin:
    alias: ТВ. Включение камин
    sequence:
#включаем ТВ
      - service: media_player.turn_on
        data:
          entity_id: media_player.samsung_tv_remote
#устанавливаем громкость ТВ на 7
      - service: media_player.play_media
        data:
          entity_id: media_player.samsung_tv_remote
          media_content_type: send_key
          media_content_id: ST_VOL7
#запускаем браузер
      - service: media_player.play_media
        data:
          entity_id: media_player.samsung_tv_remote
          media_content_type: app
          media_content_id: org.tizen.browser
#открываем страничку видео в браузере
      - service: media_player.play_media
        data:
          entity_id: media_player.samsung_tv_remote
          media_content_type: browser
          media_content_id: 'https://www.youtube.com/embed/Ftm2uv7-Ybw'
#ждем 3 секунды пока загрузится ссылка
      - delay: '00:00:03'
#запуск видео
      - service: media_player.play_media
        data:
          entity_id: media_player.samsung_tv_remote
          media_content_type: send_key
          media_content_id: KEY_ENTER

Влажность почвы

Помимо отображения влажности, мы задаем порог. Ниже - звуковое оповещение.

Карточка:

type: vertical-stack
cards:
  - type: entities
    entities:
      - entity: sensor.flower4_soil_moisture
        name: Плющ II
        secondary_info: last-changed
      - entity: sensor.flower4_battery
        name: Батарея
      - entity: input_number.flower4
        name: Минимальное значение
    header:
      type: picture
      image: /local/plush2.jpg
      tap_action:
        action: none
      hold_action:
        action: none
  - type: 'custom:apexcharts-card'
    header:
      show: true
      title: Влажность
      show_states: true
      colorize_states: false
    experimental:
      color_threshold: true
      brush: true
    graph_span: 72h
    brush:
      selection_span: 24h
      apex_config: null
    series:
      - entity: sensor.flower4_soil_moisture
        group_by:
          func: avg
          duration: 45min
        name: Плющ II
        color: blue
        type: area
        stroke_width: 1
        color_threshold:
          - value: 40
            color: lightcyan
          - value: 60
            color: cornflowerblue
          - value: 80
            color: mediumblue
      - entity: sensor.flower4_soil_moisture
        group_by:
          func: avg
          duration: 45min
        color: blue
        stroke_width: 1
        float_precision: 0
        show:
          in_brush: true
          in_chart: false

Конфиг, автоматизация:

input_number:
#Создаем бегунок
    flower1:
        icon: mdi:water-check-outline
        initial: 60
        min: 0
        max: 100
        step: 5

automation:
#Проверяем каждые 50 минут порог влажности
  - id: flowers1_warning
    alias: Цветы. Авакадий 1 предупреждение.
    trigger:
      - platform: numeric_state
        entity_id: sensor.flower1_soil_moisture
        below: input_number.flower1
      - platform: time_pattern
        minutes: "/50"
    condition:
#Только с 11 до 23 часов
      condition: time
      after: '11:00:00'
      before: '23:00:00'
    action:
      - service: media_player.play_media
        entity_id: media_player.yandex_station
        data:
#Идет звуковой эффект https://yandex.ru/dev/dialogs/alice/doc/sounds.html и произносится текст
          media_content_id: >
            {%-if states('sensor.flower1_soil_moisture') | float < states('input_number.flower1') | float %}
              <speaker audio="alice-sounds-game-ping-1.opus">. Влажность авакадия 1 снизилась ниже установленного уровня. Сейчас {{ states('sensor.flower1_soil_moisture') | int }} процентов.
            {%endif%}
          media_content_type: dialog
          extra:
            volume_level: 0.3

Все новости мира умных домов - t.me/SprutAI_News или Instagram
Остались вопросы? Мы в Telegram - @SprutAI

Хочешь умный дом но нет времени разбираться?
Посмотри примеры работ и выбери себе интегратора.
  1. (hACK)
    (hACK) 21 день назад

    Какой сенсор (Mi Flora?) и интеграцию используете для цветов?

К списку статей
Россия, г. Санкт-Петербург

Скидки для сообщества

Z-Wave Ukraine

+380 68 641 9670
Промокод:
Sprut-UA
Размер скидки:
15%

Тематические чаты

Похожие статьи

17 декабря 2019, 17:49
Универсальный привод для автоматического удаленного открытия окон с простой интеграцией в умные дома.
15 ноября 2018, 09:42
Способы автоматизации механических ворот
27 октября 2018, 12:20
Нативный Термостат для котла на ESP8266 с поддержкой Apple HomeKit
20 октября 2018, 22:57
Теоретические основы протокола MQTT и описание того, как он работает и для чего используется
30 августа 2019, 07:28
Несколько нетривиальных способов использования датчика открытия окон/дверей от Xiaomi/Aqara.
02 июля 2020, 07:24
Я хочу поделиться своей разработкой: "умным открывателем пластикового окна". В статье вы найдете все необходимое, чтобы повторить проект и изготовить собственный привод для открывания окна с использованием штатной фурнитуры окна.
24 августа 2018, 12:18
Пошаговая установка HomeAssistant
15 ноября 2018, 13:11
Xiaomi Mi Remote 360 добавляем Apple HomeKit
28 августа 2018, 09:48
От голого Raspbian до веб-интерфейса homebridge за четыре команды в терминале.
27 августа 2018, 10:14
Интегрируем ХА в HomeKit