Русский
Русский
English
Статистика
Реклама

Алиса

Голосовой помощник для совершения операций на бирже

02.07.2020 18:23:23 | Автор: admin
Алиса, купи одну акцию Яндекс.
Заявка на покупку Яндекс по рыночной цене, тикер: YNDX, количество акций: 1, для подтверждения скажите подтверждаю, для отмены скажите нет.
Подтверждаю.
Заявка исполнена.


Я делаю голосовой интерфейс для совершения операций с ценными бумагами на Московской бирже с открытым исходным кодом. Идею вынашивал с детства. Помню, впервые увидел голосовой помощник в каком-то фильме около двадцати лет назад, в то время у меня даже проводного телефона не было в доме. А сейчас у меня безлимитное подключение к сети Интернет, брокерский счёт, которым я могу управлять через смартфон. За двадцать лет технологии стали доступнее.


Как всё начиналось



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

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

Идея лежит на поверхности, но по какой-то причине, никто ещё это не реализовал. Почему? Может никто не пользуется голосовыми помощниками? Может есть законодательные ограничения? Может есть проблемы с безопасностью? Что-то ещё? Поделитесь, пожалуйста, в комментариях, если знаете.

В какой-то момент, я просто встал с кровати и начал делать приватный навык для Алисы, чтобы голосом управлять своим брокерским счётом. Я перебрал своих брокеров и остановился на Тинькофф Инвестиции OpenAPI. Затем на месяц погрузился в изучение возможностей платформы Яндекс.Диалоги, и ещё через некоторое время купил первые ценные бумаги через голосовой помощник на Московской бирже один лот Банк ВТБ. Надеюсь, эта сделка войдёт в историю.

С самого начала я решил, что не буду прятать исходный код, чтобы любой желающий мог настроить себе голосовой помощник: https://github.com/denismosolov/oliver

Возьми с полки пирожок и расскажи наконец о проблемах



Компаний много, а я один



Когда я говорю Алисе: Купи одну акцию Яндекс, то платформа Яндекс.Диалоги извлекает название ценной бумаги из фразы и преобразовывает в специальный идентификатор FIGI (Financial Instrument Global Identifier), необходимый для взаимодействия с торговой платформой через OpenAPI. Вот так выглядит FIGI для акций компании Яндекс, торгующихся на Московской бирже: BBG006L8G4H1.

Преобразование в FIGI происходит только для тех названий компаний, которые я описал в разделе Сущности в Диалогах. Подробнее об этом, можно почитать в документации. Для примера, вот фрагмент кода сущности:

entity EFigi:    values:        BBG005DXJS36:            %exact            TCS            %lemma            тиньков(банк)?            тинькоф(банк)?            тинькофф(банк)?            ти си эс (груп)?


У этой работы большая трудоёмкость, нужно описать все компании, торгующиеся на Московской и Санкт-Петербургской биржах, но результат может быть полезен трейдерам, инвесторам, разработчикам голосовых помощников и даже компаниям, чьи акции торгуются на биржах. Вот файл с описанием сущности EFigi на GitHub, я потихоньку его дополняю.

Люди называют одни и те же компании по-разному, например, кто-то скажет Сбер, а кто-то Сбербанк. На бирже торгуются обычные акции Сбербанка и привилегированные (префы). Хочется учесть все популярные варианты.

Компания торгуется на двух биржах в разной валюте



Глобальные депозитарные расписки TCS Group можно купить на Московской бирже за рубли, а можно на Санкт-Петербургской за доллары. По хорошему, голосовой помощник должен уточнять, в какой валюте покупать расписки, но иногда, это можно понять из контекста.

Например, когда я говорю: Продай одну акцию TCS Group, и у меня на счёте есть только акции в рублях, то нужно без уточнений продавать в рублях на Московской бирже. Если у меня на счёте акции TCS Group в рублях и долларах, то Алиса должна задать уточняющий вопрос: У вас глобальные депозитарные расписки TCS Group в рублях и в долларах, в какой валюте вы хотите продать?.

Я пока это не реализовал и TCS Group всегда покупается и продаётся за доллары. Но, надеюсь, скоро возьмусь за выставление заявок на покупку и продажу ценных бумаг по заданной цене (лимитные заявки), а там уже научу голосовой помощник разливать акции на разных биржах по валюте, которая будет в цене покупки или продажи.

Ошибки распознавания



Люди спрашивают, а что будет, если Алиса распознает что-то не так, например, купит не ту бумагу или не то количество? Для этого я предусмотрел подтверждение сделок. После того, как Алиса распознает команду на покупку или продажу, она проговаривает детали сделки и ожидает подтверждения. Если подтверждения не последует, то сделка не состоится.

Сообщение при подтверждении сделки звучит так: Заявка на <покупку | продажу> <$название_ценной_бумаги> по <$цена_за_одну_бумагу>, тикер: <$тикер>, количество акций: <$количество>, для подтверждения скажите подтверждаю, для отмены скажите нет.

Такое подтверждение отлично воспринимается на слух, но есть одна недоработка. Алиса плохо читает название тикера, например, YNCX, звучит как йинкс.

Я хотел написать функцию, которая бы разбирала тикеры по буквам, и для каждой буквы проигрывала звук из озвучки английского алфавита. Код принимал бы на вход строку YNDX, а возвращал вот такую строку в формате tts:
<speaker audio="sounds-y.opus"><speaker audio="sounds-n.opus"><speaker audio="sounds-d.opus"><speaker audio="sounds-x.opus">

Алиса будет проигрывать звуки, и в теории всё будет звучать хорошо.

Безопасность при совершении сделок



Чтобы использовать OpenAPI, приходится отключать подтверждение сделок по СМС в Тинькофф Инвестиции, а это создаёт риски для безопасности. Например, инвестор ушёл на прогулку с собакой, а дети решили поиграться с Алисой и продали все акции.

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

Ещё один вариант, который приходит в голову подтверждение сделок по отпечатку пальца, как на смартфонах, но для этого в умную колонку должно быть встроено устройство для распознавания отпечатков пальцев, но, наверное, это будет не очень практично, да и скорее всего увеличит стоимость умной колонки.

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

Вместо заключения


Как говорит бывший коллега: Всё будет хорошо, но чуть попозже. Я верю, что банки и брокеры рано или поздно всё это реализуют, но пока, это остаётся уделом энтузиастов и мейкеров вроде меня.

До встречи в будущем!
Подробнее..

Квант Вселенной

25.07.2020 16:11:23 | Автор: admin


Нагородили мы огород! Цифровую систему построили с помощью цифровой системы. На ней сформировали аналоговую систему, и с помощью аналоговой системы пытаемся вычислять первичную цифровую, сказал профессор Петренко.

Вы, как всегда, замудрёно высказываетесь, ответил профессор Колосов.

Она не аналоговая!

Кто Она?

Вселенная!!!

Ну как же! Цвета, звуки, да и прочие явления это все волны, которые прекрасно описываются комбинацией синусов или косинусов. Ана-ло-го-вые функ-ци-и!

Ха! Синус! Синус это выдумка математиков, которая так же легко выражается через другую выдумку математиков под названием Ряд Тейлора, которая, по сути, уже дискретная функция.

Ну, Вы тоже скажете! Ряд Тейлора Вы тут совершенно правы это выдумка математиков. Вы еще напомните, что тригонометрия описывается таблицами Брадиса, и припишите это к дискретности. Я Вас умоляю! Где связь с Real World?

Где где. Вез де! Так называемая длина волны напрямую связана с частотой или размером атомовэнергией их электронов. Красный цвет или звук 440 герц это количество импульсов в единицу времени, попавших на наш зрительный или звуковой анализатор. А наш мозг интерпретирует их как цвета и звуки.

Все верно. А почему Вы считаете, что Вселенная цифровая? Ведь есть различные частицы, как Вы уже заметили, их энергия, масса, заряд и другие характеристики, которые выражаются дробными числами.

Хочу Вам напомнить, уважаемый коллега, что еще в 70е годы двадцатого века мы пришли к пониманию, что частицы как бы совсем и не частицы. Это Модель! Мы по традиции их так называем и нашли уже десятки новых, но все эти частицы частное проявление физического вакуума или Поля. Ничего там не вращается и перемещается.

Допустим. А где у нас тут бит?

Электрон может находиться в разных энергетических состояниях и, как следствие, на разных орбиталях, излучать волну определенной длины или поглощать. Электрон может перемещаться по орбиталям, но никто никогда не регистрировал промежуточное положение между орбиталями. Он или там или там.

Ну, это я помню! Это касается не только электронов и других частиц. Они просто синтезируются и аннигилируют в определенный момент.

Не просто в определенный момент, а постоянно. Мы не можем регистрировать это, так как и мы и наши приборы состоят из этого вещества. Но самое интересное мы может строить подобные догадки!

Хорошо. Догадки-догадками А где же все таки тут Бит?

Бит как раз и есть процесс синтез-аннигиляция или 1 и 0.

Ого! Зачем так сложно то! В компьютерах бит совсем простая штука.

Не сказал бы. Для того чтобы реализовать бит в компьютере формируется как минимум один транзистор и проводники к нему. Не говоря уже об обработке этого бита и байта. Даже сам транзистор это результат миллионов человеко-часов работы ученых и инженеров. Чтобы реализовать эту абстракцию, пришлось научиться экранироваться от Средыот квантовых эффектов.

Почему экранироваться? Оно ведь само собой получается. Когда мы переходим от квантового уровня на уровень материи, происходит самоорганизация. И когда появляется система из двух частиц и более квантовые эффекты пропадают.

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

Что ж тут хорошего? Мы не можем сделать больше элементов, повысить объем памяти и скорость вычислений.

Мы пришли к созданию квантового компьютера. Он пока может выполнять примитивные комбинаторные алгоритмы, но на порядки быстрее современных компьютеров. Он как раз и использует квантовую запутанность и самоорганизацию. Мы более не экранируемся от Среды, а пытаемся ее использовать.

То есть от чего бежали к тому и вернулись?

Да. Так же мы пришли к очень интересному пониманию живой материи. Самое интересное об этом знали еще наши предки. Играя с машинами мы как-то про это забыли.

Вы прямо заинтриговали меня! О чем речь?

Вся живая материя, биология проявляет квантовые эффекты очень целенаправленно. Мы читаем в сказках о том, что богатыри разговаривали с животными, деревьями, полями и озерами. Но это примерно так и есть. Вся живая материя общается через подпространство. Посредством квантовой запутанности и других квантовых эффектов.

Вы серьезно?

Да. И самое удивительное это мозг! Особенно мозг человека.

Согласен. Мозг не перестает удивлять. Хотите сказать, что и он использует квантовые эффекты?

Использует. Еще как! Мозг на материальном уровне выстраивает цепочки и закидывает их, подобно квантовому компьютеру, в подпространство.

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

И это и плюс и минус.

Почему?

Потому что полное взаимодействие со Средой дает давление и шум. В основном происходит достаточно рефлекторная деятельность.

Ничего себе рефлекторная! Дома строим высотой в километр, на Юпитер летаем.

Ага. Дома. А могли бы звездные системыодной силой мысли!

Хм. А почему же не можем?

Фокус. Умение концентрироваться. Похоже, это дает хорошее экранирование от Среды и, в то же время, возможность влиять на Среду. Очевидно, этот механизм недостаточно изучен и развит.

Это точно! Взять одних художников и музыкантов. Они что-то там творят, мечутся, а зачем это все не понятно. Никакой концентрации. То ли дело ученые и инженеры.

Вот это шовинизм! Не ожидал от Вас такого! Музыканты, художники, поэты и философы, так же как и физики, математики, биологи это все ученые и инженеры из различных сфер. Их совместная многовековая работа привела к созданию информатики, с помощью которой все вышеперечисленные сферы мы многократно усилили.

Музыканты развили информатику вот это нонсенс! Они только и могут, что пьянствовать, пиликать и глотки рвать.

Если так смотреть на вещи, то да. А можно взглянуть иначе
Художники были первыми, кто выделил визуальный алфавит: различные цвета, их смешивание, палочки, закорючки, мазки и комбинацию всего этого. Это в итоге дало понимание цветового спектра и привело к созданию сверточных нейросетей.
Музыканты выделили звуковой алфавит. Теперь у нас есть целая теория обработки сигналов.
Поэты и писатели были, по сути, первыми программистами. Они группировали слова в блоки, алгоритмы.
Философы всегда очень хорошо генерировали идеи, концепции.

Ааа! Паттерны. Это Вы имеете виду?

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

Хм. Я как-то не думал в таком ракурсе. А зачем нам тогда машины, компьютеры ИИ?

Судя по всему, это очередная попытка взглянуть на себя со стороны. С нового ракурса. Возможно, это усталость от рутины. Чтобы брать очередные рубежи, нам нужно перестать вращать колеса вручную. Когда-то паровая машина была странным новшеством, а теперь мы не мыслим себя без смартфона.

Новые возможности?

Да. Конечно.

Что ж Это понятно. А если вернуться к Цифровой Вселенной. Почему же мы видим синусоиды на наших приборах.

Не синусоиду, а аппроксимированную синусоиду функцию, которую мы хотим увидеть. За счет инерции Среды пачки импульсов превращаются в уровень сигнала. Помните, как ШИМ превращается в скорость вращения двигателя?

Что-то вроде диалектического перехода количество в качество?

Именно! Вот тут философы предвосхитили физиков и математиков.

А если взять волну в океане? Где тут дискретность?

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

Вычислимость?

Да. Громадный объем информации. Поэтому мы и объединяемся для решения крупных проблем. Мы все разные и видим свой кусочек Мира. Каждый на своей волне.

Волне? Вы ведь утверждаете, что нет никаких волн.

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

Вы имеете виду частоту дискретизации и фреймы?

Да. И если идет рассинхронизация, то будет как в старом ТВ: кадровая развёртка сломалась, и кадры плывут. Еще пример mpeg: случайные кубики на экране пока ключевой кадр не загрузиться. Если перенести на жизнь мы тогда не понимаем, что происходит или считаем информацию полным бредом.

Другими словами мы антенна радара, где СВЧ излучение принимается, а потом обрабатывается высокоскоростной электроникой?

Верно! Кстати, там используется именно цифровая обработка данных. Для ускорения вычисления мы используем машины, но они работают со сформированным алгоритмом действий. И когда этот алгоритм есть, скорость вычисления несоизмерима с возможностями среднестатистического человека. Очень высокая фокусировка на задаче плюс знания о ней.

Машины А как же наш мозг? Почему у него получается так эффективно вычислять наше пространство и взаимодействовать с ним? Находить алгоритмы?

Потому что мозг видит квант Вселенной.

-Прикольные диалоги генерирует Алиса, когда говорит сама с собой, - сказал DS Петренко.-Ага, - согласился DevOps Колосов. - В разговорах с людьми такого не увидишь. Надо будет запостить на какой-нибудь гиковский портал.

25.07.2020
Подробнее..

Открываем дверь при помощи голосового ассистента

18.12.2020 18:13:39 | Автор: admin


Всем привет!
Сегодня у меня статья про то, как при помощи Яндекс-колонки Алиса и Ардуино, можно открыть дверь, подключенную к домофону. Если Вам это интересно, то прошу под кат.

Часто бывает так, что кто-то звонит в домофон, а ты в этот момент чем-то занят или просто лень подходить для того, чтобы открыть дверь. Знакомая ситуация, не правда ли?
А мой домофон так вообще без поднятия трубки не открывает дверь и если в течении 30 секунд после вызова не поднять трубку, то кнопка открывания двери перестанет быть активной до того момента, пока не поступит новый вызов. Так как домофон не из дешёвых (на тот момент) меня жаба душила менять его на другой. И я решил с этим бороться.

Первая идея упростить себе жизнь появилась 10 лет назад, я решил сделать адаптер домофон-телефон, чтобы звонок с домофона дублировался на домашний телефон. Нарисовал схему, собрал прототип на макетной плате. Все заработало, но дальше этого прототипа я так и не продвинулся. Всё так и валяется по сей день в хламе.

Второй проект был реализован на роутере TL-MR3020 с прошивкой CyberWRT и программным СИП телефоном BareSIP. При нажатии на кнопку вызывной панели, роутер параллельно с вызовом интеркома звонил на мобильный телефон и можно было даже находясь в другом городе разговаривать с человеком, стоящим около двери твоей квартиры, но программный телефон или сам роутер, работали крайне нестабильно и пришлось от него отказаться.
Но тут к моему счастью в прошлом году на день рождения мне подарили голосового ассистента Алису и у меня появилась новая идея отрывать дверь голосом, через Яндекс колонку.
И сегодня настал тот день, когда я взялся реализовать свою задумку.

Немного о том, как работает вызывная панель видео-домофона.


Вызывная панель соединена с монитором домофона при помощи 4-х проводов GND, +12 В, аудио и видео.
Если на вызывной панели, провод Audio замкнуть через резистор 100 Ом на GND, то раздастся сигнал вызова. А если на провод Audio подать напряжение +12 В, то сработает реле открытия электромагнитного замка.

На изображении ниже показана схема соединения вызывной панели с домофоном.



Если для подключения вызывной панели к монитору, у Вас используется специальный домофонный кабель, то он подключается как правило по следующей инструкции:

GND экранирующая оплетка
+12 В красный провод
Аудио синий провод
Видео центральная жила коаксиального кабеля



Схема


Из схемы видно, что для подключения устройства на Ардуино к домофону, потребуется подсоединить всего 2 провода. Для коммутации этих проводов я использовал то, что у меня было под рукой. Вместо реле можно использовать ключ на N-P-N транзисторе или оптроне PC817.

ИК приемник я применил, первый попавшийся мне на глаза, который я когда-то выпаял из старого телевизора и который пролежал у меня на полке в хламе очень много лет.


Используемые компоненты


Ардуино Нано
Модуль реле
ИК приемник 38 кГц
Провода Dupont

Вместо Arduino nano можно применить любой другой микроконтроллер из линейки ардуино. Я же использовал Ардуино нано потому, что у меня их достаточно много.

Исходник для Arduino


Код достаточно простой и понятный.
Для получения и сохранения кода нажатой кнопки, нужно перевести контроллер Ардуино в режим добавления кнопки пульта. Потребуется установить перемычку на выводы D2 и GND и нажать кнопку сброса на Arduino, после чего на плате контроллера засветится системный светодиод и контроллер будет ожидать нажатия кнопки на пульте.

Рекомендую использовать пульт от телевизора, чтобы кроме голосового управления можно было открыть дверь с ПДУ, не вставая с дивана. На пульте лучше всего выбрать кнопку, которой редко пользуетесь, как правило это четыре цветных кнопки, предназначенные для телетекста. После получения кодовой посылки Ардуино весело подмигнет светодиодом и снова перейдет в режим ожидания.

Можно нажимать кнопки сколько угодно, но Arduino запомнит только последнее нажатие. Чтобы выйти из режима запоминания кода, достаточно удалить перемычку и нажать на микроконтроллере кнопку Reset.

Код для Ардуино
#include <IRremote.h>
#include <EEPROM.h>

//#define TOLERANCE 35 // процент допустимого отклонения принимаемого сигнала
#define IR_RECEIVE_PIN 11 // Вход для подключения ИК приемника
#define RELAY_PIN 12 // Выход для управления реле
#define SET_PIN 2 // Вход для перевода в режим программирования пульта

IRrecv irrecv(IR_RECEIVE_PIN);
decode_results results;

void setup()
{
irrecv.enableIRIn(); //запустить ожидание нажатия кнопки на пульте
pinMode(RELAY_PIN, OUTPUT);
digitalWrite(RELAY_PIN, LOW);
pinMode(SET_PIN, INPUT_PULLUP); //D10 конфигурируем на вход, для режима запоминания кода
pinMode(LED_BUILTIN, OUTPUT);
digitalWrite(LED_BUILTIN, LOW);
// Serial.begin(115200);

while(!digitalRead(SET_PIN)) //если пины D2 и GND замкнуты то заходим в режим запоминания ИК кода
{
set_command();
}
}

void loop()
{
if (irrecv.decode(&results)) //если был принят код с пульта
{
if(LoadEEPROM()==results.value) //если код совпадает с сохраненным (ir_command==results.value)LoadEEPROM();
{
digitalWrite(RELAY_PIN, HIGH); //включить реле
digitalWrite(LED_BUILTIN, HIGH);
delay(500);
digitalWrite(LED_BUILTIN, LOW);
digitalWrite(RELAY_PIN, LOW); //Выключить реле
}
irrecv.resume(); //запустить ожидание нажатия кнопки на пульте
}
}

void set_command() //режим запоминания кода пульта ДУ
{
digitalWrite(LED_BUILTIN, HIGH);
if (irrecv.decode(&results))
{
digitalWrite(LED_BUILTIN, LOW);
SaveEEPROM(results.value); //сохраняем полученый код кнопки ПДУ в EEPROM
irrecv.resume(); //запустить ожидание нажатия с пульта
}
delay(100);
}

void SaveEEPROM(unsigned long ir_code) // записываем полученый код кнопки ПДУ в EEPROM
{
EEPROM.write(0, ir_code & 0xFF);
EEPROM.write(1, (ir_code & 0xFF00) >> 8);
EEPROM.write(2, (ir_code & 0xFF0000) >> 16);
EEPROM.write(3, (ir_code & 0xFF000000) >> 24);
}

unsigned long LoadEEPROM() // считываем код кнопки ПДУ из EEPROM
{
byte val = EEPROM.read(3);
unsigned long ir_code=val;
val = EEPROM.read(2);
ir_code= (ir_code << 8) | val;
val = EEPROM.read(1);
ir_code= (ir_code << 8) | val;
val = EEPROM.read(0);
ir_code= (ir_code << 8) | val;
return ir_code;
}

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

Подключение к Яндекс.Станции Алиса


Для подключения к умной колонке понадобится Умный пульт Яндекс.

Не обязательно его покупать у Российского поисковика и партнеров, пульт можно купить на Алиэкспресс немного дешевле. Но разница не настолько большая, чтобы играть в лотерею, покупая пульт у китайцев. Рассказывать, как подключить пульт к станции, я не буду, так как в интернете очень много подробных инструкций на эту тему, Вы без труда сможете их найти у того же Яндекса. Я только расскажу как настроить взаимодействие Яндекс.Станции с Ардуино открывалкой.
Для этого нужно зайти приложение Яндекс.Браузер Все сервисы Устройства Управление устройствами Пульт Добавить устройство Настроить вручную вводим название Дверь Добавить команду вводим название голосовой команды Открой берем пульт от любой бытовой техники, направляем его на Яндекс.пульт и нажимаем требуемую кнопку. После того, как синий светодиод на Я.пульте погас колонка готова к выполнению этой команды. Теперь можно проверять, произносим фразу Алиса открой дверь, она, немного подумав, выполнит Ваш приказ.

Заключение


Использование Яндекс пульта в умном доме позволит Вам управлять любой бытовой техникой, в состав которой входит ПДУ. А так же достаточно легко, собрав простейшую схему на Arduino интегрировать управление любыми другими устройствами, не имеющих ПДУ. Это просто, надежно и не требует подключения этих устройств к интернету.

Если Вам понравилась моя статья можете подписаться на мой канал, чтобы не пропустить следующую публикацию.

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

Умный дом, опыт построения, бег по граблям (MajorDomo, Tasmota и Алиса)

24.01.2021 14:08:22 | Автор: admin

Решил обобщить и систематизировать накопленный опыт в создании умного дома. Началось все с управления розетками (светом) на даче если уехал и забыл выключить свет, можно через интернет выключить и спать спокойно. Потом появилось ограничение по мощности и желание автоматически реагировать на превышение мощности отключением маловажных потребителей типа чайника. Ну а дальше уже сложно остановиться. Климат, автономное снабжение, комфортный свет и все это - не вкладывая много денег, хотя если все посчитать..

Если теорию знаете, можно перейти к моей истории поисков идеального решения.

NB! Так же для удобства, жирным курсивом подсветил названия технологий и платформ. А просто жирным - важные наблюдения или выявленные глобальные засады.

Ну, а теперь по порядку, немного теории

Умным домом принято называть что угодно, от 2 лампочек, управляемых по таймеру до сложной системы, реагирующей на множество факторов и делающей жизнь владельца комфортной.

  • В любом случае речь про управление устройствами, кратко их можно собрать в группы:

  • Бытовая техника (пылесосы, телевизоры, чайники, кондиционеры)

  • Реле/выключатели (вкл/выкл)

  • Лампочки/ленты (меняют цвет и яркость)

  • Датчики (мощность, напряжение, температура, влажность, концентрация газов)

  • Диммеры (пропорциональный выходной сигнал)

  • Исполнительные устройства (регуляторы температуры, привод штор)

  • Шлюзы (пульты, универсальные передатчики команд)

Построение умного дома начинается с выбора платформы. Разные платформы имеют разную функциональность, стоимость, сложность настройки. Например:

  • Умный дом Яндекс - нет логики, только команды, много совместимых устройств

  • Xiaomi (Aquara) простые скрипты

  • Google Home простые скрипты, много совместимых устройств

  • Domoticz ограничен набор устройств, развитая логика

  • IFTTT - ограничен набор устройств, развитая логика

  • HomeAssistant - ограничен набор устройств, развитая логика, настройка интерфейса плагинами

  • Majordomo (php) - развитая логика, открытый проект, активно развивается, требует умения программировать.

Нужно заметить, что платформы от именитых производителей умеют работать друг с другом. То есть их экосистемы можно объединять, что существенно расширяет перечень подключаемых устройств. Кстати, о подключениях тут есть 2 аспекта: как подключаться физически и как общаться с концентратором умного дома.

Физически можно связываться через локальную компьютерную сеть (проводную или беспроводную), сеть малого радиуса (Bluetooth, ZigBee) или просто по радио или инфракрасному каналу (последнее обычно только в одну сторону работает).

Что же касается языка на котором общаются устройства, то тут вариантов много, но можно разделить на открытые (общедоступные) типа mqtt (сервис коротких сообщений через центральный сервер) или web-hook (обычные прямые ссылки на веб-сервер на борту устройства) и закрытые типа протокола Xioami/Redmond и прочих, которые известны только производителям.

Устройства это хорошо, но что же ими управляет? Центральное устройство/ центр управления. Кстати, хабы типа Aqara это нифига не центральный модуль, а всего лишь концентратор сети ZigBee или какой иной, понравившейся производителю логика остается в самих устройствах или на телефоне пользователя или в облаке.

Насколько я понял, большинство облачных сервисов не поддерживают логику. То есть в Яндекс доме можно узнать температуру и включить обогреватель. Но заставить Яндекс следить за температурой и держать в комфортном диапазоне нет!

Для реализации логики нужен центральный блок, причем желательно локальный. Вот тут вариантов масса поставить на свой домашний комп программу управления, собрать отдельный сервер, разместить сервер в облаке.

Как ни странно, дешевые микро ПК на ARM процессорах, например OrangePi, Nano Pi и прочие фруктовые Пи вполне тянут систему с базой данных, брокером сообщений и веб-интерфейсом. Не говорю уже про Raspberry это вообще, как заговоренные.

Из программных серверов умного дома можно выделить популярные: Blynk (есть вариант облака и локальный), IFTTT (чисто облако, но с мобильным приложением), Home Assistant, Domotics, Majordomo.

История рождения моего умного дома

На момент начала моей автоматизации, у меня были штук 6 устройств SonOff (у них родное приложение и облако eWeLink), управлял розетками на даче. И поставил камеры Xiaomi Dafang (камеры не понимали русский, но это PTZ, FullHD, да еще и стоили всего 2 тысячи рублей каждая). Камеры принесли на дачу постоянный интернет (мобильный), роутер. А также облако Xiaomi. Итого, 2 облака Xiaomi + eWeLink. Надо было собирать в единую панель управления. Первым был установлен HomeAssistant, даже игрался с камерами (хотел на датчик движения у камер прикрутить и сохранять в системе). Но дальше скриншотов, и то не всегда, дело не пошло. С SonOff вообще не смог подружить. Решив, что логика для розеток все-таки важнее, начал играться с MajorDomo, который имел для этих устройств коннектор, а также более-менее понятный интерфейс настроек (субъективно, да, php+html, объектно-ориентированная модель).

Первый тревожный звоночек пришел от Роскомнадзора в попытке убить телеграмм (безуспешной) они прибили доступ ко многим облакам, в том числи и Xiaomi. В середине зимы было очень неприятно оказаться без видеонаблюдения за дачей, расположенной в 100 км от дома..

Итог камеры перепрошиты на Dafang Hack (прошивка делающая локальный RTSP сервер потокового видео) и первая моя Raspberry c MotionEyeOS (локальный видео сервер), а также белый IP дома и VPN между домом и дачей (на роутерах Mikrotik). Локальный сервер держит архив на 500Гб (пара месяцев с двух камер), питается от аккумулятора (до 3 дней без света).

Для логики нужно не только управлять, но и контролировать, для этого купил SonOff POW R2 это фактически, счетчик электроэнергии с выключателем на 16А (стоимость по 750 рублей). Это позволило при включении посудомоечной машины, бойлера для воды (суммарно 4 кВт) блокировать розетку с чайником. Сейчас это модно называется DemandResponse. А так же стало возможно контролировать работоспособность насосов водоснабжения и канализации (по графику дренаж включается и на графике мощности есть пики, по которым можно понять, много ли воды и вообще, не завис ли поплавок!) - дистанционная диагностика оборудования. Так же для управления низковольтными устройствами (включение дизельного отопителя, насоса аэрации воды для очистки, отключения зарядника от аккумулятора, когда нет напряжения в сети СНТ) был куплен клон SonOff G4 четырехканального реле с радиопультом (еще 1100 рублей).

Второй звоночек пришел от eWeLink с выходом в массы устройства контроля напряжения SonOff POW R2 поток через их сервер, видимо, стал превышать их возможности (ток, напряжение, мощность активная, мощность реактивная, мощность полная, коэффициент мощности и все это 5 раз в секунду с каждого такого устройства) и они решили, что датчики будут телеметрию слать один раз в минуту. То есть у вас уже минуту мощность за разумными рамками или напряжение просело до Америки (113 вольт реально было летом), а умный дом живет в розовых мечтах, что все хорошо.

Итог модуль MojorDomo для локального режима SonOff и окончательный переход на MajorDomo на Orange Pi (стоила около 1000 рублей всего, пришлось осваивать Linux, а точнее Armbian и по инструкциям ставить MajorDomo). Но недолго музыка играла SonOff почувствовали что-то неладное и очередная прошивка на их сервере отрубила локальный режим, то есть только через облако, только раз в минуту..

Полная локализация

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

Очередной шаг перепрошивка всех устройств на Tasmota, отказ от протокола eWeLink и уход на MQTT. Это, кстати, открыло путь в полный лоукост прошивка легко настраивается, а плата Wemos из Китая стоит всего 120 рублей, при этом на борту 12 линий для подключения периферии, АЦП, WiFi. Так число устройств в умном доме увеличилось раза в 3 выключатели, датчики напряжения на АКБ, датчики температуры и влажности (кстати, оказалось, что лучший AM2301 это AM2320! Программно совместим с AM2301, который еще называют DHT21, но при этом стабилен, не глючит и не зависает).

Тут Остапа понесло и в умном доме появились солнечные панели, 2 контроллера (один PWM, второй - MPPT), датчики тока от солнечных панелей в систему и на АКБ (просто по напряжению на клеммах степень заряда не измерить). От АКБ, кстати, на этот момент питаются 3 камеры, 2 микросервера, 2 роутера, общее потребление примерно 40Вт постоянно.

После примерно полугода, когда все было настроено и отлажено пришла беда умерла карта памяти. Свежего бэкапа не оказалось все ждал идеального состояния, не дождался. Изучил, какие карты бывают узнал про MicroSD A2 это карты с контроллером, как у SSD дисков - то есть много и часто писать/читать мелкие файлы им не страшно. Настроил, по памяти восстановил логику и оформление, сделал бэкап. Через месяца три началось неладное зависания, тормоза при открытии графиков за месяц. Анализ (я почти стал спецом по Linux) показал, что база данных тупит из-за очень большого числа накопленных данных. Пришлось делать удаление старых данных, оставляя только по 2 отсчета за минуту для данных старше месяца. Помогло, но не сильно. Надежда была на плату с большим объемом памяти Orange Pi One Plus (700 рублей), но не судьба. В итоге куплена Raspberry Pi4 c 2Гб памяти на борту, а для этой палаты есть оптимизированный образ MajorDomo и о чудо, там все отлично БД крутится полностью в памяти, раз в час сбрасывается на карту бэкап, в случае незапланированного падения, при загрузке восстанавливается состояние на начало часа.

Все это было отлично, управляется с компьютера, с телефона (экран на картинке там 2 таких сцены, одна для управления и климата, вторая для телеметрии).

Но вот беда чтобы включить свет надо все равно тянуться за телефоном и тыкать мелкие кнопки. А на даче еще и родители бывают, а для них много кнопок на экране слишком сложно.

Появление голосового управления

И вот тут я задумался, что пора подключать голосовой помощник. Сначала думал про Google Assistant/Home, но увидав, что они творят со своим президентом, да еще к новому году отключили поддержку русского на колонках (оставив только на телефонах), решил, что вполне реально повторение с отключенными облаками Xiaomi и eWeLink. В итоге, Алиса от Яндекса. Каково же было мое удивление, когда увидел, что есть стандартный коннектор (навык Алисы) к MajorDomo! Яндекс станция мини отлично подошла по функциям и размеру, более того, нашел и обратный коннектор из MajorDomo можно выдавать команды на устройства, подключенные к Алисе пультам кондиционеров, телевизиров и даже роботу-пылесосу. И это не считая проговаривания статусов типа внимание, работаем от аккумуляторов!. Соединение с Алисой можно сделать двумя способами через платный сервис Connect (2 тысячи рублей в год, бонусом облачные бэкапы) или через Яндекс.Диалоги для этого надо SSL сертификат на сайт, белый IP, и выставленный в интернет сайт с MajorDomo, то есть свет или отопление сможет отключить случайный прохожий. В общем, 2к в год не большая цена за сохранение комфорта, да и SSL покупать не надо.

Естественно, управление через Яндекс это чисто функция комфорта, основная логика реализована на локальном уровне.

Итак, затраты:

Тип

Количество

Цена, руб

Примечание

Камеры

3

6000

Одну из камер сжег, купил купольную тоже за 2000р

SonOff POW R2

4

3100

SonOff Basic

6

3400

SonOff G4

1

1100

SonOff TH10

1

800

Wemos + DC\DC + реле

5

1000

Raspberry Pi3

1

2500

Raspberry Pi4

1

4200

OrangePi Lite

2

1400

OrangePi One Plus

1

1000

Карта памяти 32G A2

2

1800

Яндекс.Станция Мини

3

12500

2 новые, 1 с Авито

Яндекс.Пульт

2

2400

Один с Авито (новый, в упаковке)

Dexp колонка с Алисой

1

2000

Чисто, чтобы во второй комнате Алиса слышала команды.

Итого

14

43200

Почти 17к это голосовое управление

Количество физических устройств не соответствует числу управляемых каналов одно 8 канальное реле это датчик тока и 8 выключателей! Так что общее число устройств в системе 68 (и это не считая Яндекс.Станции и устройства не на даче, только то, что управляется локально!).

Внимание, мошенники!

Кстати, про Яндекс.Станции. С рук покупать очень не советую оказалось, что есть станции по подписке продается конкретному человеку и 3 года он должен платить по 400 рублей в месяц. Никому такую передавать нельзя она залочена на учетку того, кому ее Яндекс отдал. То есть они не для продажи. Ни на коробке, ни на станции, ни при включении она ничем не отличается от обычной (только, кажется, глуховатые, кстати). Но через 10 минут работы говорит оплатите подписку и вообще не работает никак. Поддержка Яндекса может проверить по номеру, но отвечают через день явно долго для проверки при покупке.

Подробнее..

Открытие двери с телефона, голосовом ассистентом и с помощью модуля Sonoff Mini

22.04.2021 00:12:56 | Автор: admin

Всем привет.

