Приручи Home Assistant. Будильник

08 мая 2021, 07:23

Представление карточки в Home Assistant:

В карточке используется дополнительный компонент custom:fold-entity-row. Ставится при помощи HACS.

Внешний вид карточки

1600x_image.png?1620313596
Карточка будильника
1600x_image.png?1620313597
Карточка будильника развернута

Код карточки

type: entities
entities:
  - entity: group.alarm_1
    icon: 'mdi:alarm-check'
    name: Будильник
  - entity: sensor.alarm_1_time
    icon: 'mdi:clock-outline'
    name: Время срабатывания
  - entity: input_number.alarm_1_hour
    icon: 'mdi:cog-clockwise'
    name: Часы
  - entity: input_number.alarm_1_minutes
    icon: 'mdi:cog-clockwise'
    name: Минуты
  - type: 'custom:fold-entity-row'
    head:
      type: section
      label: Параметры
    entities:
      - entity: sensor.time_date
        name: Текущее время и дата
      - entity: sensor.alarm_1_time_minus_offset
        icon: 'mdi:progress-clock'
        name: Время отложенного срабатывания
      - entity: sensor.alarm_1_time_minus_cover
        name: Время открытия шторы
      - entity: input_number.alarm_1_offset
        name: Отложить на
      - entity: input_number.alarm_1_cover
        name: Шторы
      - entity: input_boolean.alarm_1_weekday
        name: Рабочие дни
      - entity: input_boolean.alarm_1_weekend
        name: Выходные дни
      - entity: automation.wake_me_up_weekday_offset
        icon: 'mdi:calendar'
        name: Отложеное время в рабочие дни
      - entity: automation.wake_me_up_weekend_offset
        icon: 'mdi:calendar'
        name: Отложеное время в выходные дни

Как это работает

  • В указанное время срабатывает будильник.
  • Начинает проигрываться мелодия.
  • Ночник и светодиодная лента плавно включаются и добавляют яркость, цветопередача солнечного цвета.
  • Я люблю поваляться в стиле “еще 15 минут”, рукой толкаю куб Aqara, будильник откладывается на 15 минут.
  • Через 15 минут снова начинает проигрываться мелодия, плавно включается освещение, поднимается штора.
  • Я переворачиваю куб Aqara на 90°, будильник выключается, ночник и лента загораются на максимальной яркости. Home Assistant начинает доклад о погоде и дорожной обстановке, указывает время до работы на авто и время до ближайшего автобуса (интеграции Yandex карты и транспорт). Включается телевизор, отрабатывает скрипт, который включает на нем браузер и главную страничку HA.

Код будильника

#ДОБАВЛЯЕМ ЭЛЕМЕНТЫ ВВОД И УПРАВЛЕНИЯ
input_number:
    alarm_1_hour:
        name: Hours
        icon: mdi:timer
        initial: 7
        min: 0
        max: 23
        step: 1
    alarm_1_minutes:
        name: Minutes
        icon: mdi:timer
        initial: 15
        min: 0
        max: 59
        step: 1
    alarm_1_offset:
        name: Transition
        icon: mdi:blur-linear
        initial: 5
        min: 0
        max: 60
        step: 5
    alarm_1_cover:
        name: Transition
        icon: mdi:blur-linear
        initial: 15
        min: 0
        max: 60
        step: 5

#ПЕРЕКЛЮЧАТЕЛИ
input_boolean:
    alarm_1_weekday:
        name: Weekdays
        initial: off
        icon: mdi:calendar
    alarm_1_weekend:
        name: Weekends
        initial: off
        icon: mdi:calendar
    alarm_1_offset_boolen:
        name: Offset
        initial: off
        icon: mdi:timer

#СЕНСОРЫ ДЛЯ ПОДСЧЕТА ВРЕМЕНИ В ОТЛОЖЕННЫХ ФУНКЦИЯХ
sensor:
    - platform: template
      sensors:
         alarm_1_time:

              value_template: >-
                  {{ "%0.02d:%0.02d" | format(states("input_number.alarm_1_hour") | int, states("input_number.alarm_1_minutes") | int) }}

    - platform: template
      sensors:
         alarm_1_time_minus_offset:
              friendly_name: 'Offset Time'
              value_template: >-
                  {{ '%0.02d:%0.02d' | format( ((((states('input_number.alarm_1_hour') | int)*60   (states('input_number.alarm_1_minutes') | int)   (states('input_number.alarm_1_offset'))| int)/60)| int),(((((((((states('input_number.alarm_1_hour') | int)*60   (states('input_number.alarm_1_minutes') | int)   (states('input_number.alarm_1_offset')) | int)/60)) - ((((states('input_number.alarm_1_hour') | int)*60   (states('input_number.alarm_1_minutes') | int)   (states('input_number.alarm_1_offset')) | int)/60)| int))*100) | int)*60/100) | round) ) }}

    - platform: template
      sensors:
         alarm_1_time_minus_cover:
              friendly_name: 'Cover Time'
              value_template: >-
                  {{ '%0.02d:%0.02d' | format( ((((states('input_number.alarm_1_hour') | int)*60   (states('input_number.alarm_1_minutes') | int)   (states('input_number.alarm_1_cover'))| int)/60)| int),(((((((((states('input_number.alarm_1_hour') | int)*60   (states('input_number.alarm_1_minutes') | int)   (states('input_number.alarm_1_cover')) | int)/60)) - ((((states('input_number.alarm_1_hour') | int)*60   (states('input_number.alarm_1_minutes') | int)   (states('input_number.alarm_1_cover')) | int)/60)| int))*100) | int)*60/100) | round) ) }}
#for -#             {{ '%0.02d:%0.02d' | format( ((((states('input_number.alarm_1_hour') | int)*60   (states('input_number.alarm_1_minutes') | int) - (states('input_number.alarm_1_cover'))| int)/60)| int),(((((((((states('input_number.alarm_1_hour') | int)*60   (states('input_number.alarm_1_minutes') | int) - (states('input_number.alarm_1_cover')) | int)/60)) - ((((states('input_number.alarm_1_hour') | int)*60   (states('input_number.alarm_1_minutes') | int) - (states('input_number.alarm_1_cover')) | int)/60)| int))*100) | int)*60/100) | round) ) }}

#ГРУПИРОВКА ВЫКЛЮЧАТЕЛЯ "БУДИЛЬНИК"
group:
    alarm_1:
        name: Wake Me Up
        entities:
            - input_boolean.alarm_1_weekday
            - automation.wake_me_up_weekday_offset


#ВКЛЮЧЕНИЕ БУДИЛЬНИКА ПРИ ЗАПУСКЕ HA
automation:
  - id: 'startup_on_alarm_clock'
    alias: Включение будильника при запуске HA
    trigger:
      platform: homeassistant
      event: start
    condition:
      condition: time
      after: '09:00:00'
      before: '00:00:00'
    action:
      - delay: 0:01
      - service: script.yandex_tts_4

#ВКЛЮЧЕНИЕ КЛАВИШАМИ. ПРОСТО ЗВУКОВОЕ СООБЩЕНИЕ О ВКЛЮЧЕНИИ
  - id: 'on_alarm_clock'
    alias: "Включение будильника клавишей"  
    trigger:
      platform: state
      entity_id:
        - input_boolean.alarm_1_weekday
        - input_boolean.alarm_1_weekend
      to: 'on'
    action:
    - service: script.yandex_tts_2

#ВЫКЛЮЧЕНИЕ КЛАВИШАМИ. ПРОСТО ЗВУКОВОЕ СООБЩЕНИЕ О ВЫКЛЮЧЕНИИ
  - id: 'off_alarm_clock'
    alias: "Выключение будильника клавишей"  
    trigger:
      platform: state
      entity_id:
        - input_boolean.alarm_1_weekday
        - input_boolean.alarm_1_weekend
      to: 'off'
    action:
    - service: script.yandex_tts_3

