Реклама




Опрос


Что для Вас Умный Дом?


Результаты

Настройка Debian Linux в качестве сервера для домашней автоматизации

24/11/2008 16:38:43

"Пингвины, они же психи..." (м/ф "Мадагаскар")

В своей вводной статье "Умный дом своими руками" я попытался рассказать, почему я решил создавать систему автоматизации дома самостоятельно. Напомню коротко, что дело все даже не в цене готовых и проверенных решений (хотя, зная цены... материал "готовые решения для системы Умный Дом"), а больше в желании исследовать эту область и попытаться собрать из отдельных кубиков целое. Именно по этой причине в качестве операционной системы сервера был выбрал Linux. Эта операционная система как нельзя лучше вписывается в идеологию конструирования, потому что сама по себе эта ОС собрана как конструктор из разных модулей, написанных разными людьми.

ОС Linux имеет, кроме того, следующие преимущества и достоинства:

  • Открытый исходный код (можно всегда разобраться как работает та или иная программа, и даже поправить ее для своих нужд)
  • Linux абсолютно бесплатен
  • Не очень высокие требования к аппаратным ресурсам компьютера
  • Отличная производительность
  • Гибкость
  • Стабильность работы
  • Большое количество бесплатных прикладных программ и решений
  • Огромное количество форумов и документации, в которых можно найти ответы на большинство вопросов

При этом есть и свои недостатки:

  • Относительная сложность установки и использования (пользователь должен иметь некоторые навыки)
  • Не для всех устройств доступны драйверы и не всегда возможности устройства поддерживаются драйвером полностью

В качестве компьютера изначально был взят старый системный блок на базе Intel Celeron 1,3 с 256Мб оперативной памяти и 40Гб (5400RPM) жестким диском. Я решил, что принципиально пойду эволюционным путем и буду расширять систему по мере необходимости. Благо Linux позволяет менять железки без переустановки системы. Проблемы могут возникнуть только при апгрейде жесткого диска на диск большего объема, но об этом позже. Поскольку на этот момент не было информации относительно ресурсоемкости задач для реализации Умного дома, взял то, что пылилось без дела под кроватью.

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

Скачать Debian можно здесь http://www.debian.org
На этом сайте вы сможете также найти множество документации по установке и использованию этой ОС на русском языке.

Я не буду переписывать руководство по установке. Вы прочитаете это в других источниках, если это будет необходимо (я, кстати, не читал). Нас линукс интересует в качестве сервера для домашней автоматизации. Фактически, базовый пакет программ, входящих в Desktop, содержит большую часть того, что нам потенциально может потребоваться. Забегая немного вперед скажу, что ядро моей системы автоматизации использует пакет owfs для управления 1-wire компонентами. Программы управления написаны на PHP и perl. Использованы также возможности awk, bash. В качестве сервера баз данных использован MySQL, а задачи Web-сервера выполняет Apache HTTPD.

Теперь по порядку. В стандартной конфигурации Desktop Debian Linux хотя и обладает большим набором программ, многого не имеет. Прежде всего, мне потребовались некоторые специфические программы, которые не входят в стабильную сборку Debian (настройка видеонаблюдения с помощью ZoneMinder и управление 1-wire сетью под Linux'ом с помощью owfs). В линуксе не принято распространять скомпилированные программы, так как набор библиотек и их версии в разных дистрибутивах разные, поэтому распространяются исходники. Исходники нужно компилировать, поэтому мне потребовались пакеты для компиляции программ в моей операционной системе.

Чтобы установить какой-нибудь пакет в Debian, нужно выполнить команду 'apt-get install имя пакета'

apt-get install build-essential
apt-get install autoconf
apt-get install automake
apt-get install make
apt-get install gcc

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

Система управления пакетами APT работает с репозитарием, некой базой данных пакетов. По умолчанию это DVD-диски дистрибутива, но лучше настроить Debian для загрузки пакетов из Интернета. Тогда имеется возможность получать самые свежие пакеты, а также обновлять имеющиеся. Основной файл для настройки APT - /etc/apt/source.list
Для установки с DVD дисков там должны быть следующая запись:

deb cdrom:/   etch contrib main

Однако если есть доступ в Интернет, лучше прописать

deb http://ftp.debian.org/debian/ etch main
deb-src http://ftp.debian.org/debian/ etch main
deb http://security.debian.org/ etch/updates main contrib
deb-src http://security.debian.org/ etch/updates main contrib

После редактирования source.lst мы должны выполнить команду

apt-get -u update

Да, что касается редактирования файлов. Делать это можно через графический интерфейс, с помощью Midnight Commander'а (привет 80-ые) или тектовым редактором, например, vi. Если вы любитель "ретро", как я, то можете установить Midnight Commander, который наводит ностальгические мысли о незабываемом Norton Commander.

apt-get install mc

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

apt-get install joe

 Чтобы закончить с описанием APT скажу, что если вы все же настроили обновление через Интернет, то для апгрейда пакетов можно воспользоваться графическим интерфейсом или командой

apt-get upgrade

После установки owfs (для микросети на базе протокола 1-wire), которая описана в отдельной статье, возникла необходимость написания управляющих программ: управление освещением, отоплением, вентиляцией. Для этих целей был выбран язык программирования PHP, как наиболее легкий в освоении и использовании. Немаловажным аспектом является то, что php удобно использовать также для написания интерфейсной части системы для Web-сервера. Таким образом, необходимо установить:

apt-get install php5 php5-gd php5-mysql php5-cli

php5-gd - это библиотека GD для PHP, которая позволяет работать с изображениями (пригодится для видеонаблюдения).
php5-cli - это командный интерпретатор PHP (в метапакет php5 не входит и устанавливается отдельно). Необходим для использования PHP не только в связке с Apache, но и отдельно.

Поднимите мне веки!

У любой автоматизированной системы должен быть интерфейс, через который она общается с пользователем. Должен же я как-то контролировать работу электронного мозга. Да и информация, например, с датчиков температуры и влажности, нужна не только для управления отоплением, но и для того, чтобы не одеть в мороз вместо шубы и валенок пляжный костюм. Причем для меня было важно, чтобы этот интерфейс был доступен с любого компьютера в доме, а также извне, из Интернета. Для реализации этой задумки идеально подходит технология Web в общем и HTTPD-сервер Apache в частности. Не нужно забывать и о способе хранения различных данных. Для хранения объемных табличных данных нужна система управления базами данных СУБД. Например, информацию со всех датчиков и исполнительных механизмов я храню в отдельных таблицах. Таким образом, через Web-интерфейс можно всегда получить информацию о том, когда произошло то или иное событие, какой модуль сработал или построить месячный график наружной температуры, потребляемой электроэнергии или воды.

Поэтому мне потребовалось установить Apache httpd и MySQL

apt-get install apache2 mysql-server-5.0

После установки Apache2 и MySQL они автоматически сконфигурируются и запустятся. Также эти программы будут добавлены в автозагрузку.

Моя твоя не понимать.

Несколько слов о языковой настройке. В принципе Apache2 никакой особенной настройки не требует. Но я решил работать в кодировке Windows-1251 (CP1251), поэтому прописал в конфигурационный файл /etc/apache2/apache2.conf такую опцию

AddDefaultCharset WINDOWS-1251

С MySQL-сервером в этом смысле значительно сложнее. Чтобы MySQL гарантированно говорил по-русски, создавал, хранил и выдавал данные на русском, а точнее на 1251-русском, в его конфигурационный файл в блок [mysqld] нужно прописать:

default-character-set=cp1251
character-set-server=cp1251
collation-server=cp1251_general_ci
init-connect="SET NAMES cp1251"
skip-character-set-client-handshake

Решение, как говорится, не фонтан, но работает. Надо только иметь ввиду, что для суперпользователя, root, любого другого, у которого имеются неограниченные права на базу, все равно будет установлена кодировка latin1.

Автор: Andrey_B
Любое использование материалов сайта возможно только с разрешения автора и с обязательным указанием источника.



Добавить комментарий:




2011-11-05 22:26:16 | Andrey_B
Денис, сам по себе функционал не требует больших объемов на жестком диске. Думаю, если взять все программы, система уместится в несколько десятков или в крайнем случае сотен мегабайт. Другое дело данные. Здесь все зависит от того, как часто и какие данные собирать и сколько их хранить. Например, у меня два десятка температурных датчиков. Информацию с каждого датчика я записываю в БД раз в минуту или раз в пять минут и храню в базе около двух недель. Это около 100 тыс записей или несколько мегабайт. Кроме датчиков есть и другие данные, информация с камер наблюдения, данные с электрического счетчика, данные с метеостанции, всевозможные журналы и т.д. Все эти данные могут занимать пару мегабайт, а могут и десятки гигабайт, если хранить всю историю значений или система имеет большое количество устройств, генерирующих информацию. То есть объем данных целиком зависит от конфигурации и настроек конкретной системы.
На моем сервере установлен жесткий диск объемом 80Гб. Так вот все данные (включая ОС и ее файлы) занимают 15Гб.
В этом смысле и размечать диск имеет смысл отталкиваясь от предполагаемой конечной конфигурации системы.


2011-11-05 16:27:02 | Денис
А как вы размечали жесткий диск на сервере. я имею ввиду /boot /var /usr и т.д.
сколько нужно места на диске сервера с функционалом умного дома?


2011-05-01 21:46:23 | Andrey_B
Павел, /dev/ttyS* - это COM-порты. У вас же USB устройство. Опция -d не для вас
Посмотрите что у вас содержится в dmesg (команда dmesg или /var/log/dmesg). Вот, что говорит мой Linux.
[ 9.396314] Driver for 1-wire Dallas network protocol.
[ 9.424183] usbcore: registered new interface driver DS9490R

Далее вам необходимо запустить сервер сети. Для USB устройств делается это, например, так:
/opt/owfs/bin/owserver -u -p 3000
Если вам нужен owfs (представление устройств в файловой структуре, то команда следующая)
/opt/owfs/bin/owfs -s 3000 /mnt/1wire/

Собственно, все. Если будут в дальнейшем сложности, создавайте тему в форуме.


2011-05-01 19:09:57 | Павел
Добрый день! Спасибо большое за Ваш сайт! Проектирую сейчас систему умного дома на новую квартиру. Заказал у Вас модуль на базе DS2413. А на днях пришел мне DS9490B. Не DS9490R, но пойдет. Собрал тестовую сеть: мастер - модуль DS2413 - термометр DS18B20.
Под windows (Benuks, TempKeeper) все работает. Задался целью попробовать под Linux. Установил openSUSE, пакет owfs. Возникла проблема: не могу смонтировать мастер в /mnt/1wire. Не могли ли Вы подсказать команду owfs?
Ввожу /opt/owfs/bin/owfs -d /dev/ttyS0 /mnt/1wire
(пробовал все ttyS) - выдает cannot open port.
Пробовал и с правами superuser - вообще никакого вывода.
Устройств ttyUSB в /dev нет - это правильно?

Заранее спасибо!


2009-12-29 14:26:15 | Serj
Нашлась на праздниках свободная минутка и запустил команду ./configure. Как я писал ранее выдано было очень много бесполезной ДЛЯ МЕНЯ информации и видимо сообщения об ошибках, которые я интерпритирую следующим образом:
1.У меня в Линуксе нет РНР
2.нет Fuse-2.2
3. и еще чего-то. Не помню.
Дома интернета нет, да и на работе не быстрый.
Вопрос: Работая под виндовсом как мне найти недостающие пакеты на DVD или в интернете, что бы прилепить потом в Линукс?


2009-12-18 20:04:31 | Andrey_B
Serj, в DOS или Windows есть такая команда "cd". Не поверите, но точно такая же есть и в Linux. ;)
Большое количество информации далеко не всегда является сообщениями об ошибках. Но ведь на то она и информация, что ее можно прочитать и попытаться понять.
Мы к сожалению говорим о вещах слишком абстрактных и отвлеченных. Тема этого сайта не ОС Linux, а домашняя автоматизация.


2009-12-17 16:48:36 | Serj
Андрей, Вы не ответили на вопрос 2. Знание понятия корня ничего мне не дает. Какую команду набрать?
3. Если я Вас правильно понял, то большое количество появившейся на экране информации (много экранов) говорит о том, что это сообщения об ошибках, а не о том, что Линукс очень "словоохотливый"?
4-й вопрос я задал не очень четко. Такой и ответ.
Спасибо.


2009-12-16 22:39:42 | Andrey_B
Serj, по поводу Ваших вопрос.
1. Не имеет значения
2. В Linux'е нет понятия "диска". Все физические разделы "монтируются" в одно системное дерево. Навигация по дереву такая же как в DOS или Windows, только вместо C: или D: есть просто корень "/"
3. Linux - такая ОС, которая требует от пользователя внимания. После каждого действия нужно внимательно читать - что говорит система/программа/скрипт. Все сообщения об ошибках выводятся на экран или в лог.
4. Я не совсем понял о какой "группе" вы говорите. Я не знаю работаете ли вы в командной строке или из Desktop'а.
В папке с исходниками owfs есть файл README. Настоятельно рекомендую изучить его. Также загляните в инструкции на сайте owfs.org, где подробно описан процесс установки для разных дистрибутивов Linux.
Переустанавливать ничего не надо.


2009-12-16 16:05:20 | Serj
Воспользовался Вашей, Андрей, подсказкой по компиляции:
tar -xvzf owfs-2.7p26.tar.gz
cd owfs-2.7p26
./configure
make
make install
Но видимо ничего хорошего не получилось или я не могу правильно интерпретировать полученные результаты. Поэтому прошу Вас ответить на следующие вопросы:
1.У меня диск раньше был разделен на несколько логических дисков, отформатированных под ФАТ32. Для установки Линукса было создано еще 2 диска для своп файла и самого Линукса. Вопрос: Перед использованием команды tar -xvzf owfs-2.7p26.tar.gz где должен находиться файл owfs-2.7p26.tar.gz на ФАТ или Линукс-диске или не имеет значения?
2.В виндовс, в командной строке (если мне надо перейти с диска на диск) просто набирается имя диска, например А:. Вопрос: какую команду мне надо набрать в Линукс, что бы перейти на тот диск, где лежит файл owfs-2.7p26.tar.gz ?
3.Каким-то образом попав в папку owfs-2.7p26 запустил команду ./configure, которая вывела на экран море информации. Затем запустил команду make и команду make install, которые тоже выдали море какой-то информации. Вопрос: Как мне определить выполнилась команда(программа) положительно или все что она вывела -это сообщение об ошибках?
4. После того как я выполнил предложенные Вами действия у меня в программах Линукс появилась группа owfs.(Делал глубокой ночью, поэтому не ручаюсь за точность описания). В ней появилось много программ(может это ярлыки), но сама owfs в группе owfs значилась как нерабочая. Вопрос: После ответов на мои вышепоставленные вопросы и приобретения мною критериев удачи/неудачи, скачивания недостающих библиотек, МОГУ ЛИ Я повторить комплекс команд ./configure
make
make install
или лучше переустановить Линукс и попытаться с "Чистого листа" повторить компиляцию?
Заранее спасибо за ответы!


2009-12-12 13:20:33 | Andrey_B
Serj, нет, не запрещено. Сообщение было удалено по ошибке, извините. Предложенная ссылка полезна для тех, кто увлекается этой тематикой. Единственный минус, автор при создании главной странички (для MicroLAN) неправильно прописал ссылки. В результате странички открываются только в IE (по крайней мере в IE7), который, видимо, сам исправляет ссылки. А вот в Firefox не работает, либо надо вручную переворачивать слеш в URL.


2009-12-12 12:00:34 | Serj
Андрей, а что, Вашими правилами запрещено размещение информации на сайты с аналогичной тематикой? Если "Запрещено", то не скромничайте, объявите это открыто, а если "Разрешено", то не вижу своей информации на разработки Шабронова А.А. для ДОСа и Виндовса. Но я повторюсь. Мне не трудно. www.irs.ru/~shabr/


2009-12-09 22:58:29 | Andrey_B
owfs-2.7p26.tar.gz - это архив с исходниками, которые нужно распаковать и разархивировать.
Делается это примерно так
tar -xvzf owfs-2.7p26.tar.gz
cd owfs-2.7p26
./configure
make
make install
==
Стоит только сказать, что для компиляции owfs нужны кое-какие установленные библиотеки. В случае нехватки чего либо скрипт configure проинформирует. Размещать архив в специальное место не надо. Устанавливается пакет owfs по умолчанию в /opt/owfs


2009-12-09 17:28:18 | Serj
Мои конкретные вопросы:Я скачал из интернета файл "owfs-2.7p26.tar.gz". Это пакет, программа или архив пакета или архив программы?
Что мне с ним физически дальше делать? Разъархивировать или не надо?
Положить в какое-нибудь специальное место или не надо?


2009-12-05 00:55:12 | Andrey_B
Serj, я, как и большинство людей являюсь пользователем Windows, причем лицензионной. ;) Но этот сайт посвящен не какому-то конечному продукту. Этот сайт посвящен хобби. Можно ли прожить без домашней автоматизации - конечно! Этот сайт для тех, кто увлечен этой темой. И здесь представлено мое видение. Мне было интересно попробовать Linux в качестве сервера и у меня это получилось, хотя я не явлюсь специалистом в этой области. У меня не возникло каких-либо сложностей кроме тех, о которых я написал. Что касается детализации, то можно, конечно писать подробнее, можно расшифровывать кажду фразу, что такое программа, байт, клавиатура, монитор... только зачем? Здесь я пишу, к примеру, про Debian, но есть другие дистрибутивы Linux, которые совсем не похожи на Debian, в которых нет aptitude для управления пакетами или используются совсем другие средства, такие как RPM и т.д. Но смысл в том, что в принципе это все при желании можно поднять на чем угодно, хоть на Windows. Мне неинтересно делать статьи "для чайников". Будут конкретные вопросы - задавайте. Попробую ответить.


2009-12-04 14:41:23 | Serj
Спасибо за быстрый ответ. За пару дней я почитал немного литературы по Linux. Должен констатировать факт, что большинство статей взахлеб расхваливают Линукс. Я встретил только одну, в которой автор прямо указывает, Линукс - это фактически ОС не для простых пользователей и надо сначала потратить очень много времени на его изучение, прежде чем получишь удовлетворительный результат. К сожалению, в своих статьях Вы, как и большинство других авторов-Линуксоидов, очень завлекательно излагаете информацию, изначально зная, сколько проблем ждет не Линуксоида. Поэтому я Вам и написал достаточно подробно в предыдущем обращении, желая принудить Вас либо более подробно изложить информацию(очень желательно!), либо предупредить потребителей Вашей информации о минимально-необходимых требования к уровню знаний. Иначе Вы уподобляетесь продавцам, которые ВТЮХИВАЮТ свой товар любому, только что бы получить прибыль. Извините за резкость. Просто я очень заинтересовался предложенной темой, потратил кучу времени, а в результате получил "пшик". В результате я должен сделать выбор: или получить более удобоваримую информацию, либо вычеркнуть Ваш сайт из посещаемых.


2009-12-02 23:59:20 | Andrey_B
Serj, Вы столько разного написали, что невозможно ответить вам по существу и коротко. Для этого пришлось бы разместить на сайте тонны инструкций, пояснений, расшифровок. Скажу только, что Интернет тем и хорош, что можно найти ответ на все свои вопросы. Нужно только немного потратить времени на _изучение_ того, с чем вы хотите работать. Да, Linux не совсем привычен для пользователя Windows и в некотором смысле он сложнее в использовании. Но недостатки Linux'а - обратная сторона его достоинств. А сайт этот посвящен вовсе не Linux'у. owfs можно запустить и под Windows. А можно взять другие программные продукты под Windows или воспользоваться SDK и написать свое собственное ПО. Цель размещенных на сайте материалов - не дать конкретный ответ или решение, но поделиться идеями, мнениями. А дальше у каждого своя голова на плечах.


2009-12-02 16:36:18 | Serj
Описание проблем с которыми пришлось столкнуться начну с того,
что до сих пор я работал с DOS, Windows, Novell и с Linux'ом дел
не имел. Проблемой умного дома заинтересовался недавно после того,
как этот самый дом у меня появился. Спектр моих интересов сильно
совпадает с интересами автора в контексте умного дома. Поэтому
был очень рад, когда наткнулся на этот сайт и почитал статьи автора.
Чувствуется, что пишет человек, приложивший к словам руки.
Поэтому, не долго думая, побежал покупать DVD с Linux'ом. Ведь
когда читал все было понятно: 1)Устанавливаем Linux 2)Устанавливаем
указанные автором пакеты 3) Наслаждаемся
Какие были проблемы с установкой Linux описывать не буду. Просто
проблемы были. Ubuntu 8.04 поставить не удалось наверное потому, что
были какие-то повреждения информации на диске, а Mandriva, что за
2007год, что за 2009 год установилась не с первой попытки.
Но когда, наконец-то, система была установлена, в колонках зазву-
чала музыка и можно даже было посмотреть фильм, пришло время обратить-
ся к информации автора по развертыванию на Linux'e умного дома.
Автор пишет "Прежде всего, мне потребовались некоторые специфические
программы" и расшифровывает "В линуксе не принято распространять
скомпилированные программы". Для меня это было новостью, а так же
то, что "Исходники нужно компилировать" самому. Далее автор пишет
"Чтобы установить какой-нибудь пакет в Debian, нужно выполнить команду
'apt-get install имя пакета'". Наверное для Линуксоида эта фраза понятна.
Но вот у меня, ДОСовца, она вызвала полный ступор. Во-первых, что автор
подразумевает под словами "программы" и "пакет". Это одно и то же или нет?
Если не одно и тоже, то по каким признакам мне, чайнику, отличить пакет
от программы в Linux?
Я скачал из интернета файл "owfs-2.7p26.tar.gz". Это пакет, программа
или архив пакета или архив программы?
Что мне с ним физически дальше делать? Разъархивировать или не надо?
Положить в какое-нибудь специальное место или не надо? Наверное спецы
будут смеяться, но когда я сделал следующее "Копка Меню"-> "выполнить
команду" и набрал 'apt-get install owfs-2.7p26.tar.gz' ничего не произошло.
Вариации с путями, разъархивированием и прочими попытками результата не дали.
Сделал я и другую попытку "(!) Если вы не хотите работать в командной
строке, то можно запустить программу управления пакетами в графической
оболочке " как-то запустить owfs через "Копка Меню"-> "Установка
и удаление программ". К сожалению в "Параметры"-> "Менеджер источников"
путь ни к файлу "owfs-2.7p26.tar.gz", ни к папке ""owfs-2.7p26" указать
не удалось. И вот уже более часа пишу о своих потугах.
Уважаемый автор, я это все написал не с целью каким-либо образом Вас
критиковать, а что бы Вы увидели "белые пятна" вашего рассказа для
пользователя Windows, где все значительно проще. Теперь я понимаю,
почему Windows настолько популярен!
С уважением и пожеланием успехов, Сергей.


2009-10-29 22:45:49 | Дмитрий
Кстати, настоятельно рекомендую ознакомиться с устройством увеличивающим надежность сервера: www.linuxfocus.org/Russian/July2002/article239.shtml


2009-10-25 21:26:51 | Дмитрий
Спасибо за обмен опытом. Я лично использую сборку Ubuntu-server который так-же базируется на Debian


2009-08-17 13:12:56 | Владимир
Очень понравилось, сам такое хочу сделать на БСД