Сегодня я хочу рассказать, как я сделал открытие двери с помощью Команд на телефоне (iPhone) и в последующем реализовал данную функцию через голосового помощника Yandex.Алиса.

В процессе эксплуатации обычного штатного контроля доступом мне всегда хотелось реализовать что-нибудь "ЭTAKOE". Однажды один из наших заказчиков просит сделать у себя в частном доме открытие калитки без видеодомофона, а только с помощью беспроводной кнопки и функцией открытия с телефона. Изначально задача показалась не интересной, дешевые решения на Aliexpress не внушали доверия (НИКОГДА). В процессе поиска вариантов на просторах интернета попадается статья на habr.com Открываем дверь домофона при помощи голосового ассистента и ардуино и я осознал: это то самое, что надо. Кстати, во время тестирования у себя дома, мне удалось реализовать 2 проекта: открытие домофона и слив воды в унитазе.

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

Используемые компоненты

  • WiFi модуль Sonoff Mini;

  • Контроллер СКУД (в моем случаи Считыватель/Контроллер Matrix 2K);

  • Блок питания на 12 Вольт 1,5 Ампера (необходим для контроллера и замка);

  • Исполнительный механизм (электромеханический или электромагнитный замок);

  • Реле на 220 Вольт (промежуточное реле). Необходимо для реализации сухого контакта;

  • Несколько проводков для подключения, вилка с проводом и прямые руки.

Собираем следующую схему

Схема подключения с промежуточным релеСхема подключения с промежуточным реле

Далее дело остается за малым. Скачиваем приложение eWeLink, по инструкции добавляем устройство в учетную запись и в настройках устройства необходимо Включить "Inching" устанавливаем время удержание 0,5-1 секунда. Таким образом мы имитируем кратковременное нажатие кнопки выхода на контроллере.

В итоге мы получаем простое решение по открытию двери с телефона.

Что еще можно сделать?

Приложение eWeLink активно дорабатывается и уже в версии 4.0 реализована возможность добавление команд на мобильном устройстве, т.е. можно на рабочий стол телефона вынести отдельно команду и управлять своим устройством, не заходя в приложение.

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

Обязательно меняем маркировку на корпусе, чтобы случайно не подключить 220 Вольт на контроллер

В таком случаt у нас получается следующая схема подключения:

Схема подключения "Модернизированного" модуля без промежуточного релеСхема подключения "Модернизированного" модуля без промежуточного реле

Теперь добавим учетную запись eWeLink к учетной записи в приложении Яндекс

В процессе сборки и тестирования я периодически выкладывал Сторисы в своем Instagram и кто-то из моих подписчиков оставил комментарий: "Ты еще попроси "Алису" за тобой унитаз смыть". И я подумал, а почему бы и нет?

Подробно я не буду рассказывать, как реализовывал механику слива воды, по двум причинам:

  1. Нужно кастомизировать сливной бачок, а у всех он разный и решения у всех будут тоже различные.

  2. Вообще бесполезная затея, использую только для того чтобы удивить гостей.

Для добавления учетки eWeLink к Яндексу, достаточно добавить к своим устройствам в приложение Яндекс - Другое устройство. Из списка Устройств находим и выбираем eWeLink Smart Home и вносим свои логин и пароль от учетной записи eWeLink. Нажимаем обновить список устройств и наша "Розетка" успешно появляется в устройствах Яндекс.

Яндекс по умолчанию видит, устройство Sonoff Mini как умную розетку, так как основное предназначение ее: управление розетками, выключателями и приборами в составе умного дома. В настройках устройства можно изменить название на что угодно, у меня например - это Унитаз.

Далее остается сделать навык для Алисы, а именно создать сценарий. Переходим во вкладку сценарии, указываем например следующее:

Если я скажу фразу ".....", то включи устройство из моего спискаЕсли я скажу фразу ".....", то включи устройство из моего списка

Если я скажу фразу ".....", то включи устройство из моего списка

Сохраняем сценарий. Говорим ключевую фразу из сценария и наблюдаем как она послушно выполняет наши указания. В сценарии можно указать несколько фраз, не обязательно одну, хоть 10, вас ограничивает только фантазия и здравый смысл. В ответ на выполненное действие, Алису можно обучить сказать: Всегда готова служить, мой господин!

Заключение

Использование умных устройств в быту и работе упрощает некоторые задачи. Естественно, если будет отключен интернет, то ничего работать не будет. Но представляем ли мы сегодня жизнь без интернета? В противном случае, будьте добры сами, мой господин, включить чайник.

Если остались вопросы, обязательно задавайте их в комментариях.

Подробнее..

Безумный дом

01.01.2021 02:21:21 | Автор: admin

Мы часто думаем о том, как автоматизировать свое жилище, но часто этот вопрос упирается в то, что готовые системы слишком негибки и дороги, а разбираться, как сделать что-нибудь самому совершенно нет времени.

Под катом - подробный гайд по настройке системы умного дома: сделаем возможным работу устройств ZWave и кастомных MQTT-устройств на базе ESP8266, настроим управление домом при помощи HomeKit и Яндекс Алисы.

Первоначальная настройка Raspberry PI

Установка системы

На распберри ставим raspberry pi os https://www.raspberrypi.org/downloads/raspberry-pi-os/ Записываем ее на MicroSD от 16 ГБ. Обязательно класса 10 и выше, иначе не хватает скорости доступа для работы операционной системы.

$ sudo dd bs=4M if=raspbian.img of=/dev/sdf status=progress

Headless

Если не хотим подключать монитор

SSH

В boot разделе создаем файл с именем ssh(это одноразовый способ: при наличии файла с именем ssh в разделе при старте raspberry sshd запускается и удаляется этот файл, поэтому не забываем в sudo raspi-config включить ssh насовсем)

# mkdir /mnt/boot_partition# mount /dev/sdf1 /mnt/boot_partition# touch /mnt/boot_partition/ssh# umount /dev/sdf1

Теперь при первом запуске у нас будет возможность подключиться к системе по ssh.

Wi-Fi

Если необходимо подключение к локальной сети посредством wifi, создаем в boot разделе файл wpa_supplicant.conf

# mkdir /mnt/boot_partition# mount /dev/sdf1 /mnt/boot_partition# vim /mnt/boot_partition/wpa_supplicant.conf# umount /dev/sdf1

Содержимое файла wpa_supplicant.conf

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdevupdate_config=1country=RUnetwork={ ssid="your_ssid" psk="your_wifi_password"}

Подробнее об этом конфиге

Первый запуск

Вставляем флешку в малину, подключаем ее по ethernet к сети, если не настроили wifi, подаем питание по microUSB, используя блок питания с предельным током как минимум 2 ампера.

Raspberry PI должна загрузить систему, а также подключиться к сети.

Попробуем получить к ней доступ по ssh.

Для этого нам необходимо узнать, какой ip-адрес получила raspberry pi в нашей локальной сети. Вы можете зайти в веб интерфейс маршрутизатора и посмотреть список активных хостов, но я предпочитаю использовать nmap. Выполняю сканирование сети посредством пингования всех ip адресов подсети.

# nmap -sn 192.168.0.1/24Starting Nmap 7.80 ( https://nmap.org ) at 2020-08-23 23:49 MSKNmap scan report for 192.168.0.1Host is up (0.00033s latency).Nmap scan report for 192.168.0.105Host is up (0.00016s latency).Nmap scan report for 192.168.0.120Host is up (0.00050s latency).Nmap done: 256 IP addresses (3 hosts up) scanned in 2.57 seconds

Здесь можно заметить, что кроме самого роутера(192.168.0.1) и моего ПК(192.168.0.105) появился еще один хост 192.168.0.120 - многовероятно, что это и есть наша малина.

Попробуем подключиться. Стандартная пара логин/пароль: pi/raspberry.

# ssh pi@192.168.0.120Linux raspberrypi 4.19.118-v7+ #1311 SMP Mon Apr 27 14:21:24 BST 2020 armv7lThe programs included with the Debian GNU/Linux system are free software;the exact distribution terms for each program are described in theindividual files in /usr/share/doc/*/copyright.Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extentpermitted by applicable law.Last login: Sun Aug 23 21:54:16 2020 from 192.168.0.105pi@raspberrypi:~ $

Мы успешно вошли по ssh на raspberry pi и теперь можем приступать к дальнейшей настройке системы.

Установка Domoticz

Domoticz - программная система для управления умным домом с открытым исходным кодом. Написана на C++. На хабре я видел статьи про аналоги этой системы, такие как openhub и home assistant, но мой выбор пал на domoticz вследствие того, что эта платформа максимально проста для конфигурирования, а кроме того, написана на C++, что делает ее гораздо менее требовательной к вычислительным мощностям для работы, чем аналоги, использующие java и python. Кроме того, подкупила простая система написания сценариев на Lua или python.

Итак, установим domoticz на наш одноплатник. Установка максимально простая, за что личный респект разработчикам.

pi@raspberrypi:~ $ sudo curl -L install.domoticz.com | sudo bash

На экране, спустя некоторое время, появится псевдографический диалог установки, в котором будет возможно выбрать порты и протоколы для веб интерфейса, директорию для установки. Лично я оставил исключительно HTTP на 80 порту, но вы вольны в своих решениях.

После окончания установки и, на всякий случай, ребута, проверяем, что демон domoticz поднялся:

pi@raspberrypi:~ $ sudo service domoticz status

Также проверим, что web интерфейс доступен: http://192.168.0.120/

Watchdog

В процессе эксплуатации я заметил, что Domoticz иногда падает с ошибкой. Чтобы поднимать его автоматически, напишу watchdog с помощью cron.

#!/bin/sh# /etc/scripts/check_domoticz_online.sh# check domoticzstatus=`curl -s -i -H "Accept: application/json" "http://localhost:8080/json.htm?type=devices&amp;rid=1" | grep "status"| awk -F: '{print $2}'|sed 's/,//'| sed 's/\"//g'`if [ $status ]then    echo "Domoticz has already been started"else    /home/pi/domoticz/domoticz.sh restart   fi
pi@raspberrypi:~ $ sudo crontab -e -u root*/5 * * * * /etc/scripts/check_domoticz_online.sh > /dev/null 2>&amp;1

Теперь каждые 5 минут будет запускаться скрипт, который проверит, работает ли Domoticz и перезапустит его, если это необходимо

Настройка domoticz для работы с устройствами

Теперь, когда система работает и готова к продолжению конфигурирования, можно настроить какие нибудь устройства.

IP-камера

Самое простое, что можно настроить в Domoticz - это камера. Для этого зайдем в web-интерфейсе в Setup -> More options -> Cameras -> Add camera.

Вводим данные о своей камере. У меня возникли сложности с определением picture url, но они решились вот этим сервисом.

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

Z-Wave USB Stick

Посредством Domoticz, мы можем управлять домашней сетью Z-Wave IoT устройств. Это удобный протокол, позволяющий устройствам взаимодействовать друг с другом так, чтобы некоторые из них являлись, помимо своего основного назначения, Z-Wave ретрансляторами, своей работой расширяя радиус покрытия Z-Wave. Протокол закрытый, проприеритарный, поэтому просто создать свое Z-Wave устройство не выйдет, поэтому обычно, по этому протоколу работают покупные устройства/компоненты умного дома.

По моему опыту, настройка Z-Wave сети в Domoticz оказалась сильно проще и, в отличие от систем Home Assistant и openHub, здесь USB Stick заработал сразу и без проблем.

Для того, чтобы настроить свою сеть Z-Wave, я приобрел Z-Wave USB Stick. Подключив его к Raspberry pi, я добавил его как еще одну Hardware, с Type OpenZWave USB. Путь к Serial Port у меня выглядел примерно так: /dev/serial/by-id/usb-0658_0200-if00

После добавления стика, появится запись в таблице с ним, в которой будет кнопка Setup, открывающая возможность настраивать ZWave сеть. В меню настройки можно включать режим обнаружения новых ZWave устройств, а также изменять параметры сети и устройств в ней.

ВАЖНО: следите, чтобы рабочая частота Z-Stick соответствовала рабочей частоте Z-Wave устройств

MQTT-брокер

Для создания кастомных IoT устройств я собираюсь использовать Arduino с подключением к локальной сети. В рамках данной сети общепринятым стандартом общения между устройствами является MQTT - протокол, ориентированный для обмена сообщениями по принципу издатель-подписчик. Для передачи сообщений посредством данного протокола нам необходим MQTT-брокер - своеобразный хаб для сообщений. Domoticz и IoT устройства выступят в качестве клиентов сети, подключившись к брокеру.

Установим свободный MQTT-брокер Mosquitto.

pi@raspberrypi:~ $ sudo wget http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key  pi@raspberrypi:~ $ sudo apt-key add mosquitto-repo.gpg.key  pi@raspberrypi:~ $ cd /etc/apt/sources.list.d/  pi@raspberrypi:/etc/apt/sources.list.d/ $ sudo wget http://repo.mosquitto.org/debian/mosquitto-jessie.listpi@raspberrypi:/etc/apt/sources.list.d/ $ cdpi@raspberrypi:~ $ sudo apt-get install mosquitto mosquitto-clientspi@raspberrypi:~ $ rm mosquitto-repo.gpg.key

Теперь Mosquitto установлен и работает. Мы можем подключиться к нему без аутентификации по адресу 0.0.0.0:1883. Таких настроек нам хватит на первое время.

Domoticz - MQTT клиент

Подключим domoticz к MQTT-брокеру. В web-интерфейсе Domoticz - Setup -> Hardware.

  • Type - MQTT Client Gateway with LAN interface.

  • Remote address - localhost

  • Port - 1883

  • Data Timeout - disabled

  • Username и password - оставляем пустыми до лучших времен

  • Prevent loop - в большинстве случаев эту настройку следует оставить включенной, но в нашем случае мы собираемся подключать собственные устройства по MQTT и управлять ими внешними методами, поэтому мы выключим prevent loop и domoticz будет пересылать все обновления статусов устройств из domoticz/in в domoticz/out. Это нужно, тк внешнее управление осуществляется посредством публикаций в domoticz/in, а наши устройства слушают domoticz/out, и если domoticz не будет пересылать сообщения из in в out, то устройства не смогут узнать об обновлениях их статусов.

  • Publish topic - топик, куда domoticz будет публиковать все обновления статусов. Для себя я оставил стандартно - out, и domoticz публикует в топик domoticz/out.

После нажатия на Add у нас добавился новый hardware. Если все хорошо, то в таблице, в колонке Enabled мы увидим Yes.

Dummy switch

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

Добавим Dummy hardware. В web-интерфейсе Domoticz - Setup -> Hardware

  • Type - Dummy (Does nothing, use for virtual switches only)

Добавляем. В таблице появилась еще одна запись. Можно увидеть, что в таблице рядом с Type есть кнопка Create virtual sensors. Нажимаем ее, вводим параметры

  • Name - lamp

  • Sensor type - Switch

Сохраняем и переходим в меню Switches. Теперь здесь можно увидеть новый переключатель:

Теперь мы можем посмотреть, как изменение переключателя отражается в топике MQTT.

pi@raspberrypi:~ $ mosquitto_sub -h localhost -v -t "domoticz/out"

Мы использовали клиент MQTT, который установили вместе с брокером, и подписались на топик, куда domoticz публикует свои обновления. Нажмем на лампочку в веб-интерфейсе

Смотрим в терминал и видим сообщение из топика:

domoticz/out {    "Battery" : 255,    "RSSI" : 12,    "description" : "",    "dtype" : "Light/Switch",    "hwid" : "4",    "id" : "00014052",    "idx" : 2,    "name" : "lamp",    "nvalue" : 1,    "stype" : "Switch",    "svalue1" : "0",    "switchType" : "On/Off",    "unit" : 1}

В подобных сообщениях Domoticz сообщает нам об изменении своего состояния. Формат тела сообщения - JSON. В поле name видим название, которое мы ранее установили для switch'а в domoticz. Новое состояние свитча мы можем увидеть в поле nvalue.

Программируем собственные IoT устройства на базе Arduino-like контроллеров.

Теперь, когда MQTT-брокер доступен из сети и Domoticz публикует туда сообщение каждый раз, когда мы переключаем switch, можно заняться программированием микроконтроллера. Задача: подключиться к сети, подключиться к брокеру MQTT, подписаться на нужный топик и парсить сообщения от Domoticz, выделяя те, поле name которых совпадает с названием, захардкоженым в программу, и выполняя переключения встроенного светодиода в зависимости от нового состояния из сообщения. Впоследствии переключаться будет не встроенный светодиод, а реле, управляя каким-либо процессом.

Для реализации данного функционала я использую клон Arduino Uno, Ethernet Shield, а также Arduino-like плату на основе контроллера ESP8266, который способен подключаться к сети по WiFi. Таким образом, у меня будут две версии устройства - с подключением по Ethernet и по WiFi.

Для работы с MQTT я использовал библиотеку MQTT.h. Для парсинга JSON - ArduinoJSON.h.

Изначально, написав скетч для Arduino, я, выставив значение для буферов MQTTClient и ArduinoJSON в 500 байт и использовав преобразование входных данных в класс String, превысил мизерное количество оперативной памяти в 2 килобайта. Уменьшив размер буферов до 300 байт и использовав "сишные" строки, мне удалось уложиться в данный лимит, и даже оставить 300-400 свободных байт, но стало понятно, что модифицировать и усложнять программу, добавлять дополнительную логику в случае этой платы будет затруднительно.

Исходный код скетча Arduino + Ethernet.

Программировать ESP8266 оказалось сильно проще, так как оперативной памяти здесь на порядок больше.

Исходный код скетча для ESP8266(WiFi).

Отлично! Оба устройства отслеживают изменения значения переключателя в интерфейсе Domoticz, и переключают светодиод соответственно значению переключателя!

Для себя в данный момент я сделал вывод, что гораздо разумнее использовать платы на основе ESP8266, потому что:

  • нет давящего ограничения по оперативной памяти

  • цена за комплект Arduino UNO + Ethernet Shield - 1100 руб, а на плату с работающим из коробки WiFi - 400

Таким образом, мы научились управлять собственным WiFi устройством прямо из интерфейса Domoticz, что открывает перед нами гигантские перспективы для автоматизации

Управляем всем через Яндекс Алису

Domoticz как таковой не поддерживает интеграцию с Алисой, потому что для этого необходим работающий навык Алисы и какой-то облачный интерфейс. Поэтому, для работы с Алисой предлагается следующий костыль: к mqtt брокеру, куда domoticz публикует изменения своих статусов, подключить homebridge - средство для подключения умного дома Apple, и передавать команды от Алисе к domoticz через него.

Поставим все необходимое ПО:

pi@raspberrypi:~ $ sudo apt updatepi@raspberrypi:~ $ sudo apt install -y nodejs npm libavahi-compat-libdnssd-devpi@raspberrypi:~ $ sudo npm install -g --unsafe-perm homebridge homebridge-config-ui-xpi@raspberrypi:~ $ sudo npm install -g -g --unsafe-perm homebridge-edomoticz

Запускаем

sudo hb-service install --user homebridge

Теперь заходим на веб-интерфейс homebridge по порту 8581, логинимся admin:admin и видим qr-код устройства, который сканируем приложением Дом на iphone. Homebridge своим плагином для domoticz должен видеть все устройства, зарегистрированные в domoticz, и когда мы добавим homebridge в приложение Дом на iphone, то мы сможем ими управлять. Происходит это посредством отправки сообщений в domoticz/in. Чтобы мое самодельное устройство начало получать эти изменения своего статуса, я отключил в настройках mqtt domoticz prevent loop. Таким образом, теперь, когда domoticz получает обновления статусов устройств через domoticz/in, он дублирует их в domoticz/out и устройства, слушающие domoticz/out, могут их получить. Позаботьтесь о том, чтобы ваши устройства не отвечали в domoticz/in на изменения своего статуса, чтобы не образовывались петли.

Для подключения Homebridge к Алисе я использовал g-on плагин. По ссылке - исчерпывающее описание настройки.

После окончания настройки мы имеем возможность управлять устройствами Domoticz, используя приложение Дом или Алису

Итог

Результатом моей работы стала система, обладающая приемлемой стабильностью, способная управлять IoT устройствами без необходимости подключения к интернету, позволяющая интегрировать собственные IoT устройства, работающие в сети WiFi, а также управлять этими устройствами голосовыми командами через Алису, или же с помощью облачного сервиса Apple

P.S.

Демонстрация работы системы. Торшер подключен к самодельной "умной розетке", состоящей из реле, которым управляет ESP8266. Розетка по MQTT общается с Domoticz

Подробнее..

Пополнение в семье три истории про Яндекс.Станцию Макс

25.11.2020 16:04:07 | Автор: admin

У нас есть ежегодная традиция: рассказывать читателям Хабра о разработке нового устройства с Алисой. 2020 год, конечно, разрушил многие планы, но эту традицию сохранить удалось.

Сегодня на YaC 2020 мы показали нашу новую колонку Яндекс.Станцию Макс. Это не замена Станции или Станции Мини, а новая, старшая модель в семействе умных колонок Яндекса. В ней мы не просто поддержали более требовательные к железу возможности, но и сознательно отказались от некоторых компромиссов. В результате устройство, которое на этапе идеи должно было отличаться от Станции лишь в нескольких элементах, оказалось не похоже на неё примерно во всём, кроме внешнего вида.

Зачем и как мы этого добились рассказываю в трёх историях. В качестве бонуса вы узнаете о непростой работе с производством в условиях пандемии.

История про звук

В посте про создание Яндекс.Станции мы рассказывали о том, как искали компромисс между воспроизведением звука и распознаванием голоса. У производителей обычной акустики такой задачи нет. Для нас же важно не только хорошо звучать, но и понимать речь человека. Поэтому в Яндекс.Станции мы пошли на достаточно необычное решение. Мы перенаправили воспроизведение средних частот на вуфер, который, в свою очередь, был направлен в противоположную от микрофонов сторону.

Акустика в Яндекс.СтанцииАкустика в Яндекс.Станции

Благодаря этому мы уменьшили искажение человеческой речи, которая преимущественно состоит из тех же самых средних частот.

В более старшей Яндекс.Станции Макс у нас появилась возможность переосмыслить это решение. И на то было как минимум две причины.

Причина первая. Мы отказались от предыдущих, аналоговых микрофонов и заменили их цифровыми Knowles Everest. Важно сразу сказать, что противопоставление качества аналоговых и цифровых микрофонов само по себе лишено смысла, если, конечно, у вас нет цели погрузиться в многостраничный холивар между сторонниками противоположных точек зрения. Тем не менее наши новые микрофоны относятся к более дорогому сегменту, и, по нашему скромному мнению, это одни из лучших цифровых микрофонов для умных устройств. Они отличаются хорошей сбалансированностью: достаточно высокий уровень чувствительности одновременно с хорошим соотношением сигнал/шум и уровнем AOP (Acoustic Overload Point это такой аналог максимального звукового давления для цифровых микрофонов). Можно найти микрофоны и с большей чувствительностью, но с низким AOP, из-за чего при высокой громкости услышать команды будет сложнее (понятно, что слышать команду это комплексный процесс, на который влияет много факторов, но на уровне микрофонов мы постарались выбрать лучший вариант).

Кстати, переход на цифровые микрофоны позволил нам упростить конструкцию устройства за счёт отказа от отдельных аналогово-цифровых преобразователей. В Станции их было аж пять штук. Мелочь, а приятно.

Причина вторая. Технологии Яндекса в области распознавания речи и голосовой активации всё это время тоже не стояли на месте. Пожалуй, самое важное: мы отказались от моделей на базе DNN-HMM и перешли на архитектуру e2e-распознавания с использованием тяжёлых нейросетей-трансформеров. Это значит, что теперь мы не дробим речь на последовательность звуков, чтобы распознавать их по отдельности, а обучаем модель работать со всей фразой целиком. На это требуется значительно больше как вычислительных ресурсов, так и примеров для обучения, но и результат оказывается существенно лучше.

Итак, новые микрофоны, прогресс в голосовых технологиях и более смелый ценовой сегмент позволили нам пересмотреть архитектуру акустики в Станции Макс.

Мы добавили два новых динамика для средних частот. Рядом с ними фазоинверторы. Это такие акустические порты в корпусе, которые инвертируют звук с тыльной стороны динамика и выводят его на фронтальную часть, усиливая звуковое давление. Как правило, в умных колонках не используют фазоинверторы из-за экономии и стремления упростить конструкцию.

Новые динамики разнесли в разные стороны корпуса, тем самым добились более объёмного звука и честного стерео для средних частот. Кроме того, это нововведение позволило нам обновить и вуфер.

В Станции вуфер был сконструирован так, чтобы справляться и с басами, и с вокалом. Компромиссное решение. В Станции Макс мы добавили отдельные среднечастотные динамики, а значит, вуфер теперь можно было переориентировать исключительно на низкие частоты. Новый вуфер Станции Макс в связке с новым пассивным излучателем способен воспроизводить частоты от 45 Гц (по паспорту; по факту начинаем играть от 40 Гц).

Акустика в Яндекс.Станции МаксАкустика в Яндекс.Станции Макс

При этом мощность всей акустики выросла до 65 Вт. На самом деле сумма мощностей всех элементов приближается к 90 Вт, но мы сознательно ограничили потолок на уровне источника питания. Потому что лучше использовать более мощные динамики в комфортных условиях, чем вгонять в предельные режимы работы более дешёвые варианты. К тому же 65 Вт это уже очень громко.

Чтобы раскачать новые динамики, мы решили обновить и без того неплохие усилители, применяющиеся в Станции. В обоих случаях они от Texas Instruments, но в Станции Макс используется более свежая и мощная модель TAS5825M. В неё встроен более производительный DSP (Digital Signal Processor), который необходим для многоуровневой предобработки звука, например для функции с говорящим названием Smart Bass. Причём мы используем два таких усилителя. Первый работает по классической стереосхеме: к каждому каналу подключена пара из среднечастотного динамика и твитера. Второй по параллельно-мостовой схеме (PBTL), то есть два канала соединены параллельно и отвечают за вуфер (запас мощности особенно важен для низких частот).

Все элементы нашей новой акустики спроектированы под Станцию Макс. Даже материал мембраны и глубина её посадки. Это важно, потому что чем больше амплитуда колебаний мембраны, тем больше максимальная длина волны звука и тем более низкие частоты она может играть. Если совершить ошибку на этом этапе, то на экстремальных режимах работы мембрана может начать касаться натянутой на корпус ткани. Этой проблемы мы избежали, но вот с некоторыми другими пришлось повозиться.

В Яндекс.Станции под тканью маскировались два компактных высокочастотных твитера и два пассивных излучателя. В Станции Макс и отверстий стало больше, и сами они тоже стали больше. Из-за этого мы столкнулись с проблемой, с которой раньше нам не приходилось работать. Акустическая ткань, которой обтянут корпус, имеет нехорошую тенденцию провисать над большими отверстиями. Как бы сильно вы её ни натянули, этого эффекта не избежать. Кроме того, под определёнными углами и при высокой яркости освещения отверстия становились различимы для глаз.

Эту проблему мы решили просто: выбрали более плотную ткань, которая существенно снизила качество воспроизводимого звука из-за более низкой проницаемости. Шутка! Для нас было важно сохранить то звучание, которого мы так долго добивались с помощью новой акустики. Пришлось немного попотеть, но подходящее решение нашлось. Мы добавили под ткань тонкую сеть с крупной ячейкой, которая практически не влияет на акустические характеристики, но удерживает ткань от провисаний и визуально маскирует начинку корпуса от любопытных глаз. Кроме того, возможность сохранить менее плотную акустическую ткань позволила нам реализовать нашу давнюю мечту подарить Алисе визуальный язык. Но об этом чуть позже.

Ещё одна важная деталь про звук, которая относится ко всем трём моделям Станции. Мы достаточно часто встречаем пользователей, которые используют дома сразу несколько колонок. К примеру, Станция стоит у телевизора, а Станция Мини на кухне. Теперь достаточно будет сказать: Алиса, включи музыку везде, чтобы трек заиграл синхронно на всех ваших Станциях. Это изменение постепенно станет доступно на всех умных колонках Яндекса.

История про видео

Раньше на КиноПоиске 4K-контента было немного, но теперь его становится больше. Поэтому мы хотели дать возможность владельцам 4K-телевизоров смотреть фильмы и сериалы в соответствующем качестве через колонку с Алисой. Но одним лишь бэкендом эту задачу не решить.

Видео в 4К-разрешении существенно более тяжёлое, чем народное Full HD (спасибо, кэп). Чтобы оно не тормозило при загрузке, применяется более совершенный стандарт сжатия H.265, также известный как HEVC. Как вы уже догадались, в нём используются более сложные алгоритмы. Поэтому в Станции Макс мы перешли на платформу SoC Amogic S905X2 вместо Allwinner R18. В её основе те же четыре ядра ARM Cortex-A53, но теперь они работают на большей частоте 1,8 GHz, к ним добавилась более мощная графическая подсистема Mali-G31 MP2. И, что самое важно: появилась встроенная поддержка новых кодеков, в частности HEVC 4K@60fps. Благодаря этому колонка уверенно справляется с воспроизведением 4К-контента. Оперативной памяти, кстати, тоже стало больше: 2 GB вместо 1 GB.

Уметь воспроизводить контент хорошо, но его ведь надо ещё скачать из сети. Чтобы смотреть видео в разрешении 1080p, нужна скорость в 810 Мбит/c. Для 4K может потребоваться существенно большая пропускная способность до 30 Мбит/с. Поэтому в Станции Макс мы поставили Wi-Fi-модуль 7265D2W от Intel. Он уже доказал свою надёжность при работе с 4К-контентом. Но так как домашняя беспроводная сеть далеко не у всех идеальна, добавили ещё и гигабитный Ethernet.

Электроника колонки полностью обновилась: если посмотреть на список ключевых компонентов, то пересечений со Станцией практически нет. Это отразилось и на внутренней конструкции устройства: мы не просто заменили один SoC на другой, но и разделили электронику на самостоятельные платы их стало 6. Например, процессор и память теперь не соседствуют с электроникой усилителя и источника питания, а живут на отдельной плате. Разделение полезно, потому что ускоряет разработку, отладку и обслуживание, что особенно важно для такой сложной конструкции. Но при сборке устройства нас поджидал сюрприз.

Когда на DVT-этапе мы собрали на фабрике первые 20 колонок, которые следующим шагом уже должны были пойти в серию, оказалось, что даже у опытного инженера не получается произвести сборку быстро и точно. Это плохо не только из-за снижения скорости сборки новых устройств, но и из-за усложнения сервисного обслуживания. Надо было срочно искать решение.

В результате двух недель мозгового штурма оно было найдено: мы изменили метод соединения плат между собой, заменив гибкий шлейф на жёсткий разъём. Собирать колонку стало гораздо легче. Звучит просто, но для этого пришлось серьёзно изменить трассировку двух плат, затем заново их изготовить и тщательно проверить. И вот тут-то кроется главная мораль этой маленькой истории: любая, даже малозначительная на первый взгляд проблема, может существенно (на месяцы!) растянуть сроки разработки устройства, если выявить её слишком поздно. А выявить её на раннем этапе можно только тогда, когда разработчики устройства находятся в тесном контакте с фабрикой-производителем. На этапе отладки производства нужно буквально сидеть на соседнем стуле и смотреть, как твой прототип собирают в боевых условиях. Как вы понимаете, эпидемия коронавируса поломала все подобные процессы. Нам пришлось учиться налаживать производство по зуму, расширять прототипирование в Москве, а затем терять время на пересылку прототипов. Это сложно, долго и дорого, но без этого нельзя выпустить хорошее устройство.

И ещё одна история про качество. Любой производственный конвейер включает этапы тестирования и приёмки. Причём тестировать надо не только устройство, но и каждую отдельную плату, чтобы собирать уже из проверенных компонентов. Эти этапы включают в себя серию тестов: как ручных, так и автоматических. К примеру, любая крупная фабрика проводит оптический контроль, чтобы убедиться, что электронные компоненты установлены именно туда, куда надо. Лучшие фабрики ещё и 3D-рентгенографию (жутко дорогая штука) используют, чтобы выявлять плохую пайку. У нас всё это было, но для нас этого было мало.

Приведу наглядный пример. Если в цепь питания памяти поставить конденсатор не на 22 мкФ, а на 10 мкФ, то даже достаточно дорогое, но стандартное тестирование не заметит никакого подвоха. Колонка даже будет прекрасно работать. До тех пор, пока при сильной нагрузке (на том же 4K-контенте) пульсация питания памяти не выйдет за границы допустимого коридора. Это, кстати, реальный пример с отладки производства, а не теория.

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

Наш стенд для тестирования процессорных плат (SoM)Наш стенд для тестирования процессорных плат (SoM)Другой наш стенд для тестирования backplane-плат на боевом дежурстве в КитаеДругой наш стенд для тестирования backplane-плат на боевом дежурстве в Китае

История про экран

Когда вы говорите с Алисой в телефоне, то видите карточки-ответы в чате. То есть воспринимаете информацию и слухом, и зрением. А вот когда обращаетесь к помощнику в умной колонке, то слышите только голосовой ответ. Это нормально: мы же и по телефону так же общаемся. Но видеть собеседника, а точнее, видеть с его стороны какой-то визуальный отклик многим из нас важно.

В новой колонке мы хотели дать Алисе визуальный отклик, подарить ей возможность доносить до пользователя информацию не только голосом. К примеру, не только проговаривать, но и показывать прогноз погоды. Или визуально подтверждать изменение громкости, установку лайка. Или использовать колонку как часы. Даже счётчик уведомлений пришёлся бы кстати. (Лично для меня важно видеть числа при установке будильника, но, возможно, я один такой параноик.) И всё это анимированно, а не в статике. И чтобы не менее 50 fps для плавности. Да, простых путей мы не искали.

В этот момент люди обычно представляют себе экран. Но если экран будет большой (например, как у планшета или ноутбука), то это будет уже другое устройство для других задач, ему не найдётся места у телевизора.

С другой стороны, если сделать маленький ЖК-экранчик, уместить его на корпусе Станции и выводить на него то же, что и в приложениях с Алисой, то никто на нём ничего не увидит. Это же колонка, а не смартфон, который держат в руках.

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

Принципиальная идея родилась быстро: а давайте поместим экран под ткань! Проблемы с идеей начались буквально с первого же шага. ЖК-экран мы не используем: его никто под тканью не увидит. Поэтому решили делать светодиодный экран. Да, мы не первые, кто додумался до этого. Но кажется, мы первые, кто заморочился этим НАСТОЛЬКО глубоко. Сейчас всё расскажу.

Казалось бы, светодиоды штука простая, экраны из них делают регулярно. Но нам пришлось обеспечивать высокие характеристики при необходимости минимизации цены, и поэтому ряд решений был отметён сразу. Например, адресные светодиоды WS2812 (первое, что пришло в голову) оказались слишком дорогими, и их решили не применять. Есть специализированные микросхемы для экранов но ни одна нас не устроила: или частота кадров была недостаточная, или количество градаций невелико, или цена слишком высокая. Решили делать на микроконтроллере и буферах с регистрами.

Сначала экран хотели сделать цветным, с разрешением 13 13, с глубиной цвета 8 8 8 бит. Но всплыла проблема. Дело в том, что RGB-светодиод на самом деле состоит из трёх кристаллов красного, зелёного и синего. Они расположены на расстоянии полумиллиметра друг от друга. И оказалось, что нам мешает ткань: она неоднородная, и нить может заслонять красный кристалл, оставляя видимыми зелёный и синий. Причём картина меняется от диода к диоду и ещё зависит от угла, под которым смотришь на экран.

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

Заодно решили увеличить разрешение: 13 13 это маловато. Пробовали 15 15, 16 17, в итоге пришли к финальному решению к разрешению 25 16. А это, на минуточку, 400 диодов!

Теперь про яркость. Обычно у диодных экранов не более 16 градаций цвета. Нередко и того меньше: они или горят, или не горят. Но у нас должна быть плавная, красивая анимация, а для человеческого глаза 16 градаций это очень скудно. Мы просто не увидим никакой плавности в изменении яркости. Так что была поставлена задача обеспечить глубину яркости 8 бит, то есть 256 градаций.

