0
<< предыдущая заметкаследующая заметка >>
10 октября 2012
Электронные выключатели noolite

Ну, вы же знаете, что я фанат идеи "умного дома", по первому диплому электронщик и поэтому иногда тоскую без паяльника. Поэтому сегодня расскажу вам (и буду адски рекламировать!) интересные и полезные вещи. Читатели дневника - электронщики из Белоруссии компании "НООТЕХНИКА" прислали мне несколько электронных выключателей, которые я тут же начал пристраивать по всей квартире. Это целая серия электронных устройств, которыми белорусские электронщики опережают по цене/качеству китайские разработки.

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

Устройства поставляются в коробочках такого примерно дизайна:

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

Сам коммутатор - это маленькая коробочка с антенкой и четырьмя проводками: два в сеть, два к лампочке. На снимке коммутатор для ламп накаливания SN111-500 - до 500Вт (бывают и 5000Вт), он регулирует яркость. Внешне похожие, но пластиковые (без алюминиевой стороны) - коммутаторы для люминесцентных ламп. Наука физика не оставляет возможности регулировать яркость люминесцентных ламп, но их можно просто включать или выключать.

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

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

Настройка проста. Подробно цитировать инструкцию не буду, но смысл в том, что надо нажать неприметную кнопку (сдавливанием корпуса) и перейти в режим привязки пульта. Похожая кнопка есть и на пульте. Любой пульт можно привязать к любому устройству, и не только к одному. Все вместе это еще дает возможность задавать сценарии, например пульт у входной двери, отключающий/включающий сразу все лампы в квартире. Привязка устройств не зависит от перебоев энергии и сохранится на годы. Что такое "сценарий"? Допустим, у вас во всех комнатах установлены электронные выключатели, а у двери пульт PU212 (или в кармане брелок PN313). Там есть кнопка "сценарий". Устанавливаем свет в нужное состояние - на кухне включим, в ванной выключим, в комнате выведем средний уровень яркости, после чего удерживаем кнопку сценария несколько секунд (пока светильники не мигнут). Теперь, придя домой вечером, в темноту, можно еще за дверью нажать с пульта кнопку сценария (или у двери в прихожей), и свет во всех местах станет таким, как надо.

Один раз привязали пульт - и всё, запихиваем устройство в щель (по счастью у стандартных трехклавишных выключателей такая щель есть).

Дорогой Станислав Леонидович! Поскольку вы малого пока роста, мы сделали вам отдельный выключатель света в ванной (как вы догадались, я его просто запараллелил с соответствующей клавишей). Выбирай, Станислав, где тебе удобнее будет его наклеить, чтобы самому включать свет? Ребенок выбирает... наклеить в самой ванной. Я честно пытался ему объяснить, что это не самое удачное место (хотя я видал в жизни и такое). Объясняю: лучше повесить снаружи, чтоб не бегать в темноту и искать выключатель наощупь. Но Станислав Леонидович был непреклонен: хочу, говорит, в ванну сюда, и только сюда. Наощупь найду, а что касается темноты - так я ее не боюсь! Гордый. Ну - дело твоё. Мнение молодого человека уважаем:

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

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

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

Цена комплекта "пульт+выключатель" в среднем чуть меньше 1000 руб, что для такой штуки очень мило. Напоминаю, сайт производителей: http://noo.com.by.

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

PS: Разработчики, кстати, по секрету рассказали, что сейчас готовится USB-модель пульта, работающего от компьютера. И у меня конечно сразу зачесались руки осуществить давнюю мечту - управление голосом.

USB-выключателя пока в продаже еще нет, но я уже поинтересовался, что в мире есть для распознавания голоса. И нашел для себя гугловский API, с помощью которого собрал пока систему проигрывания музыки по запросу. Например, если сказать "музыка осень", система полезет в мой музыкальный архив, выберет там все песни со словом "осень" в названии и начнет их играть. Работает! Вчера вечером весь день разговаривал с микрофоном. Правда, с расстояния нескольких метров от микрофона ноутбука речь Гугль разбирать перестает. И много делает ошибок. Например, мне так и не удалось его заставить играть песни со словом "весна" - он переводил как "авто" и запускал в плейлист не только все треки со словами "автоматика", "автобус", но и 2000 треков из папки "АВТОрская песня и шансон", что оказалось совсем невыносимо. Плохо было и с английским языком. Я конечно понимаю, что мой акцент ужасен, но распознать "Jesus Christ Superstar" как "проститутка" - да ты, Гугль, запредельный кощунник. Кому интересно, как я с этим вчера экспериментировал, под катом скриптики (для Линукса). Очень надеюсь, что в ближайшие лет пять распознавание голоса будет активно совершенствоваться, а USB-выключатели появятся раньше ;)

[показать спрятанное]
Суть распознавания речи состоит в том, что у Google имеется некий API 'https://www.google.com/speech-api/...', на который методом POST можно отправить звуковой ролик специального формата, а в ответ (json) получить распознанные слова. Собственно наша задача — распознать звук среди тишины, сконвертировать в аудиофайл, отправить на Гугль, получить ответ и обработать. Для начала я установил в Линуксе нужные программки:
sudo apt-get install sox flac php5-curl php5-cli

Делаем такой основной файл voice.sh, он делает все операции и запускает плеер xmms:

#!/bin/bash
while [ true ]; do
rec -c 1 -r 16000 voice.wav silence 1 0.3 3% 1 0.3 3%
flac -f -s voice.wav -o voice.flac
play voice.flac
text=`php google.php`
echo 'Google: '$text
res=`php music.php $text`
echo $text $res >>log.txt
if [ "$res" = "OK" ] ; then xmms list.m3u ; fi
done

А вот вспомогательные. Програмка google.php отправляет на Google файл voice.flac и получает распознанный ответ:


#!/usr/bin/php
<?php
$ch=curl_init(); curl_setopt($ch,CURLOPT_POST,1);
curl_setopt($ch,CURLOPT_POSTFIELDS,array('myfile'=>'@voice.flac'));
curl_setopt($ch,CURLOPT_URL,
'https://www.google.com/speech-api/v1/recognize?xjerr=1&client=chromium&lang=ru-RU');
curl_setopt($ch,CURLOPT_HTTPHEADER,array('Content-Type: audio/x-flac; rate=16000'));
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); $r=curl_exec($ch); curl_close($ch);
$json=json_decode($r,true);
if(empty($json['hypotheses'][0]['utterance'])) die('');
die($json['hypotheses'][0]['utterance']);
?>

Програмка music.php (после суеты с кодировками) смотрит, было ли в тексте первое слово "музыка", а если было, то ищет среди музыкальных файлов архива нужные слова в названии составляет плейлист:

#!/usr/bin/php
<?php
// трансляторы в cp1251
function uw($txt) { return(iconv('utf-8','cp1251//TRANSLIT//IGNORE',$txt)); }
function wu($txt) { return(iconv('cp1251','utf-8//TRANSLIT//IGNORE',$txt)); }
$a=array(192,193,194,195,196,197,168,198,199,200,201,202,203,204,205,206,
207,208,209,210,211,212,213,214,215,216,217,219,220,218,221,222,223);
$w1251up=''; foreach($a as $l) $w1251up.=chr($l);
$a=array(224,225,226,227,228,229,184,230,231,232,233,234,235,236,237,238,
239,240,241,242,243,244,245,246,247,248,249,251,252,250,253,254,255);
$w1251lo=''; foreach($a as $l) $w1251lo.=chr($l);
function strtolower2($s){ return strtolower(strtr($s,$GLOBALS['w1251up'],$GLOBALS['w1251lo'])); }
// трансляторы в cp1251

// первое слово 'музыка'?
if($argc<=1) die('error: arg'); $argv[0]=''; $text=trim(implode(' ',$argv));
if(!strstr($text,' ')) die('error: 1word');
list($muz,$v)=explode(' ',uw($text),2);
if(wu($muz)!='музыка') die('error: not music`'.$muz.'`');

// ищем среди названий
$e=''; $r=file('mp3.txt'); foreach($r as $a=>$l){ $l=uw(trim($l,"\n\r\t "));
$s=strtolower2($l); if(strstr($s,$v)) $e.=wu($l)."\n"; }

// создаем плейлист
if(!empty($e)) { file_put_contents('list.m3u',$e); die('OK'); }
die('error: not found');
?>

Ну и сделал (find . > mp3.txt) файлик со списком всех 22000 песен домашнего архива, типа:

/r/mp3/CLASSIC/Mussorgsky/Os grandes clАssicos/03 Preludio a la escena de la Cor.mp3
/r/mp3/CLASSIC/Mussorgsky/Мусоргский/05. Прогулка.mp3
/r/mp3/CLASSIC/Mussorgsky/Мусоргский/14. Избушка на курьих ножках.mp3
...
/r/mp3/СТАРЫЕ_ПЕСНИ/Марк Бернес/22-Ya rabotayu volshebnikom.mp3
/r/mp3/СТАРЫЕ_ПЕСНИ/Марк Бернес/01-Moskvichi.mp3
...и до бесконечности

Еще надо соответственно убедиться, что микрофон работает, после чего запустить voice.sh и пытаться что-то сказать. Например - "музыка осень", и насладиться количеством песен с этим словом в названии в своей личной коллекции:

/r/mp3/CLASSIC/Свиридов/06 Весна и осень.mp3
/r/mp3/РАЗБЕРИ/lleo/from_sonny/mp3/ДДТ/Что такое осень.mp3
/r/mp3/АВТОРСКАЯ И ШАНСОН/Олег Митяев/02 Светлое прошлое/05 Что ж ты, осень....mp3
/r/mp3/РУССКИЙ_РОК/DDT/1992 - Актриса Весна/ДДТ - В последнюю осень.mp3
/r/mp3/РУССКИЙ_РОК/DDT/1992 - Актриса Весна/ДДТ - Что такое осень.mp3
/r/mp3/РУССКИЙ_РОК/DDT/1993 - Чёрный Пёс Петербург/Диск 2/ДДТ - Осень.mp3
/r/mp3/РУССКИЙ_РОК/DDT/1993 - Чёрный Пёс Петербург/Диск 2/ДДТ - Что такое осень.mp3
/r/mp3/РУССКИЙ_РОК/DDT/1997 - Акустика/Диск 1/Ю. Шевчук - Осень, мертвые дожди.mp3
/r/mp3/РУССКИЙ_РОК/DDT/1997 - Акустика/Диск 2/Ю. Шевчук - В последнюю осень.mp3
/r/mp3/РУССКИЙ_РОК/DDT/1997 - Акустика/Диск 2/Ю. Шевчук - Что такое осень.mp3
/r/mp3/РУССКИЙ_РОК/DDT/Disk 1/14 DDT - Что такое осень.mp3
/r/mp3/РУССКИЙ_РОК/DDT/Disk 1/DDT - Осень.mp3
/r/mp3/РУССКИЙ_РОК/Алиса/Танцевать/04 Алиса - Знаки (Осень).mp3
/r/mp3/РУССКИЙ_РОК/Московское время/НЕ РАСПРОСТРАНЯТЬ!!!/05 Осень.mp3
/r/mp3/РУССКИЙ_РОК/Паперный ТАМ/2004 Танцы/07 Осень, сентябрь.mp3

А вот "музыка моря":

Google: музыка моря
/r/mp3/АВТОРСКАЯ И ШАНСОН/Вертинский/REMIX/08 Девочка с моря.mp3
/r/mp3/АВТОРСКАЯ И ШАНСОН/Новелла Матвеева/01 Песня моряка.mp3
/r/mp3/ДЕТСКИЕ/Detskie pesny/124_Песня Голубого Щенка и Моряка (Г. Гладков - Ю. Энтин).mp3
/r/mp3/РУССКИЙ_РОК/Гарик Сукачев/Моряк с Ордынки.mp3
/r/mp3/СТАРЫЕ_ПЕСНИ/Владимир Макаров/27-Морячка.mp3
<< предыдущая заметка следующая заметка >>
пожаловаться на эту публикацию администрации портала
архив понравившихся мне ссылок

Комментарии к этой заметке скрываются - они будут видны только вам и мне.

Оставить комментарий