#######################################
# Автоматизация для основного времени
#######################################
#ЗАПУСКАЕМ СКРИПТ БУДИЛЬНИКА.

  - id: 'alarm_1_weekday'
    alias: Wake me up (weekday)
    trigger:
    - platform: time_pattern
      minutes: "/1"
      seconds: 0
    condition:
    - condition: state
      entity_id: input_boolean.alarm_1_weekday
      state: 'on'
    - condition: time
      weekday:
      - mon
      - tue
      - wed
      - thu
      - fri
    - condition: template
      value_template: >-
        {{ now().strftime("%H:%M") == states.sensor.alarm_1_time.state }}
    action:
    - data: {}
      service: script.wakeup_sequence

#######################################
# Автоматизация для выходных
#######################################
#ЗАПУСКАЕМ СКРИПТ БУДИЛЬНИКА. 

 - id: 'alarm_1_weekend'
    alias: Wake me up (weekend)
    trigger:
    - platform: time_pattern
      minutes: "/1"
      seconds: 0
    condition:
    - condition: state
      entity_id: input_boolean.alarm_1_weekend
      state: 'on'
    - condition: time
      weekday:
      - sat
      - sun
    - condition: template
      value_template: >-
        {{ now().strftime("%H:%M") == states.sensor.alarm_1_time.state }}
    action:
    - data: {}
      service: script.wakeup_sequence 

#######################################
# Автоматизация для отложенного времени
#######################################
#ЗАПУСКАЕМ СКРИПТ БУДИЛЬНИКА ЕСЛИ ОТЛОЖИЛИ БУДИЛЬНИК. 

  - id: 'alarm_1_weekday_offset'
    alias: Wake me up (weekday_offset)
    trigger:
    - platform: time_pattern
      minutes: "/1"
      seconds: 0
    condition:
    - condition: state
      entity_id: input_boolean.alarm_1_weekday
      state: 'on'
    - condition: time
      weekday:
      - mon
      - tue
      - wed
      - thu
      - fri
    - condition: template
      value_template: >-
        {{ now().strftime("%H:%M") == states.sensor.alarm_1_time_minus_offset.state }}
    action:
    - data: {}
      service: script.wakeup_sequence

#######################################
# Автоматизация для отложенного времени в выходные
#######################################
#ЗАПУСКАЕМ СКРИПТ БУДИЛЬНИКА ЕСЛИ ОТЛОЖИЛИ БУДИЛЬНИК. 

  - id: 'alarm_1_weekend_offset'
    alias: Wake me up (weekend offset)
    trigger:
    - platform: time_pattern
      minutes: "/1"
      seconds: 0
    condition:
    - condition: state
      entity_id: input_boolean.alarm_1_weekend
      state: 'on'
    - condition: time
      weekday:
      - sat
      - sun
    - condition: template
      value_template: >-
        {{ now().strftime("%H:%M") == states.sensor.alarm_1_time_minus_offset.state }}
    action:
    - data: {}
      service: script.wakeup_sequence 

#######################################
# Автоматизация для Штор
#######################################
#ПОДНИМАЕМ ШТОРЫ ПО УКАЗАННОМУ ВРЕМЕНИ

  - id: 'alarm_1_weekday_cover'
    alias: Wake me up (weekday_cover)
    trigger:
    - platform: time_pattern
      minutes: "/1"
      seconds: 0
    condition:
    - condition: state
      entity_id: input_boolean.alarm_1_weekday
      state: 'on'
    - condition: time
      weekday:
      - mon
      - tue
      - wed
      - thu
      - fri
    - condition: template
      value_template: >-
        {{ now().strftime("%H:%M") == states.sensor.alarm_1_time_minus_cover.state }}
    action:
    - service: mqtt.publish
      data:
        topic: "cmnd/blind/Backlog"
        payload: "ShutterOpen1"

  - id: 'alarm_1_weekend_cover'
    alias: Wake me up (weekend cover)
    trigger:
    - platform: time_pattern
      minutes: "/1"
      seconds: 0
    condition:
    - condition: state
      entity_id: input_boolean.alarm_1_weekend
      state: 'on'
    - condition: time
      weekday:
      - sat
      - sun
    - condition: template
      value_template: >-
        {{ now().strftime("%H:%M") == states.sensor.alarm_1_time_minus_cover.state }}
    action:
    - service: mqtt.publish
      data:
        topic: "cmnd/blind/Backlog"
        payload: "ShutterOpen1"

#######################################
# СКРИПТ БУДИЛЬНИКА
#######################################
script:
#Срабатывает последовательно: выставляется оттенок цвета, яркость в 0.
  'wakeup_dim':
    alias: wakeup_dim
    sequence:
    - data:
        brightness: '0'
        entity_id:
        - light.walli
        rgb_color:
        - 255
        - 169
        - 92
      service: light.turn_on
    - data:
        brightness_pct: '0'
        entity_id:
        - light.eve
        rgb_color:
        - 255
        - 169
        - 92
        transition: '0'
      service: light.turn_on

#Срабатывает последовательно: постепенно включается освещение.

  'wakeup_bright':
    alias: wakeup_bright
    sequence:
    - data_template:
        brightness: '255'
        transition: '{{(states(''input_number.alarm_1_offset'') | int ) *60}}'
        entity_id:
        - light.eve
        - light.walli
        rgb_color:
        - 255
        - 169
        - 92
      service: light.turn_on

#Главный скрипт будильника
  'wakeup_sequence':
    alias: wakeup_sequence
    sequence:
    - data: {}
#сбрасываем параметры освещения
      service: script.wakeup_dim
    - delay: 00:00:02
#включаем плавное наращивание освещения
    - service: script.wakeup_bright
    - delay: '00:{{ states.input_number.alarm_1_offset.state | int }}:00'
    - data: {}
#включаем телевизор, выводим главную страницу HA
      service: script.tv_on_browser_morning
#Включение музыки на яндекс станции
      service: script.yandex_tts_1
# ИЛИ запуск проигрывания мелодии
#      service: script.play_wakeup_music
#в систему HA подгружена заранее собранная и настроенная мной мелодия. 
#Я выбрал медленную композицию Daft Punk, в звуковом редакторе установил плавное увеличение громкости для нее и экспортировал в mp3. 
#По сути HA просто воспроизводит mp3 через подключаемый addon https://github.com/bestlibre/hassio-addons/tree/master/mopidy

Включение телевизора

По итогу включения телевизора, стартует скрипт запуска главной страницы Home Assistant.

script:
  tv_on_browser:
    alias: ТВ. Включение и экран HA в браузере
    sequence:
#включаем ТВ
     - service: media_player.turn_on
        data:
          entity_id: media_player.samsung_tv_remote
#запускаем на ТВ браузер
      - service: media_player.play_media
        data:
          entity_id: media_player.samsung_tv_remote
          media_content_type: app
          media_content_id: org.tizen.browser
#открываем HA в браузере
      - service: media_player.play_media
        data:
          entity_id: media_player.samsung_tv_remote
          media_content_type: browser
          media_content_id: 'http://192.168.1.58:8123'

TTS YANDEX

