PDA

Просмотр полной версии : Звуковое оповещение/сообщение



Smith2007
12.11.2014, 06:54
Имеется ПЛК110-30, который управляет сбором данных с нескольких датчиков в доме и управляет несложными процессами.
Как можно организовать звуковое оповещение о каком либо событии?
Как правильнее это реализовать?
Сообщения различные и часть из них нужно прочесть из текстового файла.

Lode Runner
12.11.2014, 07:13
Любой звонок или гудок повесьте на DIN-рейку рядом с контроллером и подключите к его дискретным выходам. Кроме того, в конфигурации ПЛК110 есть элемент Special output с адресом %QX5.0, который управляет встроенной пищалкой контроллера. Но она тихая :)

capzap
12.11.2014, 08:59
Lode Runner не смущает фраза
Сообщения различные и часть из них нужно прочесть из текстового файлана плк это не реализовать, нужен обычный ПК

Smith2007
12.11.2014, 10:18
Любой звонок или гудок повесьте на DIN-рейку рядом с контроллером и подключите к его дискретным выходам. Кроме того, в конфигурации ПЛК110 есть элемент Special output с адресом %QX5.0, который управляет встроенной пищалкой контроллера. Но она тихая :)

Конечно как крайний вариант это можно использовать. Но мне хочется реализовать более гибкую систему.
Поясню...

В доме реализуется два режима:
1. Нормальный
2. Сон

В режиме "Сон" включаются алгоритмы охраны и повышенной безопасности. В том числе производится управление воротами, и пр. элементами.
Переключение режимов ручное и автоматическое. Автоматическое настроено по времени (ночное время). Т.е. при достижении определенного времени включается режим сон. Прервать режим сна можно в любой момент подав соответствующую команду.
При этом возникает вероятность появления следующего события:
Время близкое к режиму "Сон". Гаражные ворота открыты (лето). Выхожу из дома (не важно за чем... мусор вынести). Вышел и в это время наступил момент переключения режимов. Ворота закрылись, я на улице, мобильника с собой нет, пульта управления воротами тоже нет.

Хочу добавить голосовое оповещение перед переключением режима:
"Через 5 минут переход в режим сна"
"Внимание! До перехода в режим сна осталось [5,3,1] минута"

Такое сообщение, наряду с мигающей сигнальной лампой сведет вероятность остаться на улице к минимуму.
Так вот для реализации данного сервиса обязательным является наличие синтезатора речи. Один такой я вроде нашел: festival (opensouce)
Но возможно я пытаюсь велосипед изобрести и все уже давно придумано.
Еще один из способов - задействовать функционал ip-атс (asterisk pbx) которая тек же имеет что-от близкое к решению задачи.
зы. Ну есть еще идеи но о них позже.

приборист
12.11.2014, 10:49
Smith2007 (http://www.owen.ru/forum/member.php?u=47838)
Интересная забава, он на всю улицу в мегафон вещать будет, что осталась 5 минут?)
А если вышел, соседа увидел, разговорился и забыл?))

Николаев Андрей
12.11.2014, 10:49
http://www.luxurysystems.ru/catalog/luxs/server-golosovyix-soobshhenij-luxs-mps340r.html

capzap
12.11.2014, 10:57
кто так дома делает, нельзя что ли одну из дверей на отпечаток пальца "посадить"

Smith2007
12.11.2014, 10:57
Smith2007 (http://www.owen.ru/forum/member.php?u=47838)
Интересная забава, он на всю улицу в мегафон вещать будет, что осталась 5 минут?)
А если вышел, соседа увидел, разговорился и забыл?))

Мы говорим о снижении вероятности оказаться в подобной ситуации.
В мегафон на всю улицу ничего вещать не нужно. Достаточно в гараже (в доме) недалеко от ворот установить динамик (потолочный например). Таким образом если я буду выходить из помещения я вспомню, что не помещает взять с собой брелок. В дополнение - сигнальная лампа (не услышу так увижу).
Т.е. это снизит вероятность данного события.

Smith2007
12.11.2014, 11:02
http://www.luxurysystems.ru/catalog/luxs/server-golosovyix-soobshhenij-luxs-mps340r.html

Цена: 11400 руб

Это не тот вариант.
1. Цена совершенно не адекватна
2. Ни какой гибкости. А как мне на 2-ом этаже сказать "Доброе утро!" :)

Реализовать функционал данного прибора можно куда более простыми средствами. Я о синтезе речи. (В будущем о распознавании)

