Здравствуйте, уважаемые читатели моего блога!

Новогодние праздники – время, когда не особо хочется работать, поэтому эта заметка не будет посвящена администрированию – сегодня я хочу рассказать о возможностях Home Assistant для развлечения детей (у меня два ребёнка – дочери 8 лет, а сыну 2,5 года).

Для работы игр требуется интеграция yandex station (ссылка).

Игра “Монстры”

Как-то раз я остался с сыном, и он предложил мне сыграть в “монстров”. Суть игры проста, мы вооружаемся кто чем и ходим по квартире. В случайный момент времени сын кричит: “Папа, монстры на стуле (машинке, диване и т.п.)!” Мы бежим к ним и начинаем их бить. Стоит ли рассказывать, что после 50 итераций данного цикла я начал уставать 🙂

Внезапно я подумал – а почему бы не поручить задачу придумывания мест с монстрами Алисе, да ещё разбавить это дело разными заданиями – например, топать, кричать, прятаться под одеялом и т.п.

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

Описание скрипта “Монстры”:

Сначала я даю команду на колонку с Алисой включить страшную музыку. Далее выключается свет в доме и включается цветная лампа красным светом в зале (для создания атмосферы).

В переменных я храню список заданий игры и запускаю цикл с 8 проходами (в одной игре 8 заданий). Задания выбираются случайным образом из списка, после чего задание со списка удаляется (чтобы не было повтора).

Алиса озвучивает выбранное задание. Если задание связано с комнатой, свет в ней начинает моргать (идёт время, когда выполняется задание). Как время закончится, Алиса говорит “Монстры исчезли” и даётся пауза на перерыв. В конце игры Алиса говорит, что монстры побеждены :-).

Содержание скрипта “Монстры”:

 alias: Монстры
