Main

Установка (Linux)

В первую очередь читайте readme.txt, который идёт вместе с дистрибутивом.

Перед началом работы обновим apt-get:

sudo apt-get update
sudo apt-get upgrade

Установим ещё пару приложений которые будем использовать в процессе установки

sudo apt-get install nano wget unzip -y

Устанавливаем SSH

sudo apt-get install ssh -y

Устанавливаем MySQL:

sudo apt-get install mysql-server mysql-client -y

Когда запросит установить пароль для root – укажите любой пароль, который Вы запомните.

Установка WEB сервера

В качестве web сервера можно поставить разные пакеты

Устанавливаем PHP5:

sudo apt-get install php5-cgi php5-cli php5 php-pear php5-xcache -y
sudo apt-get install curl libcurl3 libcurl3-dev php5-curl -y

Для apache

sudo apt-get install libapache2-mod-php5 -y

Для последних версий Апача необходимо включить работу с коротким тегом <? /?> для этого в /etc/php5/apache2/php.ini надо выставить short_open_tag = On

Устанавливаем PHPMYADMIN:

sudo apt-get install phpmyadmin -y

В процессе установки он попросит пароль для пользователя MySQL (который мы указали ранее) и новый пароль для подключения к phpmyadmin

Создадим ссылку в www

sudo ln -s /usr/share/phpmyadmin /var/www/phpmyadmin

Включаем mod_rewrite

sudo a2enmod rewrite

Убираем нотификации в логах PHP:

В обоих конфигах: Для веб-сервера

sudo nano /etc/php5/apache2/php.ini

Для запуска из командной строки

sudo nano /etc/php5/cli/php.ini

для error_reporting задать:

error_reporting  =  E_ALL & ~E_NOTICE

Update: Если вы переносите базу с windows-версии или переустановили Linux, то необходимо также изменить в php.ini

max_execution_time с 30 меняем на 90
max_input_time поменяем с 60 на 180 
post_max_size меняем с 8M на 200M 
upload_max_filesize меняем с 2M на 50M 
max_file_uploads меняем с 20 на 150

Обязательно перезапускаем Апач, чтобы изменения вступили в силу

sudo /etc/init.d/apache2 restart

Устанавливаем MajorDoMo

Скачиваем дистрибутив Majordomo (имя последней версии можно посмотреть тут http://smartliving.ru/Main/Download), разархивируем и копируем содержимое html в папку /var/www/

mkdir /home/majordomo
cd /home/majordomo
wget https://github.com/sergejey/majordomo/archive/master.zip
unzip master.zip
sudo cp -rp /home/majordomo/html/* /var/www
sudo cp -rp /home/majordomo/html/.htaccess /var/www

Первый вариант настройки прав (777)

Меняем права доступа к файлам по принципу: всем-всё.

find /var/www/ -type f -exec chmod 0666 {} \;

и папкам

find /var/www/ -type d -exec chmod 0777 {} \;

Проверяем права командой

ls -lh /var/www

если права по какой-то причине не дались, а об этом говорят минусы вместо rwxrwxrwx. То есть совсем железобетонный вариант:

sudo chmod -R 777 /var/www

Надо заметить, что данный способ, не самый безопасный, но самый простой.

Второй вариант настройки прав (www-data).

Другое решение проблемы с правами следующее. Мажордом работает от пользователя www-data. Права доступа к каталогу /var/www, где лежат файлы Мажордом по умолчанию принадлежат root. Изменим владельца папки /var/www на www-data.

sudo chown -R www-data:www-data /var/www

Но этого мало. Необходимо дать права на доступ к звуку: Т.е. добавить www-data в группу audio. Делаем usermod:

sudo usermod -a -G audio www-data

Проверяем, что он появился в группе:

cat /etc/group | grep audio

ищем строку похожую на

audio:x:29:pi,www-data

для окончательной проверки еще можно запустить из консоли:

Код:
sudo -u www-data /usr/bin/mplayer /var/www/cached/voice/имяфайла.mp3

Должен быть звук. Перезапускаемся (чтобы пользователь обновился). И теперь пробуем через web интерфейс получить сообщение.

Если звук не появился, заходим в утилиту "top" и смотрим под каким пользователем запущен основной скрипт "cycle.php". Если под root или другим пользователем, и нет звука, то убиваем процесс и запускаем скрипт под своим текущем пользователем. И проверяем

Код:
sudo -u ваш_текущий_пользователь /usr/bin/mplayer /var/www/cached/voice/имяфайла.mp3

В случае появления звука, использовать автозапуск системы, согласно пункту "Основной цикл Вариант 1", описанному ниже.

Создание базы данных

Заходим по адресу http://majordomo_IP/phpmyadmin (http://localhost/phpmyadmin4) Создаем базу данных db_terminal и импортируем в нее db_terminal из папки с дистрибутивом. Создаем пользователя и даем ему права на базу данных.

Правим основной конфиг.

sudo nano /var/www/config.php

Прописываем имя пользователя и пароль пользователя БД. Подробнее здесь здесь.

Все, теперь вы можете зайти на веб интерфейс Majordomo

http://majordomo_IP/  (http://localhost/)

Основной цикл Вариант 1 (например для RPI, Ubuntu)

Запуск основного цикла добавляем в Cron, для пользователя majordomo (заменить на своего, под которым запущена система)

crontab -e -u majordomo

Или для ROOT

sudo nano /etc/crontab -e

добавляем строки

@reboot /usr/bin/php /var/www/cycle.php

сохраняем, перезапускаем апач

Основной цикл Вариант 2 (например для Ubuntu)

для Ubuntu (Системы запуск которой основан на "Upstart init daemon job configuration") правильный вид запуска будет таким. Положить конфигурационый фал majordomo.conf в каталог

sudo nano /etc/init/majordomo.conf

Файл majordomo.conf

description     "MajorDoMo"
author          "http://smartliving.ru"

start on runlevel [2345]
stop on runlevel [!2345]

console none
respawn

script
  exec /usr/bin/php /var/www/cycle.php
end script

После этого можно запускать и останавливать главный цикл без перезагрузок ОС.

sudo start majordomo
sudo stop majordomo

Возможные проблемы.

Если не открывается /menu.html в браузере, то дело в том, что не отрабатывает .htaccess -- либо он не отрабатывает вовсе, либо не работает та часть, которая связана с модулем mod_rewrite. В первом случае надо проверить наличие AllowOverride All (есть), а во втором проверить что в настройках httpd.conf подключен модуль mod_rewrite (раскомментирована строчка типа LoadModule rewrite_module modules/mod_rewrite.so)

Arduino

Установка драйверов для Ардуины

sudo apt-get install arduino -y

Для настройки порта Ардуино Мега

stty -F /dev/ttyUSB0 cs8 9600 ignbrk -brkint -icrnl -imaxbel -opost -onlcr -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke noflsh -ixon -crtscts -hupcl

Установка 1-wire

Установим owfs

sudo apt-get install owfs

Настройка:

nano /etc/owfs.conf

Правим:

! server: server = localhost:4304
# USB device: DS9490
server: usb = all
######################### OWFS ##########################
mountpoint = /mnt/1wire
allow_other
####################### OWHTTPD #########################
http: port = 2121
####################### OWFTPD ##########################
ftp: port = 2120
####################### OWSERVER ########################
server: port = localhost:4304

Разное:

sudo apt-get install motion -y (пакет для видеонаблюдения)
sudo apt-get install lm-sensors -y  (пакет для мониторинга температуры системы, частоты вращения кулеров ...)
sudo apt-get install hddtemp -y (пакет для мониторинга температуры жесткого диска)

Для его нормальной работы необходимо запустить конфигуратор:

dpkg-reconfigure hddtemp

и выбрать "запустить с включённым SUID битом - да", "интервал проверок - 0", "запускать как сервис - нет"

Установка Midnight Commander

sudo apt-get install mc -y

МЕДИА.

Для проговаривания голосом:

sudo apt-get install mplayer -y

Для проигрывания музыки

sudo apt-get install vlc -y

Автозапуск

crontab -e -u majordomo_Юзер
в конец:
@reboot vlc -I http

Для доступа к vlc на порту 8080 с других машин необходимо в файле

sudo nano /usr/share/vlc/lua/http/.hosts

раскоментировать нужную строчку. Без этого с других машин будет ошибка Forbidden 403.

Если есть необходимость проигрывать файлы с другой машины (например с NAS) необходимо примонтировать расшаренную папку. Монтирование медиатеки: САМБА

sudo apt-get install smbfs -y

Создаем точку монтирования

sudo mkdir /media/music

Автомонтирование

sudo nano /etc/fstab

в конец

//IP_адрес_медиатеки/music /media/music cifs guest,iocharset=utf8 0 0

Установка в каталог, отличный от WWW

В /etc/apache2/ есть папки sites-available и sites-enabled.

default - отрабатывает /usr/var/www

если нужно просто установить в другую папку и не использовать стандартный путь, можно изменить конфигурацию default

после изменения не забудьте

a2dissite default
a2ensite default
service apache2 reload

Если нужно использовать несколько сайтов - нужно создать дополнительные ссылки в /etc/apache2/sites-available

для этого

sudo cp /etc/apache2/sites-available/default "имя нового сайта"

дальше нужно править его конфиг

nano  /etc/apache2/sites-available/"имя нового сайта"
обратите внимание, что с 13ой убунты. по умолчанию отрабатываются только файлы с расширением *.conf
при потребности, можно изменить в конфиге апача
<VirtualHost *:80>
        ServerAdmin e-mail@site.com
        ServerName  www.address.com
        ServerAlias address.com

        DocumentRoot /home/user/site
        <Directory />
                Options FollowSymLinks
                AllowOverride All
        </Directory>
        <Directory /home/user/site>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
        </Directory>

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Обратите внимание на ServerName, ServerAlias, DocumentRoot, Directory и 2шт AllowOverride

ServerName, ServerAlias - имя, при обращение с которым на данный сервер будет отрабатывать данный сайт (с www и без) DocumentRoot, Directory - путь к файлам

a2ensite "имя нового сайта"

(так как подписано в sites-available)

Перегружаем конфиг apache2:

service apache2 reload

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

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

Под рутом набрать в консоли:

crontab -e

Вставить такую строчку:

@reboot /usr/sbin/ntpdate -s ntp.time.in.ua > /dev/null

Для начала советую набрать в командной строке

/usr/sbin/ntpdate -s ntp.time.in.ua

Если ошибок не будет, тогда уже вносить изменения в крон. Если будут ошибки - устранить

Подключение USB веб-камеры

Используем mjpg-streamer так как он не грузит процессор. Но детектора движения нет.

Установим необходимые пакеты

sudo apt-get install imagemagick libav-tools libjpeg8-dev subversion

Сборка

sudo svn co https://svn.code.sf.net/p/mjpg-streamer/code/mjpg-streamer/ mjpg-streamer
cd mjpg-streamer
make

Добавим пользователя (например у меня это majordomo) от которого будем запускать демон в группу video

sudo gpasswd -a majordomo video

Настроем запуск демона при перезагрузке

sudo crontab -e -u majordomo

добавим строчку в конец

@reboot /home/majordomo/mjpg-streamer/mjpg_streamer -i "/home/majordomo/mjpg-streamer/input_uvc.so -r 1280x720" -o "/home/majordomo/mjpg-streamer/output_http.so -w /home/majordomo/mjpg-streamer/www -p 8181"

где 1280x720 - разрешение нашей камеры 8181 - порт вебсервера

Итого: вебинтерфейс камеры http://ip-adres:8181; видео: http://ip-adres:8181/?action=stream; фото: http://ip-adres:8181/?action=snapshot

Если нет картинки то читаем пост тут: https://www.raspberrypi.org/forums/viewtopic.php?f=28&t=97983&start=25

Настройка HTTPS (Через nginx прокси)

Ставим nginx и openssl:

apt-get install nginx openssl -y

Создадим папку где будем хранить сертификаты:

mkdir /etc/nginx/ssl
chown root:root /etc/nginx/ssl
chmod 700 /etc/nginx/ssl

Перейдем в эту папку и сгенерируем сертификат:

cd /etc/nginx/ssl
openssl req -new -x509 -days 9999 -nodes -newkey rsa:2048 -out cert.pem -keyout cert.key

При генерации вас попросят указать некоторые данные, так как мы создаем сертификат для себя то заполнять их не обязательно. Но, если мы хотим использовать полученный сертификат для общения с другими сайтами, необходимо заполнить поле CN именем (или IP адресом) своего сервера, например так:

openssl req -new -x509 -days 9999 -nodes -newkey rsa:2048 -out cert.pem -keyout cert.key -subj "/C=US/ST=New York/L=Brooklyn/O=Example Brooklyn Company/CN=YOURDOMAIN.EXAMPLE"

Настроим https прокси для MD с использованием нашего сертификата: (Тут предполагается, что MD крутится на этой-же машине, на 80 порту. Если нет, то пишем нужное в строке proxy_pass http://localhost:80/) Для этого приводим файл /etc/nginx/sites-enabled/default к следующему виду:

server {
    listen          *:443 ssl;

    ssl                 on;
    ssl_certificate     /etc/nginx/ssl/cert.pem;
    ssl_certificate_key /etc/nginx/ssl/cert.key;
    location / {
        proxy_set_header X-Real-IP  $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header Host $host;
        proxy_pass http://localhost:80/;
    }
}

Перезапускаем nginx

service nginx restart

Пробуем зайти к себе на сайт по https :-)

Можно не генерировать самоподписанный сертификат, а взять бесплатный, например у StartSSL(как это сделать написано тут) или у WoSign(как это сделать написано тут)

Если не выполняются onNewMinute и onNewHour

Нужно проверить настройку BASE_URL в config.php. Если Вы используете домен, а не IP, тогда добавьте в файл /etc/hosts строку вида:

127.0.0.1 domain.com

Где domain.com - это Ваш домен который Вы используете. Комментарий Сергея с форума: Дело в том, что эти методы вызываются через внутреннюю функцию raseEvent, которая обращается к серверу через HTTP-запрос используя BASE_URL. Если он неправильный, то метод не вызовется.

Полезные темы на форуме:

  1. Для быстрой установки необходимых атрибутов можно воспользоваться данным скриптом.
  2. Установка на Ubuntu
  3. Установка Системы Majordomo на Raspberry pi
  4. Установка на FreeBSD
  5. [РЕШЕНО] Проблема с установкой и настройкой на Ubuntu 13.04
  6. Установка на Debian подробная инструкция
  7. CubieBoard - попытка №1

 

Gearbest Устройства для Умного Дома из Китая
Устройства для Умного Дома из Китая
Gearbest Комплектующие для Умного Дома из Китая
Комплектующие для Умного Дома из Китая

Информация

Проекты

Партнёры

edit SideBar

 
Facebook
 
ВКонтакте
 

 

Blix theme adapted by David Gilbert, powered by PmWiki