Первым делом построили классическую схему динамической индикации: картинка отрисовывается построчно, то есть в каждый момент времени горит только одна строка. При этом за счёт инерции зрения мы видим картинку целиком. Столбцы управлялись двумя микросхемами ICN2595: это 16-битный сдвиговый регистр со стабилизатором тока на каждом канале. А строки двумя ICN2012: это 8-битный дешифратор с мощными транзисторами на каждом канале.

Но давайте поговорим о времени. 50 кадров в секунду это 20 миллисекунд на кадр, а значит, 1,25 мс на строку. Поскольку количество градаций 256, за время отображения строки её нужно 256 раз по-разному перерисовать. Меньше 5 микросекунд на прорисовку каждого варианта! Это потребовало быстрого микроконтроллера с немалым объёмом памяти. Выбрали STM32F411.

Вот только всего строк 16, а значит, яркость картинки в итоге лишь 1/16 от максимальной. Слишком тусклая получилась картинка! Попробовали поднять ток светодиодов со штатных 5 до 30 мА. Не помогло.

В конце концов мы решили отказаться от динамической индикации и перейти на управление каждым диодом. Убрали дешифраторы и установили 25 регистров. Включили их последовательно и получили 400-битный сдвиговый регистр со светодиодом на каждом бите. Это позволило обеспечить работу светодиода на штатном токе, а яркость по сравнению с динамическим вариантом возросла в 16 раз. Заодно снизились и требования к быстродействию микроконтроллера: теперь каждые 20 мс нужно перерисовать экран 256 раз, а не 16 256 раз.

С диодами разобрались осталось разобраться с пикселями. На UX-исследованиях мы поняли, что символы на нашем экране воспринимаются людьми лучше, если пиксели расположены максимально плотно друг к другу, а не как у старого электронного будильника.

Когда-то это выглядело примерно такКогда-то это выглядело примерно так

Но диоды нельзя расположить ещё ближе друг к другу: они и так крайне плотно соседствуют после решения увеличить разрешение. А значит, работать надо с оптическими эффектами. И вот тут-то начинается самое интересное.

Расстояние между пикселями возникает не потому, что этого кто-то хочет. Это следствие конструкции любого диодного экрана. Между диодами должна быть физическая перегородка, чтобы они не засвечивали друг друга. Поэтому поверх платы с диодами накладывается пластина с отверстиями-световодами.

Казалось бы, сократите толщину стенок между отверстиями на пластине и дело в шляпе. Но в реальном мире приходится плясать от технологического процесса производства пластины. И отлить из пластика пластину так, чтобы толщина стенки была меньше, чем 0,4 мм, просто не получится. А любые альтернативные варианты будут неприлично много стоить.

Мы пошли другим путём. Наше решение заключается в том, чтобы форма световодов напоминала усечённую пирамиду. Их ширина на выходе больше, чем у основания. В результате световое пятно увеличивается, а расстояние между пикселями визуально уменьшается.

Вид световодов в разрезеВид световодов в разрезе

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

Вот такой вот бутерброд. И всё ради того, чтобы изображения, текст и числа выглядели более естественно.

Но визуальный язык это не только железо. Когда мы начинали, то думали примерно так: 25 16 это размер, который ближе к фавиконке, он в три раза меньше, чем разрешение экрана у Nokia 3310. Нужен был новый визуальный язык для сверхмалых разрешений, чтобы ответы Алисы выглядели естественно. Этого мы добились с помощью нескольких хитростей. По максимуму отказались от статичных фреймов. По краям добавили полупрозрачные пиксели для смягчения резкости изображения. Комбинация простая и логичная: невысокое разрешение компенсируем высоким fps, глаз просто не успевает зацепиться за пиксели. При этом для системных уведомлений и цифр выбрали обычный пиксель-арт, чтобы сохранить их наглядность в статике.

Теперь, когда пользователь будет уточнять погоду, менять уровень громкости или решать множество других задач, Алиса сможет не только проговорить ответ голосом, но и показать.

ПогодаПогода

И ещё кое-что. Алису отличает её эмоциональность. В режиме болталки, когда она стремится поддерживать диалог, ответы могут нести явный эмоциональный оттенок. Теперь эти эмоции мы сможем передать и визуально. Можно сказать, что это наш самый смелый шаг во всём проекте: раньше Алиса передавала эмоции исключительно голосом.

ЭмоцииЭмоции

Заключение

Одним постом весь проект даже близко раскрыть не получится (если интересно узнать о чём-то подробнее, то пишите вопросы, а мы попробуем посвятить им отдельные посты). Но надеюсь, удалось подчеркнуть основное. Станция Макс это не апгрейд Станции, а новая, старшая модель, которая прошла самостоятельный (и крайне непростой в условиях пандемии) цикл разработки, получила новый, трёхполосный стереозвук, поддержку 4K, LED-экран и даже пульт.

Если у вас уже есть колонка с Алисой, то рекомендую заглянуть в уютный чат и новостной канал сообщества пользователей Яндекс.Станции. Для пользователей это хороший способ обмениваться опытом, а для нас видеть и чувствовать то, что волнует сообщество. К примеру, мем с пожеланием дать возможность подключать свою акустику мы заметили и добавили порт AUX OUT в Станцию Макс.

Подробнее..

Нихао, Google как виртуальные помощники победили в Китае

19.03.2021 16:09:40 | Автор: admin

Для многих из нас знакомство с умными помощниками началось со Скрепки в Ворде. Это был травмирующий опыт, как и многое другое в 90-х. Спустя несколько лет появилась первая версия ассистента Google, Siri, Кортана и Алекса. Стоило им заговорить по-русски, и Яндекс выпустил свою помощницу, острячку Алису. Следом подтянулись Маруся от Mail.ru Group и другие отечественные разработки. К 2020 году говорящих искусственных интеллектов стало еще больше, как и способов взаимодействия с ними. А сами помощники поселились не только в компьютерах и смартфонах, а еще и в колонках.

Удивительным образом, в 2020 году первенство в умной акустике и невидимых советчиках захватил Китай.

Что такое умный голосовой помощник? В теории, которая все сильнее сближается с практикой, это голос и пара электронных ушей, которые связывают вас с интернетом и умным домом. Спросите его, который час, сколько граммов сахара в ложке, закажите билеты в кино и он найдет верный ответ в интернете и озвучит его.

Китайский бум

Умная колонка постепенно становится необходимостью для китайских домохозяйств и обошла по популярности смарт-ТВ. В 2019 году китайцы купили 52 миллиона умных колонок с виртуальными ассистентами 41% от всех мировых поставок. Согласно статистике издания The Drum, 13,9% рынка заняла китайская компания Baidu с брендом умных колонок Xiaodu. Они были третьими в мире после Amazon с 29,9% рынка и Google с 19,1%. Третьими в мире, первыми в Китае.

Во второй половине 2019 года ситуация изменилась: Baidu обогнала Google и заняла второе место. По итогам года лидером стала китайская компания Alibaba, которая продала 15,6 миллиона колонок. Baidu продала 14,9 миллиона устройств, Xiaomi 11,3 миллиона.

Причины успеха

Аналитики отмечают, что взрывной рост объясняется несколькими факторами. У Amazon и Google очень низкая доля проникновения на китайском рынке, где есть свои поисковики, карты и сервисы. Далее, в случае Xiaodu роль сыграла открытая экосистема. Baidu позволяет сторонним производителям интегрировать команды своего виртуального помощника в их продукты. Такую же политику Amazon проводит с голосовыми командами Алексы. И решающий удар заключается в агрессивной скидочной политике и субсидировании потребителей, чем занимаются все участники гонки.

Дело обстояло так: китайские компании стратегически снижают цены на умные колонки во время предпраздничных распродаж. Расчет был на то, что продвинутые потребители будут покупать умные гаджеты в подарок для близких и тем самым быстро повысят темпы внедрения. Что привезти родственникам на Китайский Новый год? Дешевую колонку.

Примечательно, что такой же политики на домашней территории придерживался Amazon. Дискаунты и скидки на колонки Echo всегда приходились на распродажи, включая амазоновскую черную пятницу, Amazon Prime Day. Это сработало для американских компаний в США, но особенно успешно для местных компаний в Китае, просто за счет огромного числа потенциальных клиентов.

Кроме того, помогла нативная поддержка китайского языка. Помощник Baidu, DuerOS, распознает родной язык и ввод иероглифов. AliGenie, помощник разработки Alibaba, знает традиционный китайский и скоро заговорит на всех его диалектах, включая кантонский и сычуаньский. Ни одна зарубежная компания не пыталась толком разобраться в языковых вопросах, так что у местных было значительное преимущество, которое они успешно реализовали.

Это весьма важный момент, потому что нативная поддержка языка обеспечивает качественную рекламу, которая настигает пользователя везде, где стоит колонка. Судя по отчету агентства Mininglamp Technology, которое распространила Baidu, голосовая рекламаработает весьма эффективно. В ходе одного живого эксперимента пользователи получили одинаковую рекламув виде поп-апа в приложении и голосом на колонке. В первом случае конверсия составила 26,8%, а во втором 48.9%.

Как и на Западе, рекламодатели в Китае стараются давать контент с высокой конверсией. В случае умных помощников на смартфонах и колонках можно использовать голос, изображения, контакт со взглядом и распознавание жестов, чтобы давать высокотаргетированную интерактивную рекламу. The Drum цитирует источник из Baidu, согласно которому китайскому поисковику уже удалось заключить контракты с KFC, Haier, Pizza Hut, Clinique и другими брендами. Они весьма эффективно пользуются возможностями нового прямого маркетинга.

Юзкейсы

Если привлекательность колонки для рекламодателей ясна, то потребителям они интересны, в первую очередь как способ слушать музыку. Именно ради этого их покупают и дарят в качестве доступной альтернативы музыкальному центру. Затем слушатели понимают, что в колонке живет умный помощник, и превращаются в пользователей. Они начинают задавать простые вопросы о новостях, музыке и на бытовые темы. Например, Как называется эта песня?, Какие последние новости?, До какого часа работает магазин?.

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

Та самая колонка, которая умеет имитировать родительский голос.Та самая колонка, которая умеет имитировать родительский голос.

Другая полезная сфера настройки для ограничения использование устройства ночью и в течение дня, чтобы дети не просиживали бесконечно за гаджетами. Забегая вперед, родителям продают кибербезопасность для детей, реализуемую при помощи технологий распознавания лиц на умных дисплеях.

Важно понимать, что отдельной статистики по использованию функций умных ассистентов на разных устройствах нет. Сейчас помощников чаще всего запускают на смартфонах, колонки на втором месте: 58,2% против 22,9% пользователей на 2019 год.

Тем не менее, сегмент колонок показывает стабильный рост и глобально, и в Китае. Дальнейшее распространение зависит от новых функций и того, насколько успешно получится продавать их пользователям. Аналитическая компания Canalys выделяет следующей точкой роста умные спикеры с дисплеями. Ей вторят коллеги из Strategy Analytics: В третьем квартале 2020 года процент продаж умных дисплеев вырос до 26% от всех умных колонок, по сравнению с 22% годом ранее.

По итогам квартала число пользователей подскочило до 9,5 миллиона человек, до 21%, а продажи колонок без лица упали на 3%. Победителем из гонки вооружений вышел Amazon с умным дисплеем Echo Show 5, на втором месте Baidu, чья модель Xiaodu Zaijia 1c хорошо продается в Китае. Все остальные производители, кроме Xiaomi, тоже показали уверенный рост.

Смарт-дисплеи: новый драйвер продаж

Если бы не вызванные пандемией перебои с поставками, цифры могли бы разительно отличаться. Тренд, тем не менее, очевиден и наиболее нагляден в Китае за счет местного производства. Рынок устройств с умными помощниками в ближайшие три года будет расти именно за счет смарт-дисплеев.

Что такое смарт-дисплей на практике? Это девайс с небольшим экраном, который стоит на рабочем столе, на кухне или в спальне. На нем можно включить музыку, запустить видео со стримингового сервиса или YouTube за завтраком или ужином. Посмотреть или прочитать рецепт нового блюда. В смарт-дисплее живет умный ассистент, который теперь может отвечать на запросы голосом и с помощью экрана. А еще показывать запросы в поиске, покупки, расписание и календарь. Плюс, дисплей можно использовать для развлечения детей: запускать мультики утром, включать сказку на ночь.

В России этот тренд тоже заметили. Поэтому Сбербанк выпустил в конце прошлого года умный дисплей SberPortal, следуя примеру западных и китайских компаний. Правда, вместо того, чтобы сделать доступное устройство, российский банк выпустил дорогой (~30 000 рублей) планшет с колонкой для условного среднего класса.

Аналитики компании-разработчика технологий разговорного ИИ Just AI посчитали, что в основном россияне пользуются Алисой разработки Яндекса: согласно телефонным опросам, ей отдают предпочтение 80% пользователей. Следом идут Ассистент Google c 20% и помощник Apple Siri с 11%. В сумме получается более 100%, поскольку россияне говорят с несколькими ассистентами одновременно.

По прогнозам Just AI, потолок продаж на конец 2020 года в России составлял 1 миллион устройств, а продано должно было быть 800 тысяч умных колонок. Реальность оказалась более радужной: Яндекс выпустил статистику, согласно которой всего в стране было продано более 1,3 миллиона колонок только с Алисой, разных производителей. То есть, у россиян есть интерес к этой технологии, и мы, судя по всему, с опозданием на пару лет идем в русле мировых трендов.

Китайский и американский опыт показывают, что индустрия голосовых ассистентов остается уделом крупных корпораций. Субсидируя выпуск своих устройств, они создали огромный барьер для доступа к рынку голосовых ассистентов, счет входа идёт на миллиарды долларов.

Мы видим ставку на новый слой поиска в интернете голосовой. IT гиганты ринулись покорять потенциально огромный рынок голосового поиска. Такие волны интереса к технологиям мы видели уже не раз. Например, похожие ожидания сопровождали очередной виток развития VR и AR индустрии несколько лет назад. Но в отличие от виртуальной и дополненной реальности, корпорации успели вложить миллиарды долларов в формирование рынка, осталось понять есть ли этот рынок.

Как вы считаете, какое будущее ждет умных помощников в России? Поделитесь своими мыслями в комментариях.

Подробнее..

Управление системой NooLite через голосового помощника Алиса с помощью умного пульта Яндекса

21.04.2021 12:06:56 | Автор: admin

Я хочу рассказать о одном из способов управлять беспроводной электрикой NooLite с помощью голосового помощника и смартфона (плюс как бонус с компьютера или любого ИК-пульта без Интернет-шлюза).

Вся электрика в квартире и на даче у меня построена на системе NooLite. Почему именно NooLite? Начну издалека. С продукцией фирмы "Ноотехника" я познакомился еще в прошлом веке. Это были блоки защиты галогенных ламп. Они мне очень понравились - свет включался плавно и лампы служили намного дольше. Но вскоре на смену галогенным лампам пришли люминисцентные и блоки защиты стали неактуальны. Потом в квартире был ремонт, стоивший мне немало седых волос и когда через некоторое время возникла необходимость перенести и добавить выключатели, одна мысль о штроблении стен, пыли, грязи и переклейке обоев просто ввергала меня в ужас. Именно тогда я и познакомился с системой беспроводного управления освещением от NooLite. В то время еще не было Xiaomi, Sonoff, Tuya и других недорогих альтернативных решений. Были системы умного дома от европейских серьезных производителей, но там цена вопроса была просто неадекватной. Я решил все свои проблемы с переносом выключателей, разбиением освещения на зоны, сценариями освещения, проходными выключателями, включением-выключением вентиляции и удаленным управлением светом в сараях и гараже на даче с помощью самых первых NooLite, без шифрования и обратной связи.

Все что я сделал много лет назад работает до сих пор, батарейки в пультах менял 1 или 2 раза, в зависимости от интенсивности пользования. Потом добавился беспроводной датчик движения на двери в туалете, позволяющий маленькому ребенку без страха ходить туда (свет включается уже при начале открывания двери) и автоматически выключающий свет и таймеры в туалете и ванной, включающие вытяжку через заданное время после зажигания света и поддерживающие ее включенной некоторое время после выключения. Одно время я крепко задумался о настоящем "умном доме", купил несколько силовых блоков, пультов, датчики температуры и влажности, продумывал структуру. Но потом передумал, так как понял что в не такой уж большой двухкомнатной квартире мне это не нужно. Я так и остался верен системе NooLite, хотя сейчас хватает альтернатив и некоторые из них дешевле и выглядят, возможно, современнее чем изделия Ноотехники. Но тут у меня есть определенные условия. Во-первых, управление моим освещением и электронными устройствами не должно зависеть от китайского облака и вообще от наличия/отсутствия Интернет, тем более что в последние месяцы у нас в городе практикуется периодическое его отключение или замедление (Интернет и wi-fi только как бонус в управлении). Во-вторых, я не хочу держать постоянно включенными узкоспециализированные шлюзы и компьютеры, и так хватает устройств, которые включены постоянно. В-третьих, для меня очень важны надежность и гарантия, больше чем цена. У меня сами по себе перестали функционировать две розетки SmartPlug от Хiaomi и я не смог их починить. Пришлось выбросить. Вышедшие из строя силовой блок и таймер для санузлов в Ноотехнике мне просто поменяли на новые, не уточняя кончилась ли гарантия и не спрашивая при каких условиях они перестали работать (при проведении экспериментов бывает всякое). Это Lifetime warranty в том виде, в котором она мне нравится. Ну и в-четвертых, дополнять уже работающую и хорошо зарекомендовавшую себя систему, проще и легче чем городить что-то другое.

Сейчас уже вовсю используется новое поколение NooLiteF с обратной связью и шифрованием, но для пользователя мало что поменялось, монтаж, привязка и отвязка такие же простые, надежность тоже вроде на высоте. А обратная связь, прошивка "по воздуху" и возможность считать состояние устройства это бонус, кому-то нужный, кому-то нет.

Вроде все хорошо, но сейчас мне уже хочется, как дополнительную опцию, иметь иногда возможность управления NooLite через Интернет. Такая опция у Ноотехники есть. И даже существуют приложения для смартфонов под Android и iOS. Но для этого нужно докупать Интернет-шлюз PRF-64 или контроллер PR-1132, которые стоят больше $100 и должны быть все время включены. Это еще одно постоянно включенное в розетку устройство с весьма узкими возможностями. А с появлением дома умной колонки с голосовым помощником Алиса, захотелось "подружить" Алису с NooLite.

Раз хочется сделаем. Для начала я забил в поиск Гугла " NooLite и Алиса". Зачем изобретать велосипед, вдруг уже давно все решено? И да, мне выдало несколько уже готовых решений, но все они показались мне излишне сложными. Вот например:

На Хабре есть статья "Обход noolite роутера через mtrf64+esp8266+MQTT Buddy Android app".

Там сказано что модуль mtrf64 подключен по UART к esp8266, которая в свою очередь выходит в интернет через ваш роутер и подключается к MQTT бесплатному брокеру. Вы, как пользователь, через мобильное приложение так же подключаетесь к этому облачному брокеру и начинаете посылать команды в MQTT каналы, которые в свою очередь разбираются на лету и в зависимости от команды передаются по UART MTRF64 модулю. Проблему управления через Интернет без дорогостоящего и узкоспециализированного интернет-шлюза от Ноотехники это решает. Но "бесплатный облачный брокер" в связке с ESP8266 почему-то не вселяет в меня уверенности в надежности. Да и голосовое управление прицепить будет непросто (или невозможно?). А значит мне не подходит.

Второе решение реализовано через цепочку навык "Домовенок Кузя"-IFTTT-IHC-шлюз Broadlink (то есть все равно покупка шлюза)-NooLite.

Перспектива регистрации на всех этих сайтах и прописывания настроек меня как-то не воодушевила. Надежность работы такой дли-и-и-нной цепочки тоже не внушает мне доверия. Да и задержка исполнения 3 сек. и более напрягает. Хочется более простого и изящного решения без такой длинной цепочки.

Я начал думать и ставить себе задачу. Покупать какие-то шлюзы без уверенности что это мне нужно и я буду этим пользоваться не хочется. Значит нужно делать из того что есть в наличии. А что у меня есть?

  1. Колонка IRBIS с голосовым помощником Алиса.

  2. Несколько силовых блоков первой серии без обратной связи.

  3. Модули MT1132 и MTRF-64 для управления NooLite и NooLite-F c помощью контроллеров.

  4. Несколько плат Arduino.

Не густо. Логическая цепочка не просматривалась до тех пор пока мне на глаза не попал умный пульт Яндекса. И сразу все встало на свои места. Яндекс напрямую работает со своим пультом, а тот умеет записывать любой ИК-сигнал и передавать его по команде. К Arduino подключены ИК-приемник и модуль управления системой NooLite. По-моему, гениально проще некуда. Умный пульт от Яндекса стоит меньше чем $20 и это устройство универсальное, может использоваться для управления другой техникой (кондиционер, телевизор, ресивер и т.п.), а значит покупка его не бессмысленна. Вероятно, точно также будет работать и универсальный пульт от Tuya, который стоит еще дешевле, но после знакомства с умной колонкой IRBIS (звук и микрофоны у нее довольно посредственные а часть сервисов Яндекса не работает) я убедился что лучше заплатить дороже но взять оригинал, есть вероятность что будет выше качество и меньше глюков. Поэтому пульт выбрал оригинальный от Яндекс, не хочется взять стороннее решение, сэкономить пару долларов и узнать что снова часть функций не работает.

Теперь о модулях управления NooLite. У меня в наличии есть несколько вариантов модулей, которые можно подключить к контроллеру (Arduino).

О модулях MTRF-64 и MTRF-64-USB

По сути MTRF-64 и MTRF-64-USB это одно и то же. Просто у MTRF-64 незапаяна часть деталей и отсутствует корпус и USB разъем, но присутствуют пины.

Модуль MTRF-64, как видно из названия, 64 канальный, может отправлять команды старой системе без обратной связи и отправлять команды и принимать ответ новой системе с шифрованием и обратной связью.

MTRF-64MTRF-64

Технически сделано так, что именно с Arduino MTRF-64 использовать неудобно. Arduino запитывается напряжением 5В а MTRF-64 - 3,3В. Потребуется отдельное питание (на плате не запаян стабилизатор питания 3,3В, хотя место под него есть), отстутствует согласование уровней UART (это ведь не сложно предусмотреть и пара транзисторов практически не увеличила бы цену модуля).

MTRF-64-USB то же самое с запаянной на плате микросхемой переходника USB-UART и еще кое-какими деталями.

MTRF-64-USBMTRF-64-USB

Смысл существования данного контроллера мне вообще малопонятен. Я слабо себе представляю как его реально можно использовать.

Казалось бы, отличная вещь, позволяющая упростить и ускорить процесс отладки проектов. Подключил в USB, посылай из терминала в COM порт последовательности... Но у меня так сделать не получилось. В техдокументации на контроллер такая возможность тоже не описана. Чтобы работать с контроллером есть специальная программа nooLite_ONE. Ее можно скачать с сайта Ноотехники. Но это если найдете, потому что со страницы самого контроллера ссылки на нее на данный момент нет.

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

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

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

Мысли вслух и хотелки...

Мне вообще непонятен смысл существования двух недомодулей MTRF-64 и MTRF-64-USB. Зачем плодить сущности? Гораздо больше смысла было бы производить и продавать одну полную версию со всеми запаянными деталями и USB-разъемом, пинами и корпусом в комплекте и любой человек, приобретя его, смог бы использовать его по своему усмотрению без "допиливания".

Помечтаем:

Хорохо было бы, если бы существовала внятная инструкция как настроить терминал для отправки команды на блок управления без спецсофта, если это вообще возможно...

А еще, хорошо бы иметь простую кроссплатформеннуюя программку или страницу на сайте где можно было бы выбрать что вы хотите отправить контроллеру и получить готовый набор байт с посчитанной контрольной суммой...

Да, и согласование уровней логики неплохо бы учесть, позаботиться о пользователях и упростить им жизнь, ведь изделие нужно не просто сделать, нужно еще чтобы его покупали...

Теперь про более старые версии контроллеров (уже сняты с производства).

О модулях MТ1132 и МР1132

MТ1132 - 32 канальный, может только отправлять команды системе без обратной связи.

MT-1132MT-1132

Питание 3 ... 5В, к Arduino подключается напрямую, ничего согласовывать не нужно. Управление модулем осуществляется через стандартный интерфейс UART. Скорость передачи данных - 9600 бит/сек., 8 бит данных, 1 стартовый бит, 1 столовый бит, бит четности - отсутствует. Передача от младшего к старшему биту. Для управления модулем необходимо передать через UART пакет из 12 байт. Описание отправляемых данных есть в техдокументации (не идеальной, но какая есть) к модулю.

МR-1132 - 32 канальный, может только принимать данные от датчиков NooLite.

MR-1132MR-1132

Чтение документации на модуль MTRF-64 и готовых библиотек навеяло на меня печаль. 64 канала для эксперимента мне не нужны, шифрование и обратная связь тоже, так как силовых блоков NooLiteF у меня нет, буду использовать те что были куплены ранее, без обратной связи, в частности SU-111-200. Поэтому выбор был сделан в пользу MT1132, пусть он уже снят с производства, но он у меня-то он есть в наличии. На том же принципе совсем несложно сделать и управление с шифрованием и обратной связью, было бы желание (просто вместо 12 байт, как для MT1132, отправлять 17 байт на MTRF-64).

Наверно основным плюсом для меня было то что на GitHub обнаружилась библиотека ardunoo для управления MT1132 с помощью Arduino от zhum (Сергей Жуматий), за что ему огромное спасибо! Эта библиотека сводит написание программы управления к нескольким строкам. А умеет библиотека все немало: привязывать и отвязывать силовые блоки, включать и выключать свет, записывать и исполнять сценарии, плавно менять яркость источника света.

В комплекте с библиотекой есть пример скетча с комментариями, который при запуске позволяет выполнять все эти действия вводя буквы в штатный Serial Monitor среды Arduino.

О грустном...

Вот если бы Ноотехника ВСЕ свои изделия сопровождала понятной документацией, примерами и библиотеками, как это сделал для них Сергей Жуматий...

Мало сделать отличное "железо", это "железо" нужно продать, убедив покупателя что купив NooLite он не встретит трудностей с внедрением и настройкой! Чтение документации на MTRF-64 и знакомство с программой nooLite_ONE меня в этом не убедили.

Что ж, определились, будем использовать модуль MT1132. Подключаем Arduino к модулю в соответствии со схемой из документации.

Я использовал контактную макетную плату с набором проводов, это очень ускоряет монтаж. TX модуля подключаем к 10 пину а RX к 11 пину Arduino. Для первых экспериментов взял свой "боевой" китайский клон UNO, уже паленый, с усиленным стабилизатором питания (от него же будет питаться и MT1132), когда все заработало заменил UNO на NANO, его удобно разместить прямо на макетной плате. Для приема команд нам понадобится IR приемник. У меня нашелся TSOP2836, если не ошибаюсь (пробовал и другие, разницы в работе особо не заметил, важно только соблюдать распиновку). Подключаем его в соответствии со схемой включения Vcc к 5В, GND к общему проводу а OUT к 2 пину Arduino.

Берем пример скетча из библиотеки ardunoo и исправляем в ней строку с выбором канала на котором будем работать с силовым блоком, выбираем 8-й канал.

 noo.channel(8);     // Let's command 2-th channel

Запускаем скетч, открываем Serial Monitor и введя в него букву "b" привязываем силовой блок. Теперь можно поиграться, вводя "n" зажигаем свет, "f" - гасим, "x"- меняем состояние и т.п. Убедились что все работет? Идем дальше.

Теперь нам понадобится стандартная библиотека IRremote. которая предназначена для упрощения работы с приёмом и передачей ИК сигналов. С помощью этой библиотеки будем принимать команды с пульта, и выводить их в окно Serial Monitor среды Arduino.

Берем любой IR-пульт (я взял от автомобильного трансмиттера).

Нажимая кнопки, в окне монитора последовательного порта видим соответствующие им коды, расшифрованные arduino. Я не знаю коды всех ли пультов сможет расшифровать библиотека IRremote, но всегда можно что-то подобрать, что по командам не будет пересекаться с устройствами в доме.

Я выбрал три кнопки и решил что одна из них будет включать свет, вторая выключать, а третья - менять состояние.

Вписываем коды выбранных кнопок для вызова функций noo.on(), noo.off() и noo.onoff(). При желании можно дописать другие функции и коды.

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

Теперь переходим к управлению с помощью голосового помощника Алиса. Запускаем Яндекс, переходим в раздел устройства.

и выбираем Умный пульт Яндекс (его я установил раньше и планирую использовать и с другими устройствами, имеющими IR-порт). Нажимаем кнопку "Добавить устройство". Выбираем "Настроить вручную".

Вводим название устройства (имеется ввиду наше устройство), я назвал его "На полке". Название устройства нужно выбирать несложное и легкопроизносимое, иначе Алиса будет ошибаться и неправильно распознавать это название, что сделает ввод команд затруднительным.

Дальше производим обучение пульта. Нажимаем "Добавить команду".

Задаем голосовую команду, выбирая из предложенных вариантов или пишем свою. Следуя подсказкам берем пульт.

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

Так последовательно записываем все команды для выбранных кнопок.

Теперь среди устройств появилось "На полке"

и пульт управления к нему из созданных команд.

Также есть вкладка "Голосовые команды" с подсказками.

Проверяем. Подаем команду из подсказки. Работает, задержки почти нет.

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

Но при желании Arduino и модуль МТ1132 можно разместить в пластиковый корпус, прозрачный для инфракрасных лучей. IR-приемник очень чувствительный а Яндекс-пульт посылает мощный сигнал, поэтому располагать пульт и приемник соосно в прямой видимости не понадобится. При необходимости можно будет добавить еще один или несколько IR-приемников подключив их или паралельно или каждый к отдельному пину Arduino. Но пока и так все работает отлично.

Подведу итог: идея работает, все просто и наглядно. Освещением (или любой другой нагрузкой) можно управлять помощью:

  1. компьютера через Serial Monitor;

  2. пульта от любой бытовой техники;

  3. пульта умного дома Яндекс;

  4. голосового помощника Алиса на смартфоне, компьютере или колонке.

Исходники

Ссылка на библиотеку ardunoo

Библиотека IRemote

Программа от zhum c моей вставкой:

/*Let you connect MT1132 to your arduino like this:+---------+               +------------+| MT1132  +-(RX)-----(11)-+ Tx Arduino ||         +-(TX)-----(10)-+ Rx         ||         |               |            |*/#include <SoftwareSerial.h>#include <ardunoo.h>#include <IRremote.h>#define RXpin 10#define TXpin 11IRrecv irrecv(2); // указываем вывод, к которому подключен приемникdecode_results results;ArduNoo noo(RXpin,TXpin);void setup(){  Serial.begin(9600);  irrecv.enableIRIn(); // запускаем прием  noo.channel(8);     // Let's command 8-th channel    // ...}void loop(){  int r;  r=Serial.read();  if(r<='9' && r>='0'){ // change channel    noo.channel(r-'0');    return;  }  switch(r){  case 'n': //on    noo.on();    break;  case 'f': //off    noo.off();    break;  case 'x': // toggle    noo.onoff();    break;  case 'c': //print current channel    Serial.print(noo.channel());    break;  case 'b': //bind    noo.bind();    break;  case 'u': //unbind    noo.unbind();    break;  case '+':    noo.slow_on();    break;  case '-':    noo.slow_off();    break;  case '!':    noo.slow_onoff();    break;  case 'r': // record scene!    noo.record_scene();    break;  case 'R': // run scene!    noo.run_scene();    break;  case 's': // toggle 3-rd channel    noo.onoff();    break;  }    if ( irrecv.decode( &results )) { // если данные пришли    Serial.println( results.value ); // печатаем данные в Serial Monitor    if (results.value == 16753245)  //код кнопки, выбранной для выключения   {           noo.off();    //выключаем свет        }    if (results.value == 16769565)  //код кнопки, выбранной для включения   {      noo.on(); //включаем свет           }   if (results.value == 16736925)  //код кнопки, выбранной для изменения состояния      {           noo.onoff();   //меняем текущее состояние света         }    irrecv.resume(); // принимаем следующую команду  }}

Если кому-нибудь понравится - пользуйтесь.

Подробнее..

Искусство перевода, или почему английская Алиса в стране чудес вдруг стала Аней

19.03.2021 20:17:05 | Автор: admin

Алиса в стране чудес Льюиса Кэрролла одна из самых любимых сказок, которую с удовольствием перечитывают и дети, и взрослые по всему миру.

Но при этом это еще и одно из самых сложных произведений для перевода на другие языки. Автор щедро использует метафоры, отсылки и каламбуры, понятные только англичанам, эксплуатирует популярные детские стишки и культурные особенности. В произведении уйма филологических тонкостей, нюансов и языкового юмора.

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

Такие разные переводы Кэрролла

Существует мнение, что переводы книг со временем устаревают и нужно хотя бы раз в 50 лет их обновлять.

Оригинальная Алиса вышла в 1865 году. И с того времени известно как минимум 20 опубликованных переводов сказки на русский. А после 2000 года в интернете появилось свыше 15 законченных фанатских адаптаций.

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

В нем есть свой шарм, но публика была просто не готова к нему. Вот сравнение отрывка оригинала и перевода:

Curiouser and curiouser! cried Alice (she was so much surprised, that for the moment she quite forgot how to speak good English); now Im opening out like the largest telescope that ever was! Good-bye, feet! (for when she looked down at her feet, they seemed to be almost out of sight, they were getting so far off). Oh, my poor little feet, I wonder who will put on your shoes and stockings for you now, dears? Im sure I shant be able! I shall be a great deal too far off to trouble myself about you: you must manage the best way you can;but I must be kind to them, thought Alice, or perhaps they wont walk the way I want to go! Let me see: Ill give them a new pair of boots every Christmas.

***

Чудне и распречудне, закричала Соня! Отъ удивленя она даже путалась въ словахъ, и выражалась какъ-то не по-русски. Вотъ теб разъ! Выдвигаюсь теперь, какъ самая большущая подзорная труба! Стой, ноги, куда вы? Никакъ надо проститься съ вами! И дйствительно, Соня, нагнувшись, едва уже видитъ ноги, такъ он вытянулись и далеко отъ нея ушли. Ну ужь теперь никакъ не достану обувать ихъ, разсудила она и вдругъ стукнулась головой о потолокъ она вытянулась чуть не на сажень. Она проворно схватила со стола ключикъ и поскорй къ садовой дверк. Бдная Соня, опять неудача!Въ дверь не пройдетъ. Только растянувшись во всю длину, она могла приложиться къ ней однимъ глазомъ и заглянуть въ садъ; но пройтикуда при такомъ рост! не выдержала тутъ Соня, опять расплакалась.

Тем не менее огромная популярность истории на Западе заставляла переводчиков пытаться еще и еще. Следующий варианты Приключеня Ани въ мр чудесъ Матильды Гранстрем и Приключеня Алисы въ волшебной стран Александры Рождественской известны только лингвистам и практически полностью забыты.

Даже брат известного Антона Чехова, Михаил Чехов, делал перевод сказки. Она вышла под именем Алиса в волшебной стране в сборнике Английские сказки, но тоже не снискала большого внимания.

Набоков и его Аня в стране чудес

В 1923 году Алиса в стране чудес выходит на русском в переводе Набокова. В то время это был еще никому не известный переводчик, который даже не начинал писать собственные книги.

Алиса у Набокова превратилась в Аню. Подобная вольность не была новой даже в контексте переводов этой истории, но смысл в этом был: имя Анна в начале 1920-х было вторым по популярности среди женских имен на территории Российского государства. Алиса же не входила даже в первую двадцатку.

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

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

Если автор пародировал в книге классические английские стихи, то Набоков заменил их на пародии таких же русских стихов из школьной программы.

You Are Old, Father William это пародия на известное в конце XIX века детское стихотворение The Old Man's Comforts and How He Gained Them.

Под спойлером сначала отрывок из пародии Кэрролла.

"You are old, Father William," the young man said,

"And your hair has become very white;

And yet you incessantly stand on your head

Do you think, at your age, it is right?"

"In my youth," Father William replied to his son,

"I feared it might injure the brain;

But now that I'm perfectly sure I have none,

Why, I do it again and again."

"You are old," said the youth, "as I mentioned before,

And have grown most uncommonly fat;

Yet you turned a back-somersault in at the door

Pray, what is the reason of that?"

А затем и из оригинала.

You are old, Father William, the young man cried,

The few locks which are left you are grey;

You are hale, Father William, a hearty old man,

Now tell me the reason I pray.

In the days of my youth, Father William replied,

I remember'd that youth would fly fast,

And abused not my health and my vigour at first

That I never might need them at last.

You are old, Father William, the young man cried,

And pleasures with youth pass away,

And yet you lament not the days that are gone,

Now tell me the reason I pray.

В своем переложении Набоков берет известное Бородино и делает пародию на него. По букве стихотворение полностью отличается от оригинала, но куда более важно оно передает дух и смысл.

Скажи-ка, дядя, ведь недаром

Тебя считают очень старым:

Ведь, право же, ты сед,

И располнел ты несказанно.

Зачем же ходишь постоянно

На голове? Ведь, право ж, странно

Шалить на склоне лет!

И молвил он: В былое время

Держал, как дорогое бремя,

Я голову свою

Теперь же, скажем откровенно,

Мозгов лишен я совершенно

И с легким сердцем, вдохновенно

На голове стою.

Критики отмечают, что стихотворные пародии, которых в тексте довольно много это наибольшая удача Набокова. Хоть есть вопросы к передаче имен персонажей, сам перевод читается легко и приятно. И без всякого сомнения, он будет понятен и интересен русскоговорящим детям младшего школьного возраста даже через почти сотню лет он не утратил своей актуальности.

Еще один пример. Чеширский кот в переложении Набокова получил имя Масленичный. Переводчик с помощью известной пословицы передал причину, почему кота так зовут. Получилось неканонично, но интересно:

Это Масляничный Кот, отвечала Герцогиня, вот почему. Хрюшка!

Последнее слово было произнесено так внезапно и яростно, что Аня так и подскочила; но она сейчас же поняла, что оно обращено не к ней, а к младенцу, и, набравшись смелости, заговорила опять:

Я не знала, что такие коты постоянно ухмыляются. Впрочем, я вообще не знала, что коты могут это делать.

Не всегда коту масленица, ответила Герцогиня. Моему же коту всегда. Вот он и ухмыляется.

Обратите внимание, что Набоков немного изменил саму пословицу, чтобы она была доступной для младших читателей. Ведь фразу Не все коту масленица дети могут просто не понять.

Работа над переводом оказала настолько сильное впечатление на Набокова, что аллюзии на Алису есть в его романе Приглашение на казнь.

Истинный и каноничный перевод Демуровой

Новая эра в русскоязычных переводах Кэрролла началась, когда в 1966 году за Алису взялась литературовед и переводчик Нина Демурова. Именно ее перевод считается наиболее близким по тексту и смыслу к оригинальной истории.

В своей статье Голос и скрипка Демурова пишет:

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

Я хорошо представляла себе, с какими трудностями мне придется иметь дело. К тому же мне не раз доводилось читать главы из Алисы вслух, останавливаясь, чтобы дать то или иное пояснение. Так я хорошо знала на слух все то, что часто ускользает при молчаливом прочтении текста глазами, скрытые рифмы, намеки на каламбуры, огласовки и пр.

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

Чтобы было понятно, насколько большую работу проделала переводчица, давайте разберем несколько адаптированных имен персонажей.

В третьей главе истории мы встречаем персонажей Duck, Lory, Eaglet и Dodo. Мы намеренно представили их в оригинале.

Вся эта сцена из третьей главы это реконструкция событий, в ходе которых у Кэрролла появилась идея сказки про девочку Алису. Вместе со своим Робинсоном Даквортом и его дочерьми Лориной и Эдит мистер Доджсон (настоящая фамилия Кэрролла) отправились на прогулку по реке, где девочки заскучали и попросили рассказать им сказку.

Имя Duck в произведении недвусмысленно отсылается на Дакворта, Lory на старшую сестру Лорину, а Eaglet на Эдит. Dodo это сам Кэрролл.

Когда книга вышла, Кэрролл подарил своему другу экземпляр с подписью: The Duck from the Dodo (дословно: Утке от Додо).

Демурова хотела не только точно передать имена персонажей, но и сохранить отсылки на эту историю. Но ни один из прямых переводов слова Duck не давал даже близкого сочетания. Утка, Селезень, Лебедь это все не то. Но переводчица вышла из положения, передав отсылку не по фамилии, а по имени.

Робин Гусь такое имя носит Duck у Демуровой. Одновременно звучное с аллюзией на Робина Гуда, которую дети поймут, и при этом передающее отсылку на Робина Дакворта, да еще и прямо связанное с оригиналом.

Lory и Eaglet стали попугайчиком Лори и орленком Эдом отсылки на дочерей друга писателя также были сохранены.

Dodo так и остался Додо. Хоть в русском языке название этой птицы можно перевести и как додо, и как дронт, переводчица оставила именно Додо. Как утверждала она сама, чтобы сохранить скрытую толику юмора, ведь Льюис Кэрролл заикался и часто представлялся как До-до-доджсон. Собственно, именно из-за этого он назвал своего книжного альтер-эго Додо.

Подобная щепетильность наблюдается во всем: от передачи культурных и чисто английских каламбуров до скрытых отсылок вроде имен с глубоким историческим подтекстом.

Перевод Демуровой это именно перевод, а не адаптация. Отсебятины здесь крайне мало, но при этом переводчице удалось передать абсолютное большинство смыслов оригинальной истории. А если взрослому читателю хочется постичь все 100% отсылок, каламбуров и шуточек, которые закладывал в произведение автор, то можно почитать перевод с комментариями Гартнера.

Критики настолько высоко оценили перевод Демуровой, что практически сразу после публикации он стал классическим и сохраняет этот титул спустя более чем полвека. После него все еще были прекрасные попытки передать историю Кэрролла на русский один только пересказ Заходера чего стоит.

От автора: пересказ Заходера лично мой любимый. Хоть это и не совсем перевод, там довольно много вольностей, но мне он кажется самым близким по духу к оригинальной истории.

На вкус и цвет фломастеры разные, поэтому споры о переводах будут всегда. Одному нравится пышный язык Набокова, другому щепетильность Демуровой, третьему антураж Заходера. Уверены, есть и поклонники творчества Орла, Мироновой, Вязова и других менее известных переводов. Ведь если сказку все еще хотят переводить, то она актуальна и по сей день.

Если же вы хотите прочитать и понять Алису на английском, это будет непросто. Несмотря на то, что сказка детская и лексика в ней крайне понятная, уловить все культурные нюансы самостоятельно очень сложно. Но если очень хочется записывайтесь на бесплатный пробный урок в EnglishDom и разбирайте Алису в стране чудес с опытным преподавателем.

Онлайн-школа EnglishDom.com вдохновляем выучить английский через технологии и человеческую заботу

Только для читателей Хабра первый урок с преподавателем в интерактивном цифровом учебнике бесплатно! А при покупке занятий получите до 3 уроков в подарок!

Получи целый месяц премиум-подписки на приложение ED Words в подарок. Введи промокод march2021 на этой странице или прямо в приложении ED Words. Промокод действителен до 01.05.2021.

Наши продукты:

Подробнее..

Биометрия, персонализация голоса, NLU и речевая аналитика о чем расскажут на конференции Conversations

05.06.2021 12:14:00 | Автор: admin

21 и 22 июня в Питере (и онлайн) пройдет конференция по разговорному ИИ Conversations. Поток для разработчиков будет посвящен conversational lego технологиям вокруг разговорного AI, из которых состоят чат-боты, голосовые ассистенты и диалоговые решения. Персонализация голоса от Yandex Speechkit, стратегия управления диалогом от DeepPavlov, платформа речевой аналитики Тинькофф Банка, голосовая биометрия от SberDevices, анализ и разметка интентов при создании голосовых ботов от X5 Retail Group и другие тулзы рассказываем, с чем еще можно познакомиться на Conversations V.

Доклад про лайфхаки разговорного UI на Conversations'19: как сделать бота и не разозлить пользователяДоклад про лайфхаки разговорного UI на Conversations'19: как сделать бота и не разозлить пользователя

Конференция будет проходить два дня Business Day (21 июня) и Technology Day (22 июня). Онлайн-билет дает доступ к двухдневному стриму!

Technology Day откроет секция Conversational Lego, посвященная технологиям, которые лежат в основе различных разговорных решений от чат-ботов с NLU до прокачанных голосовых ассистентов.

Кто выступит и о чем расскажут?

  • Поиск смысла в океане данных: анализ и разметка интентов при создании голосовых ботов. Антон Кленицкий, X5 Retail Group

  • Голос бренда. Зачем нужны технологии персонализации голоса и как они устроены. Никита Ткачев, Yandex.Cloud

  • Биометрический бум: как технологии помогают нам в повседневной жизни. Станислав Милых, SberDevices

  • Стратегия управления диалогом: как сделать чат-бота более умным и объемным с помощью дискурс-менеджмента. Данила Корнев, CPO, DeepPavlov

  • Особенности алгоритмов распознавания речи и их влияние на опыт пользователей. Николай Шмырев, CEO, АЦ Технологии

  • Как спроектировать диалоговый интерфейс для мультилингвальных ботов. Brielle Nickoloff, Cofounder & Head of Product, Botmock.

Больше имен и тем на сайте Conversations!

Еще разработчиков в Technology Day ждет секция по голосовым ассистентам, где Яндекс, SberDevices, Mail.Ru Group расскажут о новых фичах Алисы, Маруси и семейства Салют. Например, Алексей Фивинцев из Mail.ru покажет, какой профит можно извлечь из разработки голосовых навыков для Маруси, используя интеграцию Маруси с ВКонтакте.

А на секции Partners in AI: как заработать на разговорных решениях расскажут, как разработчику стать предпринимателем, как придумать и монетизировать сценарии для различных бизнес-задач и индустрий.

В общем, будет много интересного! Один билет в стрим два дня экспертизы, доступ к приложению для нетворкинга и всем материалам конференции. За новостями можно следить в официальномтелеграм-канале Conversations.

Подробнее..

Сущности для платформы Яндекс.Диалоги

04.07.2020 16:09:21 | Автор: admin
В прошлую субботу состоялся онлайн-хакатон по разработке навыков Алисы. Жаль, что никто не написал здесь об итогах, любопытно почитать истории победителей. Но раз желающих не нашлось, то поделюсь своей историей.

Я делаю голосовой интерфейс для управления брокерским счётом, уже писал об этом на Хабре Алиса, купи акции Яндекс. В какой-то момент мне понадобилось извлекать из запроса цену в разных валютах. Уверен, я не первый, кто столкнулся такой задачей, поэтому попытался найти готовые интенты или именованные сущности на GitHub, но ничего не нашёл. На носу был хакатон, много разработчиков в одном месте, подумал я, если каждый поделится своими наработками, то сущностей наберётся на целую библиотеку. Так родилась идея для репозитория библиотека сущностей.



Пользовательские сущности в Диалогах


Когда я говорю умной колонке купи одну акцию Яндекс, то речь проходит через внутреннюю магию платформы Яндекс.Диалоги, затем попадает в веб-хук, который я указал в качестве обработчика навыка. Вот что приходит в обработчик:
  "request": {    "command": "купи одну акцию яндекс",    "original_utterance": "купи одну акцию яндекс",    "nlu": {      "tokens": [        "купи",        "1",        "акцию",        "яндекс"      ],      ...      "intents": {        "market.order": {          "slots": {            "amount": {              "type": "YANDEX.NUMBER",              "tokens": {                "start": 1,                "end": 2              },              "value": 1            },            "unit": {              "type": "OperationUnit",              "tokens": {                "start": 2,                "end": 3              },              "value": "share"            },            "figi": {              "type": "EFigi",              "tokens": {                "start": 3,                "end": 4              },              "value": "BBG006L8G4H1"            },            "operation": {              "type": "OperationType",              "tokens": {                "start": 0,                "end": 1              },              "value": "buy"            }          }        }      }    },    ...  },

Обратите внимание на слот figi, в котором содержится идентификатор акции Яндекс, так называемый FIGI (Financial Instrument Global Identifier), необходимый для взаимодействия с API торговой платформы Тинькофф Инвестиции. Тип данных EFigi, это пользовательская сущность, которую я описал в разделе Сущности при создании навыка в платформе Яндекс.Диалоги. Вот фрагмент описания:
entity EFigi:    values:        BBG005DXJS36:            %exact            TCS            %lemma            тиньков(банк)?            тинькоф(банк)?            тинькофф(банк)?            ти си эс (груп)?        BBG006L8G4H1:            %exact            YNDX            %lemma            яндекс            яндекса        BBG004730JJ5:            %exact            MOEX            %lemma            Московская Биржа            Мосбиржа        BBG002B2J5X0:            %exact            KRKNP            %lemma            [Саратовский НПЗ акции привилегированные]            [Саратовский нефтеперерабатывающий завод акции привилегированные]...

Благодаря механизму сущностей, в коде обработчика мне не нужно делать дополнительных манипуляций над входными данными, чтобы получить FIGI. Платформа Диалогов преобразует название ценной бумаги в FIGI за меня.

Я использую EFigi в качестве нетерминала грамматики и типа слота в интентах. Интенты это такие регулярные выражения на стероидах в Диалогах. Благодаря интентам Диалоги понимают, какие данные нужно извлечь из пользовательского запроса и передать в обработчик. Вот пример интента для команды покупки/продажи ценных бумаг на бирже по рыночной цене:
slots:    operation:        source: $Operation        type: OperationType    figi:        source: $Stock        type: Efigi    amount:        source: $Amount        type: YANDEX.NUMBER    unit:        source: $Unit        type: OperationUnitroot:    $Operation [$Amount $Unit $Stock]$Operation:    $OperationType$Amount:    $YANDEX.NUMBER$Unit:    $OperationUnit$Stock:    $EFigi

Это похоже на регулярные выражения.

Библиотека сущностей для Диалогов


Во время хакатона по разработке навыков для Алисы я создал репозиторий alice-entities-library, запушил туда сущность EFigi и отправился на GitHub искать репозитории, в которых есть описание пользовательских сущностей. Ожидал, что найду сотни репозиториев, свяжусь с разработчиками и предложу прислать пул-реквесты в библиотеку сущностей.

Репозитории искал по тегам: yandex-dialogs, alice-skills, yandex-alice и alice-sdk. Оказалось, мало кто использует теги на GitHub, мне удалось найти всего один репозиторий, содержащий файл с описанием сущности ELang. По стечению обстоятельств автором репозитория оказался Давид один из организаторов хакатона. Я предложил Давиду добавить сущность ELang в библиотеку и через несколько минут получил от него пул-реквест.

Другие участники онлайн-хакатона проигнорировали мои сообщения в чате с предложением пополнить библиотеку сущностей. Возможно, в разгар борьбы было не до этого. По правде говоря, я немного расстроился, но в конце добавил ссылку на репозиторий в sameoldmadness/awesome-alice.

Вместо заключения


Уважаемые разработчики навыков для Алисы, прошу вас по возможности выкладывать исходный код на GitHub, чтобы другие могли учиться.

Пожалуйста, добавляйте теги yandex-dialogs, alice-skills и yandex-alice к репозиториям, чтобы другие могли находить ваши навыки на GitHub.

Создайте в своём репозитории директорию entities и поместите туда файлы с описанием сущностей, которые вы написали для навыка, чтобы другие могли переиспользовать вашу работу.

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

Навык для Алисы Проведи стендап

02.06.2021 20:09:34 | Автор: admin

Многие программисты (и не только) хотя бы раз сталкивались с agile-разработкой. Одной важной составляющей agile методов разработки являются ежедневные встречи - стендапы - на которых участники команды за короткое время рассказывают о проделанной и планируемой работе на этот день. У большинства таких встреч есть ведущий, определяющий очередность, а также следящий за временем. Но не в каждой команде есть человек, желающий взять на себя эту роль.

Так почему бы не автоматизировать этот процесс? Идея проста: написать что-нибудь, что может опрашивать каждого человека о рабочем дне. Желательно, чтобы это что-нибудь обладало голосом. Мой выбор пал на Алису, поскольку при помощи станции в переговорке вполне можно провести стендап.

Так я написал навык Проведи стендап.

О навыке

Возможности

  • Добавление/удаление людей из команды. Какой стендап без команды? Для того, чтобы навык знал о составе вашей команды, есть фразы: Добавь в команду ИМЯ [ФАМИЛИЯ], Удали из команды ИМЯ [ФАМИЛИЯ] и дополнительная фраза Добавь в команду человека ИМЯ [ФАМИЛИЯ]. Зачем нужна ещё одна фраза будет описано в разделе про интенты. Достаточно сделать это один раз - информация о команде сохранится.

  • Собственно, проведение стендапа. После того как вы добавили всю свою команду, можно начать стендап, сказав начни стендап. Навык будет по очереди предлагать каждому выступить и рассказать о своём дне. После того как навык услышит фразу у меня всё/конец/я закончил, он вызовет следующего участника. Также можно пропустить участника, сообщив его/её нет или он/она отсутствует.

  • Если вы не хотите, чтобы содержание вашего стендапа уходило куда-то неизвестно к кому на сервер, то навык предлагает возможность проигрывать звук тишины во время вашего рассказа. Во время воспроизведения Алиса не воспринимает реплики, поэтому вы можете сообщать о своей работе не беспокоясь о том, что кто-то ещё вас услышит.

  • Навык также может запоминать небольшие фразы. Вы начали своё выступление, у вас появилась какая-то идея или вопрос к коллеге, но эта идея/вопрос не вписывается в регламент стендапа, а вы боитесь, что к концу стендапа эта идея/вопрос вылетит из головы. Для этой ситуации есть команда запомни тему . В конце стендапа Алиса расскажет, кто какие напоминания оставил.

  • У навыка есть интеграция с гитхабом/трекером Яндекса, позволяющая получить список ишью из репозитория/тикетов из очереди, а также закрыть определенный ишью/тикет. Для этого нужно авторизоваться в этих сервисах, об авторизации чуть ниже.