sequence:
  - action: yandex_station.send_command
    metadata: {}
    data:
      text: Включи страшную музыку
    target:
      entity_id: media_player.yandex_station_lg0000000000005799740000a35cd516
  - action: switch.turn_off
    metadata: {}
    data: {}
    target:
      entity_id:
        - switch.sonoff_1001454b56
        - switch.sonoff_100125e71c
        - switch.sonoff_100125e709
        - switch.sonoff_100159be1c
        - switch.sonoff_1001fb13de
        - switch.sonoff_100124ec32
  - action: light.turn_on
    metadata: {}
    data:
      rgb_color:
        - 255
        - 0
        - 0
      brightness_pct: 100
    target:
      entity_id: light.sonoff_10017f9816
  - delay:
      seconds: 5
  - variables:
      actions_list:
        - message: Внимание, монстры в Вариной комнате на кровати!
          switch: switch.sonoff_1001454b56
        - message: Внимание, монстры в зале на диване!
          switch: switch.sonoff_100125e709
        - message: Внимание, убегайте под одеяло! Монстры ищут Вас!
          switch: switch.sonoff_100125e71c
        - message: Внимание, монстры в ванной, держите дверь закрытой!
          switch: switch.sonoff_100159be1c
        - message: Внимание, монстры на кухне на табуретке!
          switch: switch.sonoff_1001fb13de
        - message: Внимание, монстры на кухне на собаке Сергея!
          switch: switch.sonoff_1001fb13de
        - message: Внимание! Монстры идут с улицы. Бейте входную дверь.
          switch: switch.sonoff_100159be1c
        - message: Внимание, монстры в зале на кресле!
          switch: switch.sonoff_100125e709
        - message: Внимание, монстры в зале на машинке Сережи!
          switch: switch.sonoff_100125e709
        - message: Внимание, монстры под ёлочкой!
          switch: switch.sonoff_100125e709
        - message: Внимание, монстры на стульчике Сережи!
          switch: switch.sonoff_100125e709
        - message: Внимание, монстры на горшке Сережи!
          switch: switch.sonoff_100125e709
        - message: Внимание, убегайте прячьтесь в ванной! Монстры ищут Вас!
          switch: switch.sonoff_100124ec32
        - message: Внимание, залазьте на диван! Монстры превратили всё в лаву!
          switch: switch.sonoff_100125e709
        - message: >-
            Внимание, не разговаривайте! Кто скажет хоть одно слово тот станет
            хрюшкой на 10 секунд!
          switch: None
        - message: Внимание, громко кричите, чтобы напугать монстров!
          switch: None
        - message: Внимание, не двигайтесь! А не то монстры откусят вам попу!
          switch: None
        - message: >-
            Внимание, громко хлопайте в ладошки чтобы монстры не откусили Вам
            ручки!
          switch: None
        - message: Внимание, обзывайте монстров, чтобы они расстроились!
          switch: None
        - message: Внимание, прыгайте, чтобы монстры вас не схватили!
          switch: None
        - message: Внимание, закройте глаза, чтобы монстры не скушали ваши глаза!
          switch: None
        - message: Внимание, спрячьте ушки, чтобы монстры не откусили Вам их!
          switch: None
        - message: Внимание, гавкайте, как собаки чтобы испугать монстров!
          switch: None
        - message: Внимание, топайте ногами чтобы испугать монстров!
          switch: None
        - message: Внимание, хрюкайте как поросята, чтобы монстры вас не узнали!
          switch: None
        - message: >-
            Внимание, ложитесь на пол и не двигайтесь, чтобы монстры вас не
            заметили!
          switch: None
        - message: >-
            Внимание, ползайте на четвереньках и мяукайте, чтобы монстры думали,
            что вы котята!
          switch: None
  - repeat:
      count: 8
      sequence:
        - variables:
            chosen: "{{ actions_list | random }}"
            actions_list: "{{ actions_list | reject('equalto', chosen) | list }}"
        - choose:
            - conditions:
                - condition: template
                  value_template: "{{ chosen.message is not none }}"
              sequence:
                - action: tts.cloud_say
                  metadata: {}
                  data:
                    cache: false
                    entity_id: >-
                      media_player.yandex_station_lg0000000000005799740000a35cd516
                    message: "{{ chosen.message }}"
        - repeat:
            count: 8
            sequence:
              - action: switch.toggle
                metadata: {}
                data: {}
                target:
                  entity_id: "{{ chosen.switch }}"
              - delay:
                  hours: 0
                  minutes: 0
                  seconds: 3
                  milliseconds: 0
        - action: tts.cloud_say
          metadata: {}
          data:
            cache: false
            entity_id: media_player.yandex_station_lg0000000000005799740000a35cd516
            message: Монстры исчезли!
        - action: switch.turn_on
          metadata: {}
          data: {}
          target:
            entity_id:
              - switch.sonoff_1001454b56
              - switch.sonoff_100125e71c
              - switch.sonoff_100125e709
              - switch.sonoff_100159be1c
              - switch.sonoff_1001fb13de
        - delay:
            hours: 0
            minutes: 0
            seconds: 7
            milliseconds: 0
  - action: yandex_station.send_command
    metadata: {}
    data:
      text: Выключи музыку
    target:
      entity_id: media_player.yandex_station_lg0000000000005799740000a35cd516
  - delay:
      hours: 0
      minutes: 0
      seconds: 4
      milliseconds: 0
  - type: turn_off
    device_id: 45f6308fb233729ab5d91d31c2dfe74d
    entity_id: 1ed0217d406ae71d3b68933deb5ec619
    domain: light
  - action: switch.turn_on
    metadata: {}
    data: {}
    target:
      entity_id: switch.sonoff_100125e709
  - action: tts.cloud_say
    metadata: {}
    data:
      cache: false
      entity_id: media_player.yandex_station_lg0000000000005799740000a35cd516
      message: ВЫ победили монстров. Они проиграли! Ура!!!
  - delay:
      hours: 0
      minutes: 0
      seconds: 4
      milliseconds: 0
  - action: yandex_station.send_command
    metadata: {}
    data:
      text: "Выключи музыку We are the champions my friend "
    target:
      entity_id: media_player.yandex_station_lg0000000000005799740000a35cd516