script:
  yandex_tts_1:
    alias: YaStation_Запуск будильника
    sequence:
    - service: media_player.volume_set
      data:
        entity_id:
        - media_player.yandex_station
        volume_level: 0.1
    - delay: '00:00:01'
    - service: yandex_station.send_command
      data:
        entity_id: media_player.yandex_station
        command: sendText
        text: Включи фоновую музыку.
    - delay: '00:01:00'
    - service: media_player.volume_set
      data:
        entity_id:
        - media_player.yandex_station
        volume_level: 0.2
    - delay: '00:00:30'
    - service: media_player.volume_set
      data:
        entity_id:
        - media_player.yandex_station
        volume_level: 0.3
    - delay: '00:00:30'
    - service: media_player.volume_set
      data:
        entity_id:
        - media_player.yandex_station
        volume_level: 0.4


  yandex_tts_2:
    alias: YaStation_Включение будильника
    sequence:
    - service: media_player.volume_set
      data:
        entity_id:
        - media_player.yandex_station
        volume_level: 0.4
    - delay: '00:00:01'
    - service: media_player.play_media
      entity_id: media_player.yandex_station
      data:
        media_content_id: Включаю будильник на {{ states('sensor.alarm_1_time') }}
        media_content_type: text

  yandex_tts_3:
    alias: YaStation_Выключение будильника
    sequence:
    - service: media_player.volume_set
      data:
        entity_id:
        - media_player.yandex_station
        volume_level: 0.4
    - service: media_player.play_media
      entity_id: media_player.yandex_station
      data:
        media_content_id: Будильник выключен.
        media_content_type: text

Пример доклада через google_cloud_say

    - service: tts.google_cloud_say
      entity_id: media_player.mpd
      data_template:
        message: >
          Доброе утро.
          Сейчас {{states.sensor.time.state}}.
          В настоящее время {{states.sensor.dark_sky_summary.state}}, на улице сейчас {{states.sensor.dark_sky_temperature.state|round}} градусов.
          Сегодня вы можете ожидать {{states.sensor.dark_sky_hourly_summary.state}}.
          С высоким значением температуры в {{states.sensor.dark_sky_daytime_high_temperature_0d.state|round|int}} градусов и низким значением в {{states.sensor.dark_sky_overnight_low_temperature_0d.state|round|int}} градусов.
          До работы Лизы на автомобиле {{states.sensor.vremia_do_raboty_lizy.state}} минут, до работы Никиты {{states.sensor.vremia_do_raboty_nikity.state}} минут.
          {% if states.sensor.dark_sky_wind_speed.state|int > 10 %}
          Имейте ввиду, сегодня ветрено.
          {% endif %}

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

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

    Тоже года два назад этим игрался. Все тоже самое плюс новости озвучивал. Сейчас хватает утреннего шоу от Алисы. Триггеры рабочий день и присутствие в доме хоть одного человека. 

  2. (alexintras)
    (alexintras) месяц назад

    Можно подробнее про сервис "media_player.samsung_tv_remote" и вообще, как вы приручили Самсунг? Очень интересно!

  3. Сергей Рученин (rusev)
    Сергей Рученин (rusev) месяц назад

    Как добавить для штор и света зависимость от времени восхода солнца? Если летом к подъему светло, то зачем включать свет, а зимой шторы открывать только с рассветом.

    • Никита Романенко (dr3men)

      Проверять состояние солнца. В ha по умолчанию есть sun.sun объект, он показывает: над горизонтом, за горизонтом.

      запишите его в condition

  4. (palkin)
    (palkin) месяц назад

    У меня вообще не работает, скрипт  yandex_tts_4 в примере отсутствует, шаблоны в сенсорах не работают вообще. Общая идея ясна, но взять и настроить для себе сложнее чем написать заново!

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

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

Интернет-магазин yourhomekit.ru

+7 914 550-51-11
Промокод:
SPRUT-BLG
Размер скидки:
8%
Cамый большой ассортимент в России аксессуаров Apple HomeKit

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

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

17 декабря 2019, 17:49
Универсальный привод для автоматического удаленного открытия окон с простой интеграцией в умные дома.
15 ноября 2018, 09:42
Способы автоматизации механических ворот
25 сентября 2020, 11:49
Сенсорный монитор для управления умным домом. Настройка и использование.
20 октября 2018, 22:57
Теоретические основы протокола MQTT и описание того, как он работает и для чего используется
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
03 октября 2018, 22:03
Как собрать и настроить Hyperion Ambilight - адаптивную подсветку ТВ.
29 октября 2019, 07:59
Умный домофон на базе nodeMCU с прошивкой ESPHome.