Здравствуйте, уважаемые читатели моего блога!
Новогодние праздники – время, когда не особо хочется работать, поэтому эта заметка не будет посвящена администрированию – сегодня я хочу рассказать о возможностях 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: ""
Вот так весело проходили мои праздники с семьёй 🙂
Всем хорошего времени суток и до новых встреч!