Николаев Андрей
12.11.2014, 11:15
Можно.
Есть поримеры на Arduino (знакомый развлекался).
Вопрос как всегда прост - если хочется развлекаться самому и есть время - конечно дорого. Если надо поставить и забыть - то норм.

Lode Runner
12.11.2014, 11:40
Точно, нужны голосовые оповещения, пропустил слово. Они же быстро надоедают, хоть и создают вау-эффект поначалу. Давно уже не слышно было "Осторожно, моя машина едет назад", например. Я бы предложил подавать столько звонков, сколько минут осталось. Максимальная концентрация информации на секунду времени.

Smith2007
12.11.2014, 11:40
Возможно существует какой-то шлюз asterisk - modbus
или modbus - openhub - festival
или modbus - openhub - asterisk
или что-то более простое.

petera
12.11.2014, 12:38
Попадалось мне вот такое ПР
15150
Есть возможность использовать речевой модуль на 98 заранее наговоренных речевых сообщений, общая длина сообщений до 16 мин.
Модуль выводит сообщения или на встроенный динамик или на внешний или звонит на обычные телефоны и удаленно передает сообщения
Фрагмент программы
15151 15152

Через этот модуль можно даже управлять объектом удаленно с обычного телефона :)

Вольд
12.11.2014, 13:33
И сколько стоит эта штука ?

petera
12.11.2014, 14:22
И сколько стоит эта штука ?
Речевой модуль 149 $
Руководство http://www.sensorlink.ru/pdf/ref_MUL.pdf
ПРки от 93$ до 156$ http://megaheap-auto.ru/g4161073-plk-array-serii
Или здесь
15154

capzap
12.11.2014, 14:38
господа, хватит футуризмом заниматься, системник персонального компьютера в формате microITX стоит дешево, в умном доме плк должен быть в роли управляющего исполнительными механизмами, его вобще можно заменить на модули. А на ПК и вся логика и звуковые файлы какиехош и часы стабильно работающие, а значит будут следить за расписанием и визуализация на любое устройство. Все эти фестивали и гугл спичи, предназначены не для плк, а для PC совместимых устройств

Smith2007
12.11.2014, 15:47
Постепенно прихожу к выводу, что целесообразно возложить функции оповещения на ip-атс (asterisk pbx). В таком случае я легко смогу смаршрутизировать сообщение на любое устройство. В предложенных выше вариантах необходимо не достает гибкости, хотя и выше надежность решения (как мне кажется)

Smith2007
12.11.2014, 16:11
господа, хватит футуризмом заниматься, системник персонального компьютера в формате microITX стоит дешево, в умном доме плк должен быть в роли управляющего исполнительными механизмами, его вобще можно заменить на модули. А на ПК и вся логика и звуковые файлы какиехош и часы стабильно работающие, а значит будут следить за расписанием и визуализация на любое устройство. Все эти фестивали и гугл спичи, предназначены не для плк, а для PC совместимых устройств

Склоняюсь к такому варианту. Тем более, что системник покупать не нужно. Он уже имеется 24/7 с низким энергопотреблением. На нем же ip-атс и openhab (в тесте).

Smith2007
19.11.2014, 10:46
Как уже писал выше - связка ПЛК110 с openhab позволила посмотреть на возможности "Немного умного дома" с другой стороны.
Используя синтез и распознавание речи (я экспериментирую с google сервисами) удалось добиться приемлемого результата. Теперь события, зарегистрированные на ПЛК могут быть озвучены синтезированным голосом.
Дальнейшее продвижение в сторону распознавания речи.
Постепенно становится возможным обучить систему взаимодействовать с пользователями (с жильцами дома) голосовыми командами.
В качестве "ушей" и "голосов" сейчас используются разные ПК с установленными SIP клиентами, колонками и микрофонами. В дальнейшем думаю испытать связку: Raspberry pi + потолочный динамик и usb микрофон (возможно с веб-камерой). Поскольку конструкция будет небольшой - возможно крепить вместе с динамиками под фальш-потолком.

Поднял asterisk, установил клиенты на компы и smart tv. В результате получил дополнительные точки взаимодействия с пользователями (в том числе sip телефоны).

Вольд
19.11.2014, 10:57
Как уже писал выше - связка ПЛК110 с openhab позволила посмотреть на возможности "Немного умного дома" с другой стороны.
Используя синтез и распознавание речи (я экспериментирую с google сервисами) удалось добиться приемлемого результата. Теперь события, зарегистрированные на ПЛК могут быть озвучены синтезированным голосом.
Дальнейшее продвижение в сторону распознавания речи.
Постепенно становится возможным обучить систему взаимодействовать с пользователями (с жильцами дома) голосовыми командами.
В качестве "ушей" и "голосов" сейчас используются разные ПК с установленными SIP клиентами, колонками и микрофонами. В дальнейшем думаю испытать связку: Raspberry pi + потолочный динамик и usb микрофон (возможно с веб-камерой). Поскольку конструкция будет небольшой - возможно крепить вместе с динамиками под фальш-потолком.

Поднял asterisk, установил клиенты на компы и smart tv. В результате получил дополнительные точки взаимодействия с пользователями (в том числе sip телефоны).
Dies ist fantastisch ! О какие орлы на форуме "ОВЕН".

petera
19.11.2014, 11:03
Dies ist fantastisch !
Неправильно, правильно будет "Das ist fantastisch".:)

Smith2007
19.11.2014, 12:21
По началу, когда читал статью о распознавании и синтеза голоса не придал этому значения. И тут я какой-то фильм фантастический смотрю, где ИИ корабля объявляет "Через 30 секунд произойдет ..... и т.д.". И тут меня осенило! А почему я не использую голосовой интерфейс для управления? Еще жена подлила масла.... Решила в ванную сходить в 2 часа ночи (как детишек уложила спать), а тут дом перешел в дежурный режим и после 100 литров расхода воды назвал это событие "Подозрительным расходом воды" и перекрыл подачу воды в дом :) После этого я много узнал о себе нового :)
Объяснять ей, что надо было кнопку нажать или на телефоне кнопку жмакнуть - не смог. Вот и подумал.... ну пусть побеседуют и придут к компромиссному варианту :D

petera
19.11.2014, 13:26
По началу, когда читал статью о распознавании и синтеза голоса не придал этому значения. И тут я какой-то фильм фантастический смотрю, где ИИ корабля объявляет "Через 30 секунд произойдет ..... и т.д.". И тут меня осенило! А почему я не использую голосовой интерфейс для управления? Еще жена подлила масла.... Решила в ванную сходить в 2 часа ночи (как детишек уложила спать), а тут дом перешел в дежурный режим и после 100 литров расхода воды назвал это событие "Подозрительным расходом воды" и перекрыл подачу воды в дом :) После этого я много узнал о себе нового :)
Объяснять ей, что надо было кнопку нажать или на телефоне кнопку жмакнуть - не смог. Вот и подумал.... ну пусть побеседуют и придут к компромиссному варианту :D
http://www.owen.ru/forum/attachment.php?attachmentid=15311&d=1416393760

Smith2007
18.01.2015, 12:01
Получаю данные с контроллера по modbus tcp на openhab. Openhab по ssh выполняет на удаленном оповещаетеле (RPi) скрипт синтеза речи на основе сервиса гугла.
Два эксперимента.

http://youtu.be/gkgJD_u0h64?list=UUnWgZfabDdXdmq2RZO5LnYg


http://youtu.be/L_8_F-Z8sPk

Smith2007
16.10.2016, 22:47
Прошло больше года как начал использовать синтезированную речь.
Сообщений не много. Одна группа сообщений связана с безопасностью. Вторая с авариями в инженерных сетях дома.
От синтезатора гугла отказался и перешел на яндекс.
Синтез происходит следующим образом:
При появлении события, которое необходимо озвучить ПЛК передает информацию на OpenHAB (по modbus TCP).
OH в свою очередь формирует текстовую строку в зависимости от кода события и вызывает php скрипт.
php формирует запрос к Яндексу на синтез. Полученный синтезированный речевой файл передает на asterisk, который воспроизводит его используя функцию интеркома на групповой номер. В группу номеров подключены все имеющиеся телефоны.


<!--?php




################################################## #
# Ubuntu 16.04/ PHP7
#
# Скрипт получает на входе текстовую строку,
# синтезирует из нее речевой аудиофайл,
# копирует полученный файл на сервер asterisk
# подключается к asterisk ami и воспроизводит файл/
#
# Для работы скрипта требуется установить php-ssh2
#
# sudo apt-get update
# sudo apt-get install php-ssh2
# Сервер на котором запускается php и сервер
# asterisk - на разных ip
################################################## #


# --- Входные переменные ---
$speaker = $_REQUEST['speaker']; // Голоса: Женские - jane, oksana, alyss omazh, Мужские - zahar, ermil
$emotion = $_REQUEST['emotion']; // Эмоциональная окраска голоса. Возможные значения:
// good — радостный, доброжелательный
// evil — раздраженный
// neutral — нейтральный (используется по умолчанию)
$speech = $_REQUEST['speech']; // имя файла синтезированного текста (file.mp3)
$text = $_REQUEST['text']; // Синтезируемый текст


# --- настройка Asterisk ---
$strhost = "192.168.1.11"; // Адрес сервера FreePBX
$strport = "5038"; // Порт AMI
$timeout = "100";
$ami_user = "openhab\r\n"; // Пользователь AMI интерфейса FreePBX
$ami_password = "password\r\n";// Пароль AMI
$ssh_user = "user";
$ssh_password = "password";
$errno=0 ;
$errstr=0 ;


# ------ Настройки Yandex.Speech ---------------
$KeyCode="2a4c42ce-b445-43d8-b5a7-88f6cee9c1221a"; // API Key Yandex.Speech


if (empty($speaker)) { $speaker = "omazh"; }; // значения по умолчанию
if (empty($emotion)) { $emotion = "evil"; }; // значения по умолчанию
if (empty($speech)) { $speech = "speech.mp3"; }; // значения по умолчанию
if (empty($text)) { $text = "Внимание! Обнаружено нарушение периметра безопасности!"; }; // значения по умолчанию
$SpeechFile="/tmp/$speech"; // Путь/Имя файла в который будет записана синтезируемая речь
echo "$SpeechFile \r\n";
$qs = http_build_query(array("format" => "mp3","lang" => "ru-RU","speaker" => $speaker,"key" =>$KeyCode,"emotion" => $emotion, "text" => $text));
$ctx = stream_context_create(array("http"=>array("method"=>"GET","header"=>"Referer: \r\n")));
$soundfile = file_get_contents("https://tts.voicetech.yandex.net/generate?".$qs, false, $ctx);
$i=file_put_contents($SpeechFile, $soundfile);


echo("i=$i \r\n");


// Если синтезировали речь - копируем полученный файл на FreePBX
if ( $i > 0 ) {
// Подключаемся к серверу по ssh
if ($connection = ssh2_connect($strhost, 22)) {
echo "Connection Successful!\r\n";
} else {
die("Connection Failed...\r\n");
};
// авторизуемся на сервере
if (ssh2_auth_password($connection, $ssh_user, $ssh_password)) {
echo "Authentication Successful!\r\n";
} else {
die("Authentication Failed...\r\n");
}
// Копируем файл на FreePBX
ssh2_scp_send($connection, $SpeechFile, "/tmp/$speech", 0644); // /tmp/$speech - каталог должен совпадать с каталогом из контекста
// /etc.asterisk/extention_custom.conf -> pa-custom -> Playback(/tmp/${var1})
if (!$connection) die('Send failed');
};




#-------------- вызываем asterisk AMI и воспроизводим синтезированный аудиофайл---------------------
$var1 = basename($speech, '.mp3') + "\r\n\r\n"; // для asterisk требуется имя без расширения
$sconn = fsockopen ($strhost, $strport, $$errno, $$errstr, $timeout) or die("Connection to $strhost:$strport failed");


if (!$sconn) { echo "$errstr ($errno)
\n"; }


else {


fputs ($sconn, "Action: login\r\n");
fputs ($sconn, "Username: $ami_user");
fputs ($sconn, "Secret: $ami_password");
fputs ($sconn, "Events: off\r\n\r\n");
usleep(500);


fputs ($sconn, "Action: Originate\r\n");
fputs ($sconn, "Channel: Local/590@from-internal\r\n");
fputs ($sconn, "Callerid: OpenHAB\r\n");
fputs ($sconn, "Timeout: 15000\r\n");
fputs ($sconn, "Context: pa-custom\r\n");
fputs ($sconn, "Exten: 577\r\n");
fputs ($sconn, "Priority: 1\r\n\r\n");
fputs ($sconn, "Async: yes\r\n\r\n" );
fputs ($sconn, "Variable: var1=$var1" );
fputs ($sconn, "Action: Logoff\r\n\r\n");
usleep (500);


fclose ($sconn);


}
?>

viosqu
28.01.2017, 12:03
При появлении события, которое необходимо озвучить ПЛК передает информацию на OpenHAB (по modbus TCP).


Добрый день.

Вас не затруднит выложить описание, как подружить ПЛК с OpenHAB ?