description: ""

Игра “Пол-лава”

Эту игру предложила автоматизировать дочка. “Пол-лава” – это стандартная простая игра, в которой в случайный момент времени объявляется, что пол – это лава. Дети должны залезть на какую-то возвышенность (диван, стул, кровать). Кто не успел, тот проиграл. Нет, ну я уверен, что все знают эту игру.

Описание скрипта “Пол-лава”:

С помощью Алисы запускается веселая детская музыка. Далее идёт бесконечный цикл в котором в случайном образе выбирается временной интервал от 8 до 15 секунд, после чего включается красная лампа и Алиса объявляет, что пол – это лава, считает до трёх и говорит – кто не успел, тот проиграл. Далее лампа выключается, берется небольшая пауза и всё повторяется по кругу.

Содержание скрипта “Пол-лава”:

alias: Пол это лава
sequence:
  - action: yandex_station.send_command
    metadata: {}
    data:
      text: Включи веселую детскую музыку без слов
    target:
      entity_id: media_player.yandex_station_lg0000000000005799740000a35cd516
  - repeat:
      while:
        - condition: template
          value_template: "{{ true }}"
      sequence:
        - delay:
            seconds: "{{ range(8,15)|random }}"
        - action: light.turn_on
          metadata: {}
          data:
            rgb_color:
              - 255
              - 0
              - 0
            brightness_pct: 100
          target:
            entity_id: light.sonoff_10017f9816
        - action: tts.cloud_say
          metadata: {}
          data:
            cache: false
            entity_id: media_player.yandex_station_lg0000000000005799740000a35cd516
            message: >-
              Пол это лава. Раз, два, три! Кто не успел тот проиграл! Бегаем и
              веселимся!
        - delay:
            hours: 0
            minutes: 0
            seconds: 4
            milliseconds: 0
        - action: light.turn_off
          metadata: {}
          data: {}
          target:
            entity_id: light.sonoff_10017f9816
mode: restart
description: ""

Игра “Найди цвет”

Эту игру также предложила дочка. Суть игры понятна из названия, Алиса объявляет случайный цвет, а задача детей найти его в комнате и показать. На это даётся 10 секунд. На самом деле, игра опасная 🙂 и вызывает конфликты, когда сын пытается отжать цвет у сестры или вообще ничего не находит.

Описание скрипта “Найди цвет”:

Принцип подхода такой же, как и в “Пол-лава”. Алиса включает музыку, далее в случайный момент времени объявляется случайный цвет и даётся время на его поиск. По окончании отведенного промежутка времени Алиса объявляет, что кто не нашёл нужный цвет, тот проиграл. Сын начинает психовать, дочь на него кричать, и так по кругу (это не баг, это фича).

Содержание скрипта “Найди цвет”:

alias: Назови случайный цвет
sequence:
  - action: yandex_station.send_command
    metadata: {}
    data:
      text: Включи весёлую детскую музыку без слов, не называя названия музыки
    target:
      entity_id: media_player.yandex_station_lg0000000000005799740000a35cd516
  - repeat:
      while:
        - condition: template
          value_template: "{{ true }}"
      sequence:
        - delay:
            seconds: "{{ range(8, 15)|random }}"
        - data:
            entity_id: media_player.yandex_station_lg0000000000005799740000a35cd516
            message: >
              {% set colors = ['красный', 'синий', 'зелёный', 'жёлтый',
              'оранжевый', 'фиолетовый', 'розовый', 'чёрный', 'белый',
              'коричневый'] %} Найдите {{ colors | random }}, раз, два, три,
              четыре, пять, шесть, семь, восемь, девять, десять! кто не нашел,
              тот проиграл! веселимся дальше!
          action: tts.cloud_say
        - delay:
            hours: 0
            minutes: 0
            seconds: 10
            milliseconds: 0
mode: restart
description: ""

Вот так весело проходили мои праздники с семьёй 🙂

Всем хорошего времени суток и до новых встреч!

Александр Марухин
sandro331k@yandex.ru

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *