Статья

Научим умный дом разговаривать

Хотите, чтобы ваш умный дом будил вас по утрам? Или встречал на входе? Или сообщал о важных событиях? Теперь это легко сделать. На любом языке. Потребуется лишь устройство с android. Причём подойдет абсолютно любой, даже убитый в хлам старенький телефон/планшет, т.к. все работает даже на 4.0 версии. И все это совершенно бесплатно. 

Подготовка

Для начала необходимо сделать три простых шага:

Устанавливаем на устройство маленькое приложение-сервис: Remote Speak
Нажимаем на токен, он копируется в буфер обмена. 
Передаем токен каким-либо способом к себе на компьютер (через почту, мессенджеры, сеть или другим способом). 

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

Реализация

Теперь, достаточно отправить через google api сообщение с указанием этого токена, и оно будет прочитано вслух, если устройство подключено к интернету. Сделать это можно множество способов, вот некоторые из них:

Из консоли:

curl -s "https://fcm.googleapis.com/fcm/send" -H "Authorization: key=AIzaSyCau_csJXUd5RFFjdKGKH6h9Tvaz4sLj5Y" -H "Content-Type: application/json" -d '{"to": "%TOKEN%", "priority" : "high", "data": {"lang": "%LOCALE%", "msg": "%TEXT%"}}'

  • %TOKEN% это ваш сохраненный ранее токен.
  • %LOCALE% это стандартная локаль, например ru-RU или en-US или любая другая. От этого зависит, на каком языке будет прочитано сообщение.
  • %TEXT% это само сообщение.

Fibaro

local TOKEN = 'Ваш токен'; local LANG = 'ru-RU'; local MSG = 'Проверка'; jsonTable = { to = TOKEN, priority = high, data = }; jsonString = json.encode(jsonTable); local http = net.HTTPClient(); http : request('https://fcm.googleapis.com/fcm/send', { options = { method = "POST", headers = { ['Authorization'] = 'key=AIzaSyCau_csJXUd5RFFjdKGKH6h9Tvaz4sLj5Y', ['Content-Type'] = 'application/json' }, data = jsonString }, success = function(response) fibaro:debug (response.data) end, error = function(err) fibaro:debug ("Error:".. err) end });

Homey

Если у вас есть Homey, то все еще проще - устанавливаете плагин Remote Speak

Добавляете токены ваших устройств (любое количество), называете их как удобно:

и используете при создании Flow:

Другой контроллер

Если у вас другой контроллер, скорее всего он тоже поддерживает скрипты, и может отправлять данные в формате json.

Написание примеров и плагинов приветствуется, вы можете прислать их мне на почту admin@makesimple.org и они будут добавлены в статью.


Благодарю за труды, завтра опробуем ))))

@sprut Нужна поддержка хэштегов в этой платформе: Например для этой статьи - #homey #tts #android

Очень интересное направление! Интересует интеграция с колобком. Но хотелось чтобы говорили не устройства на андроиде, а сам колобок. Например, я вижу такой кейс: Утро, включилась например музыка (работает через плагин радио успешно), далее выключается музыка произносится курсы валют (не знаю как реализовать) затем включается музыка минут на 10, потом проговариваются новости (идеально было бы получать новости от определенных источников. Реализовал только на телефоне программой команды.) и тд. Вопрос именно в проговаривании каждый раз изменяющегося контента. Стандартные записанные фразы нормально работают и с саундбаром. В мыслях каким либо образом записывать m3u файлы например к себе на сервер/компьютер а дальше воспроизводить на колобке. Но какой инструмент использовать для создания голосовых файлов из текста пока не нашел.

Добрый день, очень хорошая задумка, но почему-то не работает
В Fibaro выдает такую ошибку: [DEBUG] 15:55:04: Error: Bad file descriptor

Еще раз попробуй с новой ссылкой. Если не заработает, то это уже фибаро виноват.

Похоже, гугл все сломал, теперь вместо GCM используется FCM, надо будет разобраться как отправлять новым способом.

А реально-ли это сделать на Raspberry? Например при открытии двери проигрывался рингтон или оповещение голосом.

Да, просто отправлять команду через curl

А можно подробнее об этом?

В статье описано в разделе "Из консоли". Подробнее некуда, настроек никаких нет, нужен лишь curl который на малине наверняка уже есть.

Я имел ввиду воспроизводить звук на самой малине, подключив к ней динамики.

Это возможно, но никакого отношения к этой программе не имеет, т.к. там нет андроида.

Готовых решений не знаю, это не ко мне.

Оказывается, нужно заменить "gcm-http.googleapis.com/gcm" на "fcm.googleapis.com/fcm" и все снова будет работать.

Поправил ссылки в статье.


Вернуться назад

Устройства


Athom Homey

Homey

(6 отзывов)

Вернуться назад