Умный сетевой удлинитель. Умный удлинитель Xiaomi Mi Smart Power Strip (6 розеток) Работа с приложением

*Удлинитель комплектуется переходником на европейскую розетку
*Для удлинителя подходят европейские вилки

Управляйте бытовой техникой дистанционно

Включить свет в прихожей, запустить очистку воздуха и согреть воду для принятия душа еще на пути домой – звучит как нечто из области фантастики? То, что раньше казалось невозможным, теперь легко воплощается в реальность. Имея в распоряжении умный удлинитель Xiaomi и мобильное приложение Xiaomi Smart Home, вы можете запускать домашнюю технику дистанционно. Более того, для вас доступна функция таймера, которая обеспечит автоматическое включение приборов.

Фиксирование расхода электроэнергии

Умная оптимизация энергосбережения


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

6 разъемов

Компактный размер и лаконичный дизайн

Удлинитель оснащен тремя 5-контактными разъемами и тремя 2-контактными разъемами, которые позволяют подключать до шести устройств с вилками разных стандартов. Благодаря тому, что разъемы расположены в два ряда, удлинитель имеет компактные размеры и не занимает много места. (Размер 197 х 71 х 25 (мм), длина провода 1800 мм)

Качественные материалы

5-уровневая защита

Производитель не поскупился на материалы, сделав выбор в пользу фосфористой бронзы и оснастив удлинитель реле напряжения от Panasonic®, отвечающим международному стандарту TV-5. Внутренние металлические компоненты, а также медная шина изготовлены при помощи бесшовной технологии. Удлинитель имеет пятиуровневую защиту, которая обеспечит безопасность при совместном использовании с электроприборами. Одним словом, внимание к каждой детали и использование проверенных материалов и технологий гарантируют качество и надежную работу удлинителя Xiaomi.

1) Защитная шторка от детей - Каждый разъем оснащен отдельной защитной шторкой, которая открывается при нажатии силой от 7,5 кг
2) Горючесть до 750°С - Соответствие американскому классу горючести UL-94-V0
3) Защита от перегрузок - Автоматическое отключение питания при большой суммарной силе тока
4) Защита от перегрева - Автоматическое отключение питания при повышении температуры внутри корпуса до 85°С
5) Тестирование на износостойкость разъемов - Благодаря технологии литья под давлением разъемы удлинителя легко выдерживают до 5000 «втыканий».


Противоскользящие ножки

Для удобного расположения на рабочем столе


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


Миниатюрная вилка, гармонично вписывающаяся в интерьер

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

Установка соединения одним нажатием

Еще больше полезных функций
Простое управление при помощи приложения Xiaomi Smart Home

1) Скачайте приложение Xiaomi Smart Home
2) Смартфон Xiaomi в рандомном порядке определит устройство и предложит осуществить настройку
3)Нажмите на кнопку, чтобы установить соединение. При этом не требуется вводить пароль от WiFi-сети.

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

Характеристики удлинителя:

Вход: AC 100-240V
Выход: 2500W, 10A max, 250V.
Стандарт Wi-Fi: IEEE 802.11 b/g/n
Частота Wi-Fi: 2.4GHz
Длина кабеля: 1,8 метра.

Комплект поставки

Поставляется в привычном для белой картонной коробке без полиграфии с логотипом Mi. Для масштаба - линейка на фото.

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


Удлинитель имеет 6 розеток - из которых 3 имеют универсальный разъем для плоских, евро и тройных вилок, а три - только для плоских и евро. Цвет доступен пока только белый, качество сборки очень хорошее.


Размеры самого корпуса удлинителя - около 19 см в длину


И около 7 см - в ширину


Традиционно для удлинителей Xiaomi - он оснащен трех контактной вилкой


Несложно заменить на обычную евро вилку, как я сделал с моим обычным, не Wi-Fi но Banggood положили в комплект хороший и удобный переходник


И необходимости менять что-либо нет.


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

Первое включение

После первого включения на удлинителе загораются два индикатора - питания - белый, и активности Wi-Fi - сначала желтого цвета. Цветовая индикация аналогична