Разработка

Сам по себе навык - простой веб сервер с одним обработчиком, куда поступают все запросы с репликами пользователей. Я реализовал этот сервер на питоне через Flask. В качестве базы данных была выбрана PostgreSQL.

Хотелось бы отметить 2 возможности, которые Яндекс предоставляет для навыков:

Интенты

Интент - встроенный NLP от Яндекса, позволяющий обрабатывать реплики пользователя. Используя простой язык, можно описать интенты, присутствие которых в реплике будет проверять Яндекс. С их помощью легко описывать фразы, имеющие один смысл для навыка, например для окончания стендапа: я закончил или у меня на сегодня всё.

Если какой-либо интент нашелся, то из него можно вычленить определенные сущности, как вариант имя и фамилию человека. Но тут возникает проблема: Имя и Фамилия - заранее определенные сущности, поэтому какую-нибудь редкую фамилию Яндекс может и не распознать. Для этого и была создана дополнительная фраза, позволяющая добавить человека в команду. Также использование интентов осложняет тестирование. Работу самих интентов можно протестировать при создании в консоли разработчика навыка. Но, при написании своих тестов к основе навыка (в моём случае - обычному веб-серверу на питоне, как уже упоминалось выше), нужно писать свой обработчик языка, иначе эти интенты не будут распознаны.

Авторизация

Яндекс.Диалоги предоставляют возможность авторизации через навык в сторонних сервисах, поддерживающих OAuth. Однако по неизвестным причинам прикрутить авторизацию в гитхабе у меня не получилось, и поддержка не смогла помочь с поиском проблемы. В итоге авторизация в гитхабе проходит через Github App. Чтобы она работала, нужно установить приложение в свой репозиторий, и тогда авторизация и работа с гитхабом идут уже от лица приложения. С трекером Яндекса вышло проще - OAuth авторизация заработала без проблем. Но есть один минус - OAuth авторизация поддерживается максимум только для одного сервиса. (Поэтому, если бы получилось сделать авторизацию для гитхаба, пришлось бы делать костыли для авторизации в трекере).

Итоги

С исполнением такой простой задачи, как вызов участников, Алиса справляется успешно, голосовой интерфейс удачно вписывается в стендапы.

Репозиторий

Навык

Подробнее..

Яндекс.Функции, Sublime Text и навыки для Алисы

05.07.2020 20:11:11 | Автор: admin
27 июня Яндекс проводил онлайн-хакатон по разработке навыков для Алисы.

Решил и я принять в нем участие. Ранее навыки для Алисы я уже делал, но хостил их все на Google App Engine. Тут же я решил изучить что-то новое в рамках Хакатон. Яндекс активно продвигает свои Функции в Яндекс.Облаке для разработки навыков. Для навыков они бесплатны (правда, бесплатно не всё).



Да и Google App Engine теперь требует подключить аккаунт для оплаты, чтобы приложение на сервер залить.

Решил я попробовать навык в Яндекс.Облаке разместить. К тому же, решил я, навык должен быть простым чтобы за день в рамках Хакатона успеть сделать. Тут Функции в Облаке очень подходят к сторонним сервисам обращаться не надо (они в функциях платные), данные можно хранить в самом навыке, внешняя БД не нужна.

Раньше я старался делать полезные навыки чтобы оплатить парковку голосом, например (в Яндекс.Навигаторе) или узнать, когда автобус/троллейбус/трамвай придет на ближайшую остановку. Это требовало интеграций со сторонними сервисами, долгой разработки, а Яндексу, судя по премии Алисы, больше игровые-развлекательные навыки по душе. Потому в этот раз я решил делать игру.

Для работы с Функциями предлагается либо все делать локально, а потом файлы в Функции загружать, либо же редактировать файлы в онлайн-редакторе. Онлайн-редакторы я люблю ;), потому сначала попробовал воспользоваться им. Однако после двух-трех-четырех правок и сохранения новых версий, от этой идеи решил отказаться уж очень неудобно, что нажав на Сохранить, тебя редиректит на другой экран. Итого каждая правка это куча лишних кликов.

С командой строкой жить чуть проще. Но файлы нужно каждый раз нужно в zip добавлять, а лишь потом в Облако грузить. Руками неудобно.

Так уж сложилось, что моя IDE это Sublime Text 3. Недавно Google отказался от Google App Engine Launcher и с ним остался единственный вариант загрузка файлов через командную строку. Тогда-то я и узнал о существовании build systems в Sublime Text нажимаешь Ctrl/Cmd+B и Sublime выполняет нужную тебе команду. Для GAE я тогда сделал набор команд, решил, что и тут что-то подобное нужно.

Сначала была сделана функциональность просто для загрузки файлов.
Для GAE я делал так, чтобы передаваемые параметры (а именно название проекта) читалось из файла проекта Sublime Text. Тут же для экономии времени название функции, точка входа и остальные параметры просто зашиты в build system. Не очень хорошо, но для моих целей подходило.


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

Увы, если логи просто отобразить, то ориентироваться в них довольно сложно.
Пришлось немного подшаманить с командой (чтобы unicode-строки отображались корректно но и то, работает это не всегда), с самим кодом (чтобы JSON выводить в читаемом виде):
    logging.getLogger().setLevel(logging.DEBUG)    logging.debug('REQUEST: ')    for line in json.dumps(event['request'], indent=4).split('\n'):        logging.debug(line)

и создать отдельный файл синтаксиса, чтобы подсвечивать ошибки в логе.


Отдельная удобная фича Sublime Text умеет подсвечивать и саму строку, если нашла ее в коде.

Итого получилось следующее
Файл Yandex Cloud.sublime-build
// Install Yandex CLI - https://cloud.yandex.ru/docs/cli/quickstart#install//// http://www.sublimetext.com/docs/3/build_systems.html// https://cloud.yandex.ru/docs/functions/operations/function/version-manage#version-create{    "file_patterns": ["*.py"],    "syntax": "Packages/User/YCLog.sublime-syntax",    "file_regex": "File \\\"/function/code/(...*?)\\\", line ([0-9]*)",     "variants":        [            {                "name": "Upload",                "shell_cmd": "zip -u -0 yc_upload.zip *.py && yc serverless function version create --function-name=my-function-name --runtime=python27 --entrypoint=main.handler --memory=128m --execution-timeout=2s --source-path=yc_upload.zip",            },            {                "name": "Logs",                "shell_cmd": "printf '%b\n' \"\\$(yc serverless function logs alice-guess-the-language)\""            }        ]}


Файл YCLog.sublime-syntax
%YAML 1.2
---
# See http://www.sublimetext.com/docs/3/syntax.html
name: YC Log
file_extensions: [log]
scope: source.example-c
contexts:
main:
# Request identifiers
- match: '\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2} (START|END|REPORT) RequestID: .*'
scope: storage.type.string.c

# Dates
- match: '\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}'
scope: comment.line.c

- match: '\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}.\d{2,3}Z [0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}'
scope: comment.line.c

# Log level
- match: '\[(INFO|DEBUG)\]'
scope: comment.line.example-c

# Log level
- match: '\[(ERROR|WARNING)\]'
scope: keyword.control.flow.break.c

# Strings begin and end with quotes, and use backslashes as an escape
# character
- match: '"'
scope: punctuation.definition.string.begin.c
push: double_quoted_string

double_quoted_string:
- meta_scope: string.quoted.double.example-c
- match: '\\.'
scope: constant.character.escape.example-c
- match: '"'
scope: punctuation.definition.string.end.example-c
pop: true



Редактировать код Функций в Яндекс.Облаке стало гораздо приятнее.

P.S. Мой навык игра Угадай язык.
Подробнее..

Яндекс научил Алису принимать платежи за онлайн-покупки. Девочка созрела?

31.05.2021 16:13:25 | Автор: admin

"Яндекс" с каждым днем делает все более интересные (заметьте, мы не рискуем говорить - уверенные) шаги в сторону развития своих торговых платформ. И все чаще напоминает собой российский Amazon замедленного действия.

А еще "Яндекс" как настоящий родитель. Холит, лелеет и иногда не справляется со своей дочерью. Она показывает характер, замыкается в себе, но, стоит отдать должное, не грубит. И вот настал светлый час, дочка созрела и родители доверили ей первые карманные деньги. Точнее научили ими пользоваться, а вот сами деньги, конечно, "Алиса" будет брать у покупателей. Это хоть и робкий, но серьезный шаг. Учитывая, что "Яндекс" изо всех сил вытащить свой Маркет на передовую, новая функция может ему в этом помощь. В будущем.

Что добавили и как работает?

Компания заявила, что меню голосового помощника впервые дополнилось функцией покупки. Пока речь идет только о книгах и совместном проекте "Яндекса" и "ЛитРес". Выглядит все так: пользователь должен подать голосовую команду "Алиса, купи эту книгу" или "Оплати "ЛитРес". Сама "Алиса" провести платеж не сможет. Уверены, к счастью. После пользовательского запроса она отправляет push-уведомление для подтверждения платежа. Работать вся эта "магия" должна на Яндекс.Станции, Станции Мини и Станции Макс.

"ЛитРес" рад сотрудничеству, хотя и без него у компании все отлично. По итогам прошлого года емкость рынка аудиокниг в России выросла на 44%. При этом навыком "Аудиокниги ЛитРес" с момента его бета-тестирования воспольховался каждый десятый владелец станции от "Яндекс", а это более 100 000 человек.

Ради чего это все?

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

При этом сами компании говорят о том, что оплата аудиокниг - шаг к созданию на базе голосового помощника маркетплейса товаров и услуг. Нам это видится как тесная интеграция "Алисы" и "Яндекс.Маркет". Вопрос что мы сможем получить от новых навыков?

Пока что все это выглядит как робкий и неуверенный шаг. Яндекс словно и сам переживает, что доверил Алисе право распоряжаться покупками клиентов. Но без этого никуда. И очевидно, что свой куш компания все равно сорвет. Как заявляет сам "Яндекс" в январе-июле 2020 года продажи портативной акустики и "умных" колонок в Россиивырослина 31% до 1,3 млн штук. Как минимум, владельцы станций - это уже немаленькая аудитория говорящего маркетплейса.

Правда продаётся?

Мало ли что говорит официальная статистика. Мы решили проверить как дела с продажами умных устройств Яндекса обстоят на самом деле в 2021 году. С помощью сервиса внешней аналитики маркетплейсов SellerFox мы собрали данные о спросе и выручке всех моделей Яндекс.Станции с января по мая этого года. А вдруг умные колонки и вовсе не покупают, а навыки "Алисы" лишь способ для привлечения внимания?

На Wildberries за 5 месяцев было продано более 8 тысяч колонок. Самые популярные модели - версии Мини. Видимо на это влияет низкая стоимость устройств. Общее количество продаж таких колонок всех цветов 3 341 штук за первые пять месяцев 2021 года. Станция.Макси - самая дорогая модель колонки от Яндекса и самая непопулярная. По крайней мере, на Wb.

Объем продаж, выручки и средняя стоимость товаров на маркептлейсе Wildberries с 01.01 - 31.05.2021, данные сервиса аналитики SellerFoxОбъем продаж, выручки и средняя стоимость товаров на маркептлейсе Wildberries с 01.01 - 31.05.2021, данные сервиса аналитики SellerFox

На Ozon устройства Яндекс с голосовыми помощниками продавались в первом полугодии гораздо веселее. С января по май покупатели заказали здесь больше 22 000 колонок. Тут в топ тоже выбились "Мини". Далеко в отстающих их старшие братья. А вот максимально продвинутая колонка "Макси" продалась за первые 5 месяцев года вообще в 7 раз хуже лидера.

Наверняка продажи могли бы быть и выше, если бы не программа лояльности Яндекса по которой пользователи могли получить Станцию за символическую плату, всего лишь оформив подписку на Яндекс.Плюс. Не стоит забывать и про другие интернет-магазины и офлайн-ритейл. Под Новый год устройства Яндекса на фирменных стойках стали красоваться во всех крупных гипермаркетах. Так что компания постаралась занять место на полках россиян по полной.

Интересно только станут ли сами устройства эффективнее взаимодействовать с пользователями? И насколько реально ожидать скоро появления полноценных торговых навыков у Алисы. Одно дело, если речь идет о покупке электронного товара или услуги. Другое, когда речь идет о физическом товаре, оформление покупки которого это длинный путь с указанием получателей, места вывоза, контактов и еще массы данных.

Подробнее..

Как Яндекс.Станция может помочь людям с ментальными расстройствами

19.12.2020 14:20:36 | Автор: admin

Привет, меня зовут Стасия, и я хочу поделиться своими идеями касательно практического применения Алисы для людей с ментальными расстройствами. Её функционал как голосового помощника можно использовать для быстрого чекапа психического состояния, выполнения упражнений и работы над негативными установками в мыслях. Как это реализовать и почему это важно в этом посте.

Если вы чувствуете себя подавленно, страдаете от нехватки сил и сна, у вас изменились пищевые привычки и вы думаете о самоубийстве пожалуйста, обратитесь к специалисту в вашем регионе. К сожалению, голосовые помощники не могут полностью заменить врачей и психологов.

Почему это важно

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

У меня пограничное расстройство личности, изначально ставили смешанное тревожное и депрессивное расстройство. Я не всегда понимаю, что перерабатываю, и начинаю выгорать, мне сложно строить отношения с людьми, я импульсивна и часто меняю настроение. Я работаю с клиническим психологом в когнитивно-поведенческом подходе и дополнительно пользуюсь приложениями для Android для отслеживания негативных паттернов в мыслях.

Такие же подходы работают и с лечением некоторых видов депрессии, помогает лицам с биполярным аффективным расстройством и расстройствами пищевого поведения.

А недавно я купила по акции Яндекс.Станцию мини. Теперь у меня тоже есть девчонка в коробчонке. И вскоре я начала думать, как она может принести дополнительную пользу, кроме как будить по утрам и поздравлять в выходом Cyberpunk 2077.

Как Алиса может помочь

Как я уже сказала выше, в лечении некоторых психических расстройств применяют методы из когнитивно-поведенческой терапии (КПТ). Она работает с мыслями, чувствами человека, указывает на когнитивные искажения, позволяет переписать негативные события в нейтральном ключе, оставив сухие факты и натолкнув на выводы. Также распространена терапия, сфокусированная на сострадании (CFT в западной литературе) с поддерживающими фразами и желанием помочь самому себе, полюбить себя.

У меня уже есть опыт использования современных технологий для самопомощи. В Play Market можно найти разные вариации трекеров настроения, дневников терапии, благодарности и т.д. Но что, если попробовать эти же средства, но с голосовым помощником?

На второй день я покопалась в списке навыков Алисы в поисках чего-то, что могло бы помочь мне преодолевать трудные моменты. Из опубликованных самое близкое, что я нашла, это навык Жить легко, в котором Алиса рандомно выбирает ответы на вопрос пользователя как жить?. Но его функционал скудный: в рамках этого навыка нельзя рассказать свою историю, отвечать на вопросы помощника.

Что можно сделать? Допустим, вы пришли с работы уставший после тяжёлого рабочего дня. В вашей компании сейчас аврал, дедлайны горят, работники плачут. Вы живёте один и не любите выбираться из дома после работы. И у вас есть Яндекс.Станция.

Вот таким мог бы быть диалог Алисы с вами:

Привет. Я Алиса, и я готова тебя выслушать. Как прошёл твой день?

Привет. Я очень устал(а), эта работа скоро доконает меня.

Я правильно поняла, что ты испытываешь трудности в работе?

Да.

Давай проведём быструю проверку на симптомы выгорания...

Суть примерно вырисовывается: нужен алгоритм, который распознавал бы слова, связанные с состоянием человека (плохо, грустно, я злюсь, я не знаю что делать), среду, в которой возникла кризисная ситуация (семья, дом, работа), и предлагал бы конкретные действия для её разрешения. Это могут быть:

  • экспресс-проверка на симптомы выгорания;

  • поиск ближайшего кризисного центра или ПНД;

  • дыхательные упражнения для работы с тревогой или злостью;

  • разъяснение о когнитивных искажениях и алгоритм по их нахождению;

  • поддерживающие фразы в рамках CFT.

Как можно понять, это большая работа, в которой есть множество нюансов.

А нафига мне эта информация?

Возможно, вы разработчик и думаете, какой проект можно реализовать, чтобы ещё и людям помочь. Возможно, вы знаете того, кто мог бы воплотить задумку в реальность. Или же знаете похожий кейс и как его реализовали. К сожалению, у меня нет денег оплатить работу программиста, но я могу поделиться своими знаниями и советами, как можно построить этот навык. Да и тестировать я тоже не против.

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

Подобный навык поможет не только людям с ментальными расстройствами, но и в принципе всем людям, кто сможет его активировать. Имхо каждому стоит иногда задумываться, почему он думает так, а не иначе, почему он делает или не делает то, что нужно, какие у него потребности и что можно сделать для своего комфорта. И Алиса может внести свой вклад в предотвращение новых случаев эмоционального выгорания, депрессии и самоубийств.

Подробнее..

Алиса обучает английскому

04.05.2021 12:13:46 | Автор: admin

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

Занятия с использованием Алисы проводились в студии английского языка ABC Friends (ссылка на их группу в VK). Вот несколько фото.

И пара коротких видеороликов. В первом - дети играют с навыком Алисы "Русская загадка английскаяразгадка", а во втором - с навыком "Угадайцветок".

Кстати, в Яндексе также отметили эти (и другие) навыки Алисы -- недавно в их Инстаграме появилась заметка на эту тему:

Это была небольшая иллюстрация применения Алисы при обучении английскому языку, и у меня нет сомнений, что имеются сотни иных способов использования Алисы в образовательных целях. Надеюсь, что эта заметка сподвигнет кого-нибудь на размышления и деятельность в этом направлении.

На сегодня это всё. Другие материалы следуют. Кому подобное читать интересно - подписывайтесь на уведомления о новых публикациях. Подписаться можно на этом сайте (кнопка Подписаться внизу), или на Telegram-канал IT Туториал Захар, или на одноимённое сообщество в VK, или Twitter @mikezaharov.

Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru