логин: 
<< предыдущая заметкаследующая заметка >>
27 апреля 2010
Концепция центрального домашнего сервера

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

Эта штука висит под потолком в коридоре, и если снять крышку, то выглядит так:

Здесь мы наблюдаем: корпус с блоком питания FSP (любим за качество и надежность). От него же заодно запитан внешний WiFi-роутер (5V), монитор (12V), небольшой самодельный пульт, ну и срабатывание соленоида замка двери. Одно время я ставил рядом в том же корпусе второй блок питания, соединяя их по земле. И думал, что это поможет разгрузить первый и прекратятся глюки. Но глюки на предыдущей материнке были не от питания, а от слота памяти. Поэтому сейчас у меня снова один блок питания, один сетевой шнур и много свободного места.

В корпусе мы видим три винчестера — это файловый архив общей емкостью 2Tb. Потому что наращивались годами. RAID я решил не ставить, но к выбору винтов всегда относился трепетно, предпочитая Seagate и советуясь всякий раз с друзьями из Oldi. С 1990 года у меня ни разу не горел ни один винт — повезло. В будущем я собираюсь купить очередной винт, это будет Seagate ST31000524NS 1Tb — самая надежная на сегодня модель, как мне сегодня, не сговариваясь, подсказали уже три специалиста: Беркович, Саша Смирнов и Янг.

Вообще сервер живет с 2001 года. Когда-то его первый прообраз установил Морозовский, затем переустановил Семеняка. Поначалу это был Pentium-200-MMX 128Мб памяти, он только раздавал интернет и держал архивный диск. Потом AMD-700, потом Athlon-1700 (сейчас эта плата живет у писателя-фантаста Че — всем была хороша, только SATA в ней нет, а контроллеры гадят), потом год стоял глючный Intel Celeron. А сейчас — что-то очень крутое, чуть ли не 4-процессорное с 2Гб оперативки. Не знаю точно, что это, но спасибо Casper99.

В слотах мы видим карты. Устройств в сервере 7:
— 3 звуковые карты: колонки внутри квартиры, колонки наружу квартиры и одна для разных нужд — то радио в комнате бабушке транслировать, то в ванной мечта у меня душ с музыкой наконец сделать.
— видеокарта
— 2 сетевые: одна получает интернет, другая раздает его — идет к свичу
— видеобластер (получать видео с камер)
Вот и все 7 устройств. Хотя у меня еще мечта поставить WiFi-карту и собрать роутер тоже внутри сервера, это позволит делать кое-какие интересные штуки, недоступные тупым внешним коробочкам.

Рядом с сервером на стене находится монитор (выломан из списанного банкомата и подарен Янгом), прибитая к стене клавиатура, мышь, а также коробка-пульт на 16 кнопок, набитая самодельной электроникой:

Коробка-пульт подключается к LPT-порту. Там, как известно, имеется 5 входов и 8 выходов. 4 выхода идут на коммутационные реле (это тоже в коробочке собрано), из остального с помощью небольшой программки делается матрица 4x4=16, позволяющая получать сигналы с 16 каналов.

Вопрос: зачем все это нужно? Ответ: это нужно для концепции «умного дома». Прежде чем рассматривать конкретные задачи, я перечислю тот инструментарий, которым (по моему убеждению) должен обладать Настоящий Домашний Сервер. Итак, он должен уметь выполнять следующие операции:

1. Файловый архив: сетевой диск для остальных компов квартиры.
2. Роутер: раздача интернета внутри квартиры.

На этом месте фантазия обывателя заканчивается, а мы идем дальше:

3. http и ftp сервер. Вебсайт, php+mysql и т.п.
4. Мультимедия аудио и видео:
— аудио-запись: запись и обработка звука с нескольких каналов. Например, мониторинг шума, распознавание голосовых команд и т.п.
— видео-запись: запись и обработка видео. Например, с камер слежения.
— аудио-воспроизведение: выдача аудио-сообщений на разные группы колонок.
— видео-воспроизведение: показ различной информации на служебном мониторе.
5. Коммутация и сигналы:
— получение сигналов с датчиков (много каналов)
— управление устройствами (много каналов)
6. Получение информации со сканеров: сканер отпечатка пальца, сканер штрих-кода, ИК-пульт дистанционного управления и т.п.
7. IP-телефония. Организация постоянно работающего (в смысле, круглосуточно доступного для звонка вне зависимости от включенных личных компов) skype-телефона.
8. Работа с мобильным телефоном: получение и отправка SMS.
9. Работа с городским телефоном: электронный автоответчик и т.п.

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

Теперь о том, зачем это нужно. Вот примеры задач (из числа уже решенных или гипотетически возможных):

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

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

в) При получении сигнала (по радио, дистанционного) начать писать видеоролик с камеры, по окончании сигнала — прекратить запись, сконвертировать ролик в FLV и выложить на веб. Так я ловил ссущую бабку в лифте. Кстати, она ссать продолжила по весне. Бить ее ногами не позволяет совесть, а участковый тоже не может ничего посоветовать.

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

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

e) Мониторить на вебе (в админской части, разумеется) состояние сервера и электроники (например, SMART винтов), дистанционно управлять квартирой и ее устройствами.

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

з) По голосовой команде зажигать и тушить в комнате свет.

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

и) Пока что-то делаешь в доме — включить музыку (архив 200 Гб). Управлять плей-листом с помощью ИК-пульта или с мобильника по ssh.

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

Я подчеркиваю: что-то из этого было реализовано, что-то работает уже годами, что-то — пустые фантазии, которые никогда не будут реализованы. Важен сам принцип: с помощью сервера можно строить любые системы и простейшими скриптами решать любые задачи — как самые простые (кукушка, сообщающая разными голосовыми сэмплами о начале нового часа), так и сложные. Особенность сервера — интеграция самых разных, порой неожиданных каналов входа и выхода информации внутри квартиры: веб, sms, датчики, сканеры, коммутация. Вам никогда не достичь ничего похожего, используя набор тупых коробочек «роутер» + «сетевой диск». Вот именно поэтому я всегда за централизацию и единое управление.

Вопросы, которые мне часто задают:

Что будет, если сервер взломают?
Не родился еще хакер, способный взломать FreeBSD.

Что будет, если в доме надолго отключат электричество?
Полчаса продержится UPS. Все это время будет работать интернет, WiFi, городской телефон и дверной звонок (обитатели обычных квартир этим похвастаться не могут). Затем электрическая жизнь в квартире прекратится.

Как откроется дверь, если что-то случится с сервером или электричеством?
Ключом. Обычным железным ключом, имеющимся у некоторых членов семьи. Отпечаток пальца — не единственный способ ее открыть. Кстати, пока сервер работает, дверь можно открыть дистанционно — например, по ssh. Этой функции нет у фирменных замков с отпечатком, но жизненная ситуация типа «вдруг приехала теща с чемоданами (друзья проездом), а все на даче» очень реальна.

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

А что говорят соседи, когда все это шумит, кукует, мигает?
Соседи по тамбуру — мама, отец и сестра. Все, что они обо мне думают, уже высказали за первые три десятка лет. Соседи по лестничной площадке и подъезду тоже привыкли. Да и не шумит это. Малость невменяемый сосед с нижнего этажа пытался как-то писать в милицию кляузу со словами «у них входная дверь кричит нечеловеческим голосом», но понимания не встретил.

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

Зачем тебе все это нужно?
По первому образованию я электронщик и программист, мне нравятся такие штуки, без этого скучно жить.

<< предыдущая заметка следующая заметка >>
пожаловаться на эту публикацию администрации портала
Страницы, которые привлекли мое внимание за последние дни, рекомендую:
архив ссылок

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

Комментарии открытых 470: