Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Русский
  3. ioBroker
  4. Скрипты
  5. ioBroker скрипты
  6. Учим умный дом понимать голосовые команды и отвечать вам (Google Now)

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.7k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.2k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    3.1k

Учим умный дом понимать голосовые команды и отвечать вам (Google Now)

Geplant Angeheftet Gesperrt Verschoben ioBroker скрипты
12 Beiträge 8 Kommentatoren 6.1k Aufrufe 1 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • de_coderD Offline
    de_coderD Offline
    de_coder
    schrieb am zuletzt editiert von
    #1

    Учим умный дом понимать голосовые команды и отвечать вам (Google Now)

    Итак, давно хотел написать эту статью, думаю всем будет интересно "поговорить с своим умным домом", дать ему голосовую команду, и получить от него голосовой ответ.

    В данном случае мы будем это делать через Android планшет или смартфон. Коротко алгоритм действий будет такой:

    1. Перехватываем все команды "Ок гуггл" или просто по нажатию на "микрофон" гугла.

    2. Отправляем полученную команду к нам на сервер в iobroker

    3. Получаем обратно ответ, и проговариваем его средствами вашего телефона или Google.

    Для начала надо настроить сам Google Now на телефоне, что бы он реагировал на фразу Ok Goole … Делается это в приложении Google (если оно не установлено, ставим его из Play Market).

    В Google жмем настройки - Голосовой поиск ...

    Озвучивание результатов: Выключить

    Voice match: Включите и настройте.. там надо будет записать образец голоса и прочее...

    Теперь когда телефон реагирует на Ok Google, нам понадобиться перехватить Google Now команды. Для этого я лично использую приложение Automate или Tasker...В данной статье приведу пример с https://4pda.ru/forum/index.php?showtopic=638842.

    Ставим приложение на телефон, и пишем алгоритм, который будет ловить команды Google Now, и отправлять их в наш умный дом.

    • Запускаем Automate и создаем новую программу нажав кнопку +

    • Нажимаем в верхнем левом углу меню, и добавляем блоки: Google Now voice command, Failure catch, HTTP Request, Speak (2 блока).

    • Расставляем блоки согласно схеме которую вы видите ниже.

    ! 7563_screenshot_20180531-224930_automate.jpg

    Грубо говоря мы создали алгоритм, при котором…

    • Программа начинает работать

    • Ожидает команды Google Now (голосовой команды в гугл)

    • Передает данные на сервер

    • Если ошибка, мы сделаем что бы проговаривалось что то типа "Нет связи с сервером".

    • Если запрос был выполнен, то проговариваем ответ полученный от умного дома iobroker

    Теперь приступим к настройке блоков...

    Для начала настроим блок Google Now:

    Голосовая команда, которую мы поймаем, должна попадать в какую то переменную, поэтому нажимаем на блок, и в поле Output variables пишем command (такое будет у нас название переменной)… Жмем сохранить блок настроен.

    Основной блок который будет передавать данные это HTTP Request:

    REQUEST URL: Ссылка куда будет передаваться запрос... А передаваться он будет на ВАШ веб сервер созданный на iobroker (об этом подробно ниже...) у меня это мой домашний IP адрес и порт, на котором я запустил веб сервер ... мой ип адрес:8090 порт вы можете указать другой, т.к. он у вас может быть занят! Веб сервер тоже нужно будет запускать на другом порту… если в iobroker будут ошибки типа "

    REQUEST METHOD: тут указываем POST (будем передавать данные POST запросом)

    REQUEST CONTENT TYPE: указываем JSON (json данные мы будем передавать)

    REQUEST CONTENT: данные которые мы будем передавать а именно переменную command которую мы настроили в блоке Google Now. Но, мы же будем передавать json данные, так что пишем такое: {"cmd": command}

    Некоторые настройки пропускаем, либо настраиваем как вам удобно (это для спецов…)

    Обязательно включите функцию: Save to variable as text (На скриншотах я забыл её включить!)

    В самом низу, нам понадобятся… Output variables, нам же надо сохранить ответ от "умного дома" в какую то переменную...

    В поле Response content or filename - вводим название переменной, пусть она будет называться homeanswer, после жмем Done, настройка блока закончена.

    Теперь настраиваем блок Speak который будет вызван в случае ошибки (тот что справа).

    В поле MESSAGE вводим нашу ошибку "Ошибка связи с сервером"

    LANGUAGE: Русский

    ENGINE: Синтезатор речи Google

    AUDIO STREAM: Music

    Теперь настраиваем блок Speak который будет вызван, когда получен ответ от сервера (от умного дома)

    Настраиваем его так же как блок выше, только в поле MESSAGE нажимаем иконку fx справа и выбираем переменную homeanswer

    Этот блок будет проговаривать полученный от сервера умного дома ответ…

    ! 7563_screenshot_20180531-231958_automate.jpg 7563_screenshot_20180531-231927_automate.jpg 7563_screenshot_20180531-231717_automate.jpg

    Для того что бы ваша программа работала в automate вам надо предоставить ей необходимые права… см. скриншот. Права предоставляются дополнительными модулями automate которые ставятся на смартфон, не пугайтесь.

    ! 7563_screenshot_20180531-232338_automate1.jpg 7563_screenshot_20180531-231958_automate0.jpg

    –---------------------------------------

    Половина работы закончена, смартфон настроен, теперь будем писать сервер на iobroker и учить его отвечать нашему смартфону!

    Нам понадобится дополнительный модуль Javascript: querysting, его мы можем добавить в ручную, в настройках драйвера, см. скриншот.

    ! 7563_2018-05-31_23-46-50.png

    Код сервера… с комментариями. Надеюсь я написал понятно.

        // Принимаем команды от Google Now
        var http = require('http'); // Подключаем модуль http
        var querystring = require('querystring'); // Подключаем модуль querysting в настройках драйвера javascript
        var port = 8090;
        var s = http.createServer();
        s.listen(port);
    
        // Если поступил запрос
        s.on('request', function(request, response) {
            if(request.method == 'POST') {
                processPostData(request, response, function() {
                    // Расшифровываем JSON запрос, и если ошибка, то выводим её в лог iobroker
    				var data;
    				try {
     					data = JSON.parse(Object.keys(request.post)[0]);
     				}catch(e) {
    					console.log('Не удалось разобрать JSON');
    					console.error(e.name);
    					console.error(e.message);
         				console.error(e.stack);
         				return;
    					}
    
                    // Команда расшифрована, передаем её в функцию обработки...
                     do_voice_command(data, function(answer){
                        console.warn(answer); // Выводим в консоль ответ... 
                        response.writeHead(200, "OK", {'Content-Type': 'text/plain;charset=utf-8'});
                        response.end(answer);
                        });
                });
            } else {
                //console.log(JSON.stringify(request))
                response.writeHead(200, "OK", {'Content-Type': 'text/plain;charset=utf-8'});
                response.end("Принимаем только POST запросы", "UTF-8");
            }
        });
    
    // Основная функция обработки голосовых команд
    function do_voice_command(data, callback){
    
        // Для начала ответ равен ничему...
        var answer = '';
        var cmd = data.cmd.toLowerCase();
    
        console.warn("Команда = " + cmd);
    
        // что ты умеешь?
        if(cmd == 'что ты умеешь' || cmd == 'что ты умеешь?' || cmd == 'помощь' || cmd == 'команды' || cmd == 'список команд'){
            answer = 'Привет. Я помощник умный дом.' + "\n\n" + 'Я умею, контроллировать температуру, открывать закрывать шторы, управлять пылесосом начиная и завершая уборку, и многое другое. Просто назови команду, и я, исполню её.';
            callback(answer);
            }
    
        if(!answer.length){
            callback('Я не понимаю эту команду.');
            }
        }
    
    // Функция получения POST запроса
    function processPostData(request, response, callback) {
        var queryData = "";
        if(typeof callback !== 'function') return null;
    
        if(request.method == 'POST') {
            request.on('data', function(data) {
                queryData += data;
                if(queryData.length > 1e6) {
                    queryData = "";
                    response.writeHead(413, {'Content-Type': 'text/plain'}).end();
                    request.connection.destroy();
                }
            });
    
            request.on('end', function() {
                request.post = querystring.parse(queryData);
                callback();
            });
    
        } else {
            callback();
            response.writeHead(405, {'Content-Type': 'text/plain'});
            response.end();
        }
    }
    

    В логе iobroker вы увидите, команды которые поступают на сервер, и ответ вашего сервера… Допиливайте функцию do_voice_command по вашему желанию.

    Проверьте работает ли ваш сервер, просто перейдя по ссылке: http://адрес вашего сервера:8090

    Должна появиться надпись "Принимаем только POST запросы".

    Если у вас возникли вопросы, пишите, я постараюсь ответить. Так же я иногда обитаю в телеграмм канале: https://t.me/iobroker

    С Алисой от Yandex ситуация примерно та же, только вам необходимо будет создать навык, для алисы, протестировать его, опубликовать... И сервер будет уже немного сложнее, с HTTPS т.е. для яндекс обязательно защищенное соединение.

    1 Antwort Letzte Antwort
    0
    • O Offline
      O Offline
      OlegJktu
      schrieb am zuletzt editiert von
      #2

      спасибо, что отписались.

      1. Если делали и на таскере, можете пожалуйста поделиться.

      2. Я так понял что у вас есть Android TV бокс с пультом в котором микрофон. (у меня вот xiaomi бокс mdz18aa с неофициальным android tv).

      Там микрофон активно используется для поиска видео (youtube, hdvideobox и пр.) Даже работает открой программу X. Так сказать из коробки.

      Вопрос: вы использует Пульт android tv для голосового управления?

      Мне просто кажется, что ваша инструкция идеальна если вешать android планшет на стену в качестве терминала. Но кейс с Android TV хочется как-то решить с сохранением использования голосового поиска по от гугл по умолчанию. Тоесть нужна как-то различать, что вот эта голосовая команда серверу, а это для софта гугла в тв боксе.

      Если использует какое-то ui на android TV пожалуйста расскажите. Я сейчас экспериментирую с хабпанелью и браузером файрфокс тв (порт с амазоновских приставок).

      1. Хочу немного дополнить ваш пост для последующих читатетлей,

      В качестве автоматизатора на android (который будет ловить голосовые запросы и отправлять их серверу iobroker), можно использовать macrodroid (просто у меня automate так на боксе нормально и не завелся).

      В качестве выводов ответа с сервера на android можно использовать mpd, paw, kodi (драйвера на них в ioBroker есть).

      1 Antwort Letzte Antwort
      0
      • de_coderD Offline
        de_coderD Offline
        de_coder
        schrieb am zuletzt editiert von
        #3
        1. Пытался на tasker сделать http запрос, разбирался не долго, но суть там по идее та же… Не получилось, но только потому что сильно не заморачивался... надо разбираться с ним.

        2. Т.к. на приставке MIBOX3 стоит Android TV, то приложения Automate или Tasker не оптимизированы для телевизоров, и я не вижу в них основных функциональных клавиш управления, поэтому настроить webhook т.е. ловить Google Now команды, у меня не получилось (пока...) хотя идея голосового управления с пульта Mibox очень хорошая... и надо её делать.

        3. Голосовой поиск остается... т.е. телефон, выдает результаты поиска, что не очень хорошо, если вы сделаете то что написано в инструкции вы увидите, как этот webhook работает. Получается давая запрос, мы получаем выдачу Google + голосовой ответ от умного дома... Можно конечно добавить фразу, к примеру "Дом включи свет", если фраза Дом, есть, значит это команда для дома...

        1 Antwort Letzte Antwort
        0
        • A Offline
          A Offline
          andrey99986
          schrieb am zuletzt editiert von
          #4

          Возможно ли использовать связку микрофон+звуковая карта на сервере?

          По такому принципу может работать Alexa(Amazon) используя AlexaPi. Но там фиксированный набор команд.

          1 Antwort Letzte Antwort
          0
          • O Offline
            O Offline
            OlegJktu
            schrieb am zuletzt editiert von
            #5

            @andrey99986:

            Возможно ли использовать связку микрофон+звуковая карта на сервере?

            По такому принципу может работать Alexa(Amazon) используя AlexaPi. Но там фиксированный набор команд. `

            Здесь все таки частный случай разобран с android устройством. Это интересный пример если взять планшет на Android как терминал УД.

            Какая ОС у вас на сервер?

            Какое распознавание хотите (онлайн или оффлайн)?

            Какие языки интересуют?

            Потому что тупой ответ на ваш вопрос - поднимите на сервере виртуалку с android пробросьте туда звук и дальше по инструкции.

            1 Antwort Letzte Antwort
            0
            • de_coderD Offline
              de_coderD Offline
              de_coder
              schrieb am zuletzt editiert von
              #6

              Я реализовал ещё и навык для алисы от Yandex. Работает и в Windows с установленным Yandex браузер.

              Говорю сначала, "Слушай Алиса" потом "Запусти навык мой мега дом" потом команду… Работает.

              Но что бы сделать свой навык для Яндекс Алисы, надо поднимать свой сервер на https, т.к. она не работает по http протоколу...

              Подробнее как сделать навык, и прочую документацию на русском языке, вы можете почитать тут: https://tech.yandex.ru/dialogs/alice/?u ... ng_dialogs

              Если кто то займется и будет интересно, могу выложить код node js своего сервера https для алисы.

              K 1 Antwort Letzte Antwort
              0
              • F Offline
                F Offline
                fareek
                schrieb am zuletzt editiert von
                #7

                Добрый день. Помогите допилить функцию do_voice_command под мой дом. хотя бы на одном примере управления устройством включения и выключения. как описано в мануале все работает , а вот дальше (с моими никакими знаниями) никак.

                1 Antwort Letzte Antwort
                0
                • S Offline
                  S Offline
                  Sergey777
                  schrieb am zuletzt editiert von
                  #8

                  А в оффлайне будет работать? Вообще как-то гемора много с настройками. Хотелось бы какой-нибудь mqtt чтоли… Чтоб телефон в оффлайне мог распознать команду, и послать её исполнение по mqtt.

                  1 Antwort Letzte Antwort
                  0
                  • I Offline
                    I Offline
                    instalator
                    schrieb am zuletzt editiert von
                    #9

                    Зачем поднимать скриптами сервер если можно использовать simple api драйвер

                    Высокий уровень Децибел вреден для здоровья!

                    http://blog.instalator.ru/

                    1 Antwort Letzte Antwort
                    0
                    • I Offline
                      I Offline
                      instalator
                      schrieb am zuletzt editiert von
                      #10

                      @Sergey777:

                      А в оффлайне будет работать? Вообще как-то гемора много с настройками. Хотелось бы какой-нибудь mqtt чтоли… Чтоб телефон в оффлайне мог распознать команду, и послать её исполнение по mqtt. `
                      Tasker может и по mqtt слать данные.

                      Высокий уровень Децибел вреден для здоровья!

                      http://blog.instalator.ru/

                      1 Antwort Letzte Antwort
                      0
                      • A Offline
                        A Offline
                        andrey1509
                        schrieb am zuletzt editiert von andrey1509
                        #11

                        Здравствуйте de_coder. Делаю по вашей инструкции , при добавлении модуля Javascript: querysting начинают сыпаться ошибки
                        javascript.0 2019-04-16 08:49:41.344 error npm ERR! 404 Not Found - GET http://registry.npmjs.org/querysting - Not found
                        javascript.0 2019-04-16 08:49:41.320 error ERR! code E404
                        javascript.0 2019-04-16 08:49:41.318 error npm
                        или это не к вам а к разработчикам модуля.

                        1 Antwort Letzte Antwort
                        0
                        • de_coderD de_coder

                          Я реализовал ещё и навык для алисы от Yandex. Работает и в Windows с установленным Yandex браузер.

                          Говорю сначала, "Слушай Алиса" потом "Запусти навык мой мега дом" потом команду… Работает.

                          Но что бы сделать свой навык для Яндекс Алисы, надо поднимать свой сервер на https, т.к. она не работает по http протоколу...

                          Подробнее как сделать навык, и прочую документацию на русском языке, вы можете почитать тут: https://tech.yandex.ru/dialogs/alice/?u ... ng_dialogs

                          Если кто то займется и будет интересно, могу выложить код node js своего сервера https для алисы.

                          K Offline
                          K Offline
                          kiivsh
                          schrieb am zuletzt editiert von
                          #12

                          @de_coder
                          Здравствуйте. Большое спасибо за статью.
                          Реализовал у себя. Все работает отлично. Но кричать окей гугл очень не нравится.
                          Хочется обращаться к Алисе.
                          Выложите код сервера для алисы пожалуйста. Нуи по-больше инструкций(вроде поднять https сервера для нее) если можно.

                          Заранее благодарю.

                          1 Antwort Letzte Antwort
                          0
                          Antworten
                          • In einem neuen Thema antworten
                          Anmelden zum Antworten
                          • Älteste zuerst
                          • Neuste zuerst
                          • Meiste Stimmen


                          Support us

                          ioBroker
                          Community Adapters
                          Donate

                          892

                          Online

                          32.4k

                          Benutzer

                          81.5k

                          Themen

                          1.3m

                          Beiträge
                          Community
                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                          ioBroker Community 2014-2025
                          logo
                          • Anmelden

                          • Du hast noch kein Konto? Registrieren

                          • Anmelden oder registrieren, um zu suchen
                          • Erster Beitrag
                            Letzter Beitrag
                          0
                          • Home
                          • Aktuell
                          • Tags
                          • Ungelesen 0
                          • Kategorien
                          • Unreplied
                          • Beliebt
                          • GitHub
                          • Docu
                          • Hilfe