ФОРУМ КУПИТЬ

Последние статьи

ВСЕ СТАТЬИ

Cubieboard2 в роли сервера Умного Дома

17/05/2014 23:46:25

О сервере. Страшном и ужасном.

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

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

Персональный компьютер в роли сервера Умного Дома

Когда я только начинал заниматься автоматизацией своего жилища и написанием первых статей на сайте, в качестве сервера я использовал старый персональный компьютер с процессором Intel Celeron частотой 800МГц и 256 Мб оперативной памяти. Этот компьютер занимался ретрансляцией видео с аналоговых камер наблюдения, собирал температуру с датчиков по шине 1-wire, управлял уличным освещением и все это отображал на домашнем Web-сайте. Я взял персональный компьютер по очень простым и понятным причинам:
Во-первых, он у меня все равно валялся без дела.
Во-вторых, на персональный компьютер очень легко установить стандартную операционную систему (например, Debian Linux).
В-третьих, персональный компьютер имел все необходимые для моих задач интерфейсы (USB - для подключения шины 1-wire, PCI - для установки плат оцифровки изображения, LAN - для доступа к серверу по сети Ethernet).

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

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

Альтернативы?

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

1. Цена и доступность. "Сервер" Умного Дома вполне можно запустить на железке за 3000 руб, за 2000 руб и даже за 1500 руб.

2. Тишина и потребление электроэнергии. Если некоторые мини-ПК (которые фактически являются уменьшенными версиям обычный персональных компьютеров), снабженные процессорами Intel Core i7 еще вынуждены вращать лопастями вентиляторов, то большинство мини-компьютеров на процессорах ARM обходятся без охлаждения и потребляют за месяц не 60кВт*ч, а, скажем, не более 3 кВт*ч! То есть в двадцать раз меньше! Стоит ли говорить, что требования к резервному питанию такого сервера значительно ниже.

3. Производительность. Самый интересный параметр. Выше производительность - выше цена и потребление электроэнергии. Но каковы минимальные требования к серверу Умного Дома. Это зависит от конкретных задач. Но если сервер не выполняет тяжелую работу в виде анализа потокового видео, то процессора ARM Cortex, работающего на частоте в районе 1Ггц вполне достаточно, чтобы запустить на нем нормальную операционную систему и все необходимые службы и сервисы.

4. Интерфейсы. Решения от различных производителей имеют в своем арсенале различный набор возможностей для подключения периферии.

Cubieboard2 в качестве сервера - дешево и сердито

Cubieboard - упаковка

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

1. Я умышленно приобрел то, что легкодоступно на рынке (а не требует предзаказа или длительного ожидания)
2. Бюджет до 100 долларов, включая доставку
3. Возможность установки Debian Linux без лишних "заморочек"
4. Наличие HDMI и возможность загрузки как со встроенной NAND-флэш памяти, так и с SD-карты. Наличие LAN, USB
5. Корпус в комплекте.

Cubieboard2

Установка Cubian на SD-карту

По умолчанию в Cubieboard2 зашит Android, который не очень подходит на роль серверной ОС, поэтому необходимо установить Debian. Но ставится в Cubieboard2 пропатченный специально для этой железки Debian, который получил название Cubian. Подробная инструкция по установке размещена по этой ссылке

https://github.com/cubieplayer/cubian/wiki/Install-Cubian

Кстати, Cubieboard2 не имеет VGA или DVI выхода, только HDMI (зато обычный, а не mini и не micro). А так как далеко не каждый монитор имеет HDMI вход, необходимо приобрести кабель типа HDMI-DVI, который продается в любом компьютерном ларьке по цене буханки хлеба. Мне даже достался якобы с позолоченными контактами. Еще потребуется micro-SD карта. Купить можно там же. По цене семечек.
Итак, установка Cubian на Cubieboard

1. Скачиваем имидж Cubian для Cubieboard2 (http://cubian.org/downloads/)

2. Распаковываем чем-нибудь (под Windows есть бесплатный 7-Zip)

3. Если все делаем в Windows, то скачиваем также Image Writer (https://github.com/downloads/openSUSE/kiwi/ImageWriter.exe)

4. Переименовываем распакованный файл в .raw (так как Image Writer видит только такое расширение)

5. С помощью Image Writer пишем образ на флэшку

6. Вставляем SD-карту в Cubieboard и запускаем Cubian

Все очень просто и легко!

Логин:пароль "cubie:cubie"
Зайти в систему также можно через ssh. Используется порт 36000

ssh -l cubie -p 36000 192.168.0.231

Кстати, загрузка Cubian на Cubieboard2 занимает порядка 45 секунд.

Установка Cubian в NAND

В принципе система может работать и с SD-карты, но считается, что NAND-память чуть быстрее.

Устанавливаем cubian-nandinstall

sudo apt-get install cubian-nandinstall

Но запускать cubian-nandinstall в данный момент бесполезно! О, как я люблю подобные ситуации. Все прошивает совершенно нормально, но потом с NAND система не стартует. Отображается прогресс-бар, оставшийся, видимо, от Android с зеленым прямоугольником в самом начале и все висит. Пришлось потратить некоторое количество времени, чтобы найти решение. Проблема где-то в загрузчике.

В общем, делать надо так:

1. Скачать и установить с официального сайта PhoenixSuit
2. Скачать какой-нибудь дистрибутив Linux с официального сайта. Например Lubuntu Server
3. Прошить его с помощью PhoenixSuit

А теперь подробно по шагам. Принцип прошивки показан на видео

http://www.youtube.com/watch?v=TeULfhdX1CY

Потребуется mini-USB кабель
1. Скачиваем и устанавливаем PhoenixSuit
2. Нажимаем на Cubieboard кнопку FEL, и не отпуская подключаем кабель к OTG mini-USB разъему. Windows устанавливает драйвера
3. Выключаем Cubieboard с помощью кнопки Power
4. Запускаем PhoenixSuit, она говорит, что связи нет. Это нормально
5. Нажимаем на кнопку Firmware и выбираем заранее скаченный и распакованный образ Lubuntu Server
6. Нажимаем на Cubieboard кнопку FEL, и не отпуская подключаем кабель к OTG mini-USB разъему
7. Должен автоматически запуститься процесс прошивки
8. Отключаем кабель и загружаем Cubieboard заново с SD-карты

С NAND в данный момент можно не грузиться (никакой Lubuntu нам не нужен), а сразу подключать SD-карту и запускать cubian.
И вот теперь можно выполнить команду cubian-nandinstall. Она прошивает систему в два этапа. После этого Cubian стартует из NAND

Смысл сего шаманства, по всей видимости, заключается в том, что PhoenixSuit что-то меняет в загрузчике, что позволяет нормально запускать Cubian после предустановленного Android

Установка Демо-интерфейса

 

sudo apt-get install apache2 php5 mysql-server php5-gd phpmyadmin
В процессе установки вас попросят ввести пароль root'а для MySQL-сервера
phpMyAdmin устанавливать не обязательно, но может пригодится в дальнейшем.
wget http://ab-log.ru/files/File/ab-log-demo2.zip
unzip ab-log-demo2.zip
sudo cp -r ab-log-demo2/demo/* /var/www/
sudo mysql -u root -p -e 'CREATE DATABASE demo DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci'
sudo mysql -u root -p -D demo < ab-log-demo2/sql_dump/demo.sql
Теперь нужно только отредактировать файл /var/www/ab-cms/config.php и поменять пароль на тот, что вы указали в процессе установки MySQL.
Это можно сделать с помощью менеджера mc или любого редактора: vi, joe и т.д.

 

Теперь открываем браузер и указываем IP-адрес нашего "сервера".


Прекрасно! Удивительно, но все работает достаточно быстро без каких-либо дополнительных настроек. Графики отрисовываются бодренько, данные подгружаются без ощутимых задержек. Полновесная (если не сказать тяжелая) связка Apache2 + PHP + MySQL на Cubieboard2 работает более чем сносно, учитывая относительно большой объем данных в БД! Конечно, на моем сервере с процессором Intel Core i3 интерфейс работает чуть шустрее (особенно на сложных запросах), но сравните стоимость, габариты и потребление! Если же оптимизировать базу данных, не хранить в таблицах архивы пятилетней давности и немного подкрутить настройки MySQL-сервера, можно добиться еще большей скорости.

Cubieboard2 как сервер для устройств MegaD-328

Контроллеры MegaD-328 могут работать и самостоятельно, без сервера, но система автоматизации дома в полной мере проявляется тогда, когда за функциональность, за алгоритмы, за логику отвечает какой-то интеллектуальный элемент. Например, Cubieboard2. Да, он вполне годится на роль такого элемента. Ведь мы прошили в него Cubian - полноценный Debian. Точно такая же операционная система, предположим, могла бы работать на той самой страшной железке, фотография которой размещена в начале статьи. В Cubieboard2, таким образом, присутствуют все необходимые средства для реализации алгоритмов: PHP, Perl, Python, Bash, Ruby - да все, что угодно! Ну а насколько отзывчив Cubieboard2 в качестве сервера для управления, скажем, освещением, где скорость реакции довольно важна?
Я решил проверить. Достаточно только отредактировать скрипт mod_megad.php, который находит в том же архиве с демо-интерфейсом.

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


MegaD-328 Kit и... сервер

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

А питание?

Cubiboard питается от 5В постоянного тока. В стандартную поставку Cubiboard2 Kit входит шнурок. С одной стороны штекер питания, с другой - USB. Блок питания в комплект не входит. Можно приобрести специальный блок питания (типа DR-30-5), но есть решение проще и дешевле - зарядное устройство для современный смартфонов. Например, такое...

Подойдут любые зарядные устройства со стандартным USB-разъемом. На фото, блок питания Samsung.

А если уже есть сервер?

Вы наверное спросите меня, зачем мне Cubieboard, если у меня и так в подвале два довольно мощных сервера? Зачем он мне нужен? Главная цель статьи - показать, что не так страшен сервер, как его малюют. Многие мои читатели часто спрашивают, можно ли в MegaD-328 реализовать алгоритм автополива без сервера, алгоритм управления запуском дизель-генераторов без сервера, алгоритм управления отоплением без сервера. Можно сделать миллион разных прошивок под конкретные задачи, но зачем? Когда намного проще установить в шкаф вот такую маленькую коробочку, которая в лучшем виде реализует все задумки, а MegaD-328 останутся тем, ради чего создавались - умными и быстрыми исполнителями.
Но не только для написания статьи был приобретен Cubieboard2. Дело в том, что серверная у меня находится в подвале. А на первом этаже, к примеру, есть кнопки постановки/снятия дома с режима охраны, кнопка открытия замка калитки и прочие органы управления. Мне бы хотелось, чтобы рядом с входной дверью (совсем рядом с тем местом, где у меня собран шкаф со всей автоматикой первого этажа) был установлен динамик и при нажатии на кнопку открывания калитки, динамик произносил "Замок калитки открыт", а при постановке на охрану воспроизводилось сообщение "Дом переведен в режим охраны". А можно пойти намного дальше. Так как всей телефонией у меня заведует Asterisk, можно сделать так, чтобы система при снятии с охраны сообщала о пропущенных звонках или сообщала другие важные сведения.

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

Нужно всего лишь написать простой PHP-скрипт

<? exec("aplay /var/www/sounds/test.wav"); ?>

Теперь при вызове URL-скрипта с любого компьютера в локальной сети будет воспроизводится файл test.wav или любое иное действие.
Только чтобы Apache имел доступ к аудио-выходу, нужно добавить пользователя www-data в группу audio.
Редактируем /etc/group

audio:x:29:cubie,www-data
Перезапускаем Apache
sudo /etc/init.d/apache2 restart

Все! Теперь при выполнении на основном сервере команды типа:

curl 192.168.0.231/test.php

или в PHP-скрипте

file_get_contents("192.168.0.231/test.php")

будет выполняться скрипт на Cubieboard2 и проигрываться необходимое сообщение. Мы можем добавить параметры, можем прикрутить синтез речи. Можем использовать cubieboard как сервер для распознавания речи. И такие многофункциональные микро-серверы могут работать самостоятельно, объединяясь в распределенную сеть, а могут работать под управлением главного сервера, выполняя узкоспециализированные задачи или дуюлировать функции центрального сервера в случае выхода его из строя. Все ограничивается лишь фантазией проектировщика и создателя. Стоит ли говорить, что на Cubian легко ставится owfs и поддержка сети 1-wire...

Напоследок. Как правильно обновлять Cubian. С помощью программы cubian-update

sudo apt-get install cubian-update
sudo cubian-update


Cubieboard2 Kit - комплект поставки

А скоро я напишу, что еще можно сделать интересное с платами типа Cubieboard2...

 

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



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

(необязательно, не отображается на сайте)


Сортировка комментариев: Последние сверху | Первые сверху

2014-05-19 02:45:12 | Сергей
У меня не завелось полноценно.
Отличия:
1. одноядерный кубик
2. ось - просто дебиан (не cubian)
3. пакеты уже стояли.

Что не работает:
1. не рисуются графики
2. На главной нет картинки в левом-верхнем углу.

В логе апача ошибки:
PHP Warning: imagettfbbox(): Could not find/open font in /var/www/graph.php on line 132
PHP Warning: imagettfbbox(): Could not find/open font in /var/www/graph.php on line 143

Я посмотрел, у меня просто нет папки cadmin/fonts/DEFAULT.TTF
Да и файла DEFAULT.TTF в /var/www нет нигде.

Еще ошибки:
Undefined index: h in /var/www/img.php on line 35,
Undefined index: sec in /var/www/img.php on line 42
File does not exist: /var/www/ab-log, referer: /192.168.254.8/ab-log/
Что с этим делать - совсем не знаюю.

Еще что заметил - квадратики в "климат", "журнал системы управления отоплением". Я по-моему настраивал mysql для работы с utf-8. Может из-за этого все проблемы?

Еще если поставить демку не в папку /var/www, а к примеру /var/www/ab-log , то пропадает вкладка "Люди".


2014-05-19 12:59:15 | Andrey_B
Сергей, demo-интерфейс в текущем виде скорее полуфабрикат, сборник скриптов, а не готовое ПО. Графики не рисует, потому что нет свежих данных в БД. Ведь графики отображают данные за последний час, а в дампе лежат данные на момент его создания, то есть как бы старые. Нет картинок с камер наблюдения - элементарно их нет в архиве. Создайте папку snap и положите в нее Monitor1.jpg - будет картинка. Это я поправлю в архиве.
Ошибки по поводу шрифтов посмотрю.


2014-05-19 21:07:44 | Марат
В данный момент изучаю момент интеграции данной системы и заинтересовал вопрос долговечности Nand/Flash памяти с использованием MySQL сервера. Как известно, такой тип памяти имеет ограничение по ресурсу записи данных. Не лучше сразу использовать sata HDD (2,5), учитывая наличие выхода питания и sata?


2014-05-20 13:02:42 | Andrey_B
Марат, вопрос действительно актуальный. Насколько я понимаю, NAND (SLC? я точно не знаю какой тип используется в Cubieboard2) выдерживает 100 000 циклов перезаписи, что в общем не очень много (но и не мало). Если планируется большое количество операций записи, действительно есть смысл использовать HDD.


2014-05-20 16:21:02 | andvas
Andrey_B у вас в статье написано про потребление сервера и указаны единицы кВтч , разве это правильно? например "ARM""скажем, не более 3 кВтч!" . Например обычный утюг потребляет 1,5-2 кВтч, наверное вы хотели написать Втч ?


2014-05-20 16:49:33 | Andrey_B
andvas,
"ARM обходятся без охлаждения и потребляют за месяц не 60кВт*ч, а, скажем, не более 3 кВт*ч" - обратите внимание - "за месяц". Только месячное потребление имеет наглядный смысл, ведь тариф за электроэнергию у нас выражается в кВт*ч.


2014-05-23 19:37:38 | Ильшат
Андрей, спасибо за как обычно качественную, приятную и актуальную статью :-)
Скажите пожалуйста, почему в фокус не попал Raspberry? Какие на вас взгляд у него преимущества и недостатки по сравнению с cubieboard?


2014-05-26 11:03:55 | Andrey_B
Во-первых, вот тут кое-что написано
https://wiki.debian.org/RaspberryPi
А, во-вторых, по большому счету разницы никакой нет. Было проще и быстрее купить Cubieboard2 Kit с корпусом и набором кабелей, с поддержкой SATA. Но и Cubieboard2 и Raspberry Pi вполне могут выполнять роль домашнего сервера.


2014-06-06 11:30:28 | Le}{@
Всем здравствуйте! Я думаю стоит внимания про еще одного представителя одноплатных компьютеров - Banana Pi. Вот тут можно посмотреть /www.bananapi.org/p/product.html . Характеристики примерно такие же как у Cubieboard2, а возможностей больше, и цена приятнее.


2014-06-13 20:35:35 | Дмитрий
Андрей, насчет VGA вы несколько неправы. У Cubieboard в распоряжении примерно 80 GPIO пинов, которые конфигурируются либо как просто IO, наподобие тех, что в MegaD-328, либо на них накладывается своя функция (очень подробно написано здесь - /linux-sunxi.org/Fex_Guide). Там же описана процедура создания script.bin, который и отвечает за настройку GPIO.


2014-06-21 01:05:47 | Максим
80GPIO.. Хм.. А зачем тогда Мега?


2014-08-14 22:49:21 | Антон
при покупке сервера будет предоставлена полная версия интерфейса (сайта) или так же устанавливаем демо?


2014-08-26 12:45:21 | Andrey_B
Антон, не очень понятен вопрос. Вы имеете ввиду, будет ли что-то установлено на Cubieboard2, если заказывать его у меня? В данный момент нет. Cubieboard2 идет с тем предустановленным ПО, которое загружено в него производителем.


2015-01-14 18:01:59 | Юрий
Андрей_В, скажите, возможно ли использовать Cubieboard2 Kid как видеосервер для CCTV? Если нет то почему, а если да, то что для этого необходимо?


2015-01-15 12:02:29 | Andrey_B
Юрий, в качестве полноценного видеосервера производительность Cubieboard2 слабовата.


2015-01-26 15:50:18 | Badass
Пробовали ли Вы на Cubieboard3. что там со swap и установкой на флешку, не убьет флешку через месяц?


2015-01-26 18:18:12 | Andrey_B
Cubieboard3 не пробовал. Cubieboard2 трудится на смежных задачах (не в качестве основного сервера). Пока полет нормальный.


2017-02-08 17:04:17 | Алексей
Андрей, скажите пожалуйста, как работает Ваш сервер на кубибоард?
Ведь и у SD карт и у Nand ограниченное количество циклов записи в ячейки памяти. Если стоит СУБД, то количество обращений довольно много. Не лучше ли использовать SATA-диск?
Или и решение на sd-карте вполне приемлимо? Делаете ли Вы резервное копирование установленной операционной системы?


2017-02-08 19:28:46 | Andrey_B
Алексей, ваши опасения по поводу SD-карт вполне оправданы. Именно поэтому я не использую мини-ПК в качестве основного сервера. В качестве основного сервера у меня вполне обыкновенный ПК на базе Core i3 с обычным HDD диском. Мини-ПК я использую для реализации вспомогательных функций. В этой статье я лишь хотел показать, что в принципе "сервер" - это не что-то такое очень уж страшное.
А что касается надежности, то Cubieboard у меня успешно помер по причине выхода из строя стабилизатора напряжения. Не смог его отпаять и заменил целиком на Raspberry Pi.


2017-02-09 01:55:30 | Алексей
Благодарю Вас за ответ! А как настраивали Raspberry Pi расскажите, если будет время? :-)


2017-02-09 09:38:41 | Andrey_B
Алексей, да тут и рассказывать особенно не о чем. Поставил Raspbian. Теперь у меня эта штука используется для озвучивания в прихожей всяких событий.