Для работы с устройством, необходимо установить приложение Xiaomi SmartHome, я пользуюсь последней на сегодняшний день переведенной версией 3.6.8 от multirom.me. .
После включения устройства, приложение SmartHome обнаруживает новое устройство


Далее разово происходит привязка устройства к Mi аккаунту, через Wi Fi


Синхронизация данных


И подключение к устройству




Удлинитель появляется в списке устройств приложения SmartHome


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


Программа проверяет и при необходимости предлагает обновить прошивку удлинителя


Это занимает некоторое время - минут 5. После сопряжения с ПО, светодиод на удлинителе меняет цвет на синий.

Русификация приложения

После обновления прошивки - нужно русифицировать плагин для работы с ним. Для этого понадобятся ROOT права и приложение . Идем по этой ссылке на гугл диск - и из папки 150 - тройник SMART Power Strip, забираем файл 2632.apk. Далее на нашем аппарате, идем в /data/data/com.xiaomi.smarthome/files/plugin/install/mpk, и там в папку 150 записываем этот файл с заменой существующего. Я немного экспериментировал и у меня в папке 150 - было два файла. Но менял только этот - один.


После чего осталось перегрузить телефон и получить русифицированное приложение

Работа с приложением

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


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


В правом верхнем угле имеется неприметная кнопка настроек


Здесь можно с интервалом в 5 секунд получать данные о потребляемой мощности


Посмотреть историю запросов


Узнать интимные подробности про удлинитель


А так же попасть в меню настроек


Через приложение SmartHome - можно переименовать удлинитель как-то более по православному


Так как я использую его в стойке для телевидения то и название соответствующее


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


Измененное название теперь отображается и на главном экране плагина. Обратите внимание на этом скрине - отсутствие подключение по Wi-Fi. Работаю по 3G. Так как устройство синхронизируется с Mi аккаунтом - ваше местонахождение не имеет значение, нужно только наличие интернета у вас и в сети где находится удлинитель. В остальном разницы нет.


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


Далее - Таймер. Настройка для установки времени включения - выключения питания.


Обратный отсчет
Выключение через заданный промежуток времени. Имеются предустановки на 30, 60 и 120 минут, а так же пользовательские настройки. Так же можно регулировать время управляя таймером просто пальцем.


И статистика энергопотребления. Выглядит так

Вывод

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

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

Как обычно шастая по Али, Гирбесту и Бангуду - я наткнулся на данный товар.
Цена как и сейчас была 22.99$.
Использовал купон на 5$ от 10$, купленном за баллы - получил в итоге цену в 17.99$.

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

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

Приступим к осмотру самого товара.

Характеристики:
Brand Name: ORVIBO COCO
Product Model: E11 USB Version Smart Control Power Strip
Weight: 400g
Size: 280 x 50 x 28mm
Length: 1.8M (including wire)
Shell Material: PC material
Using Enviroment: -10℃-+40℃
WiFi Wireless: WiFi 2.4GHz b/g/n
Safe Standard: WEP/WPA-PSK/WPA2-PSK
Static Power: <0.5W
Rated Power: 2000W
USB Port: 2Ports, Total 2A
Voltage Range: 110V-250V
Max Working Current: 8A

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

На лицевой части коробки логотип фирмы ORVIBO.

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

Сам удлинитель и кабель отлично сложены внутри коробки:



Кабель качественный. Его длина составляет 1.5 метра.

Вилка Китайская. Магазин заботливо положил переходник на нашу розетку:

Так же имеется простейшая инструкция, которая на Китайском языке.

Сам удлинитель очень качественный. Всё сделано на высшем уровне.
Пластик отличный. Лицевая часть из матового пластика, а остальная часть корпуса - из глянцевого пластика.

На лицевой части расположились снизу вверх:
1) Индикатор работающего Wi-Fi зеленого цвета
2) Кнопка включения\отключения
3) Два USB разъема для зарядки устройств.
4) Три разъема розеток, предназначенных под любые розетки.

Кнопка включения так же подсвечивается по кругу зеленым цветом во включенном состоянии:



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

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

Приложение для управления под названием - Home Mate.

Подключается устройство очень просто.
Шаги:
1) Сканируем QR код на коробке устройства и качаем приложение Home Mate.
2) Включаем удлинитель.
3) Заходим в приложение и жмем кнопку - Добавить Устройство.
4) Сканируем QR код на нижней части устройства. Приложение понимает что за устройство к нему пытаются привязать.
5) Затем в течение 5 секунд держим кнопку включения на устройстве. Включается встроенный Wi-Fi модуль и индикатор загорается зеленым цветом.
С помощью wi-fi находим устройство и привязываемся к нему.
6) Затем приложение говорит нам, что удлинитель нашел wi-fi сеть с интернетом и просит нас к нему подключиться.
7) Подключаемся к вашей основной сети с интернетом.

Всё. Сами пишем любое имя для вашего удлинителя и жмем Готово. Устройство завязано с вашей основной wi-fi сетью.

Больше подключаться к устройству будет не нужно.
Оно будет управляться через интернет.
Если на вашем телефоне не включен интернет, то в приложении рядом с устройством будет красоваться надпись - Offline.

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

При нажатии Add Timer мы переходим к управлению устройством по времени.
Тут мы можем настроить когда и во сколько устройство включится\отключится.
Заданий можно создать хоть сколько.

USB разъемы работают постоянно. Не важно - включено устройство или нет.
Выдают честные 2А.

В данный момент удлинитель будет использоваться для управления включением УФ-ламп для рассады.

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

Могу включать отключать\включать устройства по расписанию или в любой момент при рабочем интернете в любой точке мира)

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

Эти «подлые вампиры» сосут энергию из розеток днём и ночью 24 часа в сутки. Кто поможет обуздать их аппетиты? Парадоксально, но всё та же умная электроника.

По подсчётам специалистов из Лаборатории Лоуренса Беркли на работу бытовой электроники в режиме ожидания расходуется от 5 до 10% всего домашнего энергопотребления. Тихие «вампиры» несут ответственность примерно за 1% мировых выбросов углекислоты в атмосферу.

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

Увеличить число розеток и доставить электричество в нужное место в доме - это всё, что может предложить потребителю обычный сетевой удлинитель. Но возможности «умных удлинителей» намного шире.

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

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

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

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

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

Например модель Smart Strip LCG4 состоит из десяти розеток с цветной маркировкой. Если включить телевизор в синюю розетку, а остальные приборы группы в белые, то удлинитель будет управлять энергопитанием «белой электроники» основываясь на состоянии синей розетки. При этом розетки с красной маркировкой управляются индивидуально.

Ещё больше умеет умный удлинитель модели Isolé IDP-3050. Этот прибор оснащён функциями сетевого фильтра и датчиком движения. Розетки удлинителя активны только тогда, когда рядом находятся люди. При отсутствии человека в помещении дольше настраиваемого (0,5-30 минут) интервала ожидания розетки отключаются.

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

Мини устройство Mini Power Minder состоит всего из двух розеток и USB входа управления. Электричество подаётся в розетки только тогда, когда работает «ведущее» устройство, например, компьютер, и на USB вход подаётся напряжение 5 вольт.

Привет, Хабр. В прошлом году сделал "умный" удлинитель для управления гирляндами на елочке. Но тогда руки так и не дошли написать об этом статью. Исправляюсь.


Сама елочка



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


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

Итак приступим

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



Блок питания на 5 вольт и шилд с 4 реле были найдены в запасах мелочевки купленной в на aliexpress.



Теперь, самое главное - "мозги". Мозгами в проекте будет плата Wiieva, в которой есть все, что нам надо - экран, микрофон, wifi, форм фактор ардуино, совместимый с реле шилдом. WiFi модуль реализован на суперпопулярном esp8266, управление периферией и работа со звуком - на stm32f105rbt.


Собираем умный удлинитель

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

Подключаем мозги - соединяем плату Wiieva и шилд с реле

Размещаем все компоненты по своим местам

Вид сверху на "умный удлинитель" в сборе

Немного эстетики - печатаем крышечку на 3d принтере

Что получилось

Как устроена програмная и аппаратная часть

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

  • распознавание на устройстве
    Плюсы: не требуется интернет подключение
    Минусы: требуется большая вычислительная мощность, очень ограниченный словарный запас, большой процент ошибок.
  • распознавание в облаке, например google или yandex
    Плюсы: хорошее качество, практически не ограниченный словарный запас
    Минусы: требуется интернет подключение, увеличенный latency
    В случае с IoT устройством, имеющим процессор с 64кб ОЗУ и 160Мгц - сделать уверенное распознавание голосовых команд на борту - невозможно. Можно обучить его распознавать несколько слов и то, предварительно натренировав на свой голос.

Поэтому, для распознавания речи использовал сервис google speech recognition. Казалось бы, не сложная задача, записать звук с микрофона и отправить в google speech recognition. Однако, когда речь идет про устройство на базе esp8266, то задача оказывается не тривиальной.


У esp8266 нет хорошего АЦП, а тот, что есть на борту, технически не позволяет записать ничего отличного от шума. Поэтому, для захвата звука, в качестве достаточном для распознавания речи, как минимум нужен внешний АЦП или еще лучше, внешний процессор, к которому подключен микрофон. Попробовав несколько вариантов - остановился на stm32 + цифровой PDM микрофон.


Следующая задача - управление/передача данных от stm32 к esp8266. UART и i2c были сразу отброшены, как медленные интерфейсы и принято решение использовать SPI. SPI - это синхронный интерфейс с обязательным распределением ролей: мастер и слейв. В связке stm32 и esp8266 основная логика программы выполняется на esp8266, а stm32 - сопроцессор, работающий с периферией. Поэтому, логично назначить esp8266 роль мастера, а stm32 - роль слэйва.


Эта связка дала хороший результат: чистый звук с микрофона без помех и без постороннего шума. Увы, звуковая идиллия продолжалась не долго, ровно, до момента отправки полученного звука через WiFi по http соединению в google.


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


Поэтому, как часто бывает, аппаратную проблему пришлось полечить программно. Логичное решение - копить звук в буфере, а по завершении фразы отправить по http в облако. Казалось, бы делов - сохранить в буфере. Но тут вспоминаем, что у нас всего 40КБ свободного ОЗУ. А даже с частотой оцифровки 8кгц в 40КБ влезет всего лишь 2 с небольшим секунды записи несжатой речи. Маловато будет.


Решением оказалось предварительно паковать звук кодеком SPEEX - он дает рейт 2KB в секунду, чего более чем достаточно, чтобы записать любую голосовую команду целиком в память, а конец фразы определять алгоритмом VAD (Voice Activity Detector).


Вуаля - такая конструкция заработала, и стала уверенно распознавать любые произносимые фразы.

Про плату Wiieva

Тут, наверное, стоит сделать лирическое отступление. У тех кто, дочитал до этого абзаца, скорее всего возникнет вопрос - неужели столько телодвижений только ради голосового управления елочкой. Простой ответ, конечно, - не только. Пару лет назад, когда esp8266 только появилась у меня, возникла мысль - прикрутить к ней облачное распознавание речи. И, в свободное время, я со знакомым электронщиком неспешно пилил проект, который вылился в плату wiieva и описанную выше конфигурацию. В процессе жизни проект обзавелся кучей фишек, например, mp3 плеер с динамиком, Arduino-совместимый форм фактор, датчики температуры/влажности/давления, тач скрин, USB, ИК диод и слот MicroSD.


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

Скетч с логикой

Программа написана как скетч для Arduino окружения esp8266.


Кроме распознавания голосовых команд, скетч обладает UI - скринсэйвер с красивой елочкой, экран управления с кнопками включения/выключения гирлянд.
В дополнение к локальному управлению, есть http API включения/выключения гирлянд. Это для управления елочкой через общий интерфейс умного дома.


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



Инициализация и запуск распознавания


// Подключаем библиотеку аудиозаписи #include WiievaRecorder recorder (2000*5); // Переменные для распознавалки unsigned long timeRecorderStart = 0,timeRecorderEnd=0; bool wasVAD = false; void startRecognize () { // Запуск рекордера recorder.start (AIO_AUDIO_IN_SPEEX); Serial.printf ("Start recording\n"); timeRecorderStart = millis(); timeRecorderEnd=0; wasVAD = false; }

Само распознавание и выполнение команд


void processRecognize () { if (!timeRecorderStart) { return; } // Проверка состояния Voice Activity bool res = recorder.run (); bool vad = recorder.checkVad(); if (vad && !wasVAD) { Serial.printf("VAD: speech started\n"); } wasVAD = wasVAD || vad; if (millis () - timeRecorderStart < 3000 || vad) timeRecorderEnd = millis (); if (res && (!timeRecorderEnd || millis () - timeRecorderEnd < 500)) // VAD еще не сработал - записываем дальше return; recorder.stop(); timeRecorderStart = 0; if (!wasVAD) { // Не было голосовой активности - выходим return; } // Создаем http клиент и далеам POST в google speech recognition HTTPClient http; http.begin(url); http.addHeader ("Content-Type","audio/x-speex-with-header-byte; rate=8000"); int httpCode = http.sendRequest ("POST",&recorder,recorder.recordedSize()); if(httpCode > 0) { Serial.printf(" POST... code: %d\n", httpCode); String payload = http.getString(); Serial.println(payload); String cmd = "toggle"; // Грепаем по ответу из гугла команду // Ответ приходит в JSON, но для простоты мы просто ищем вхождение подстроки с командой if (payload.indexOf ("выклю")>=0 || payload.indexOf ("погас")>=0) cmd = "off"; else if (payload.indexOf ("вклю")>=0 || payload.indexOf ("зажг")>=0) cmd = "on"; if (payload.indexOf ("музык")>=0) startPlay(); else if (payload.indexOf ("все")>=0) controlAllRelay (cmd); else { // Ищем имя гирлнянды if (payload.indexOf ("шарики")>=0) controlRelay (0,cmd); if (payload.indexOf ("свечки")>=0) controlRelay (1,cmd); if (payload.indexOf ("мишки")>=0|| payload.indexOf ("виски")>=0) controlRelay (2,cmd); if (payload.indexOf ("огоньки")>=0) controlRelay (3,cmd); } } http.end(); }

Под капотом

Оцифровка звука

PDM Микрофон подключен к SPI/I2S2 процессора stm32. В качестве референса использовал этот


Для того, что бы не загружать процессор данные из I2S получаются с использованием DMA в кольцевой ping-pong буфер.
PDM. Обработка полученных PDM данных происходит по прерываниям от DMA. Работа с прерываниями DMA достаточно стандартная для stm32:
Есть два признака прерывания по заполнению верхний/нижней половин буфера. В обработчике прерывания выбирается половинка буфера, с уже готовыми данными


Затем происходит преобразование буфера из формата PDM в обычный PCM: набор сэмплов (значений уровня сигнала) с требуемой частотой дискретизации.


После преобразования и ресемплинга данные в формате PCM складываются в кольцевой буфер pdm_samples_buf .

Кодирование в speex

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


Поэтому упаковка происходит асинхронно, в основном цикле программы - код код часть вторая


Заодно с кодированием в SPEEX анализируется наличие голосовой активности алгоритмом VAD.
А закодированная кодеком speex речь складывается в еще один кольцевой буфер speex_buf , из которого они уже и передаются в esp9266

Передача закодированного буфера из stm32 в esp8266

Интерфейс между esp8266 и stm32 построен по принципу команда -> ответ. esp8266 отправляет команду, stm32 отрабатывает команду и возвращает ответ. У части команд вместе с телом команды/или телом ответа передается буфер данных.


Со стороны esp8266 алгоритм работы получился очень простой:
Отправить команду чтения буфера данных и считать данные:


Так выглядит код со стороны esp8266:
код рекордера
код работы с SPI


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

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

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


В планах еще допилить активацию распознавания речи по hot-word, например "елочка". Для этого планирую затащить небольшой кусочек pocketsphinx на борт и делать на борту что то типа MFCC+DTW...