Локальный сервер Настройка и регистрация
Понятие автоматизации тесно связано с понятием автономности. Поэтому, естественное и справедливое желание владельца умного дома стремиться предусмотреть тот случай, когда облачный сервер окажется вне доступа. Хотя, на практике все мы понимаем, что без Интернета никуда, но нас так или иначе разъедает мысль изнутри : А вот что, если отключат? Не будем глубоко разбираться и доказывать вероятности, просто примем это как наш эволюционный ментальный инстинкт, который спасал нас ранее и требует сатисфакции.
Компьютер для сервера
Если Вы решили организовать свой собственный сервер умного дома, то прежде всего Вам потребуется личный компьютер-сервер. Он должен будет находиться с контроллерами в одной общей локальной сети. Какой компьютер выбрать? Это вопрос не имеет однозначного ответа. Да, самый простой вариант, это использовать в качестве сервера старый системный блок. Однако, он может быть достаточно шумным, и ненадежным. Есть вариант использования одноплатных компьютеров, типа Raspberry Pi. Мощности их будет достаточно, но необходимо обратить внимание на особенности их работы с Flash-картами, которые могут иметь ограниченный срок службы. Из нашей практики, наиболее стабильным решением будет являться сервер на базе форм-фактора Mini ITX. Такие компьютеры, более стабильные, менее шумные и малогабаритные.
Установка ОС и ПО
После выбора компьютера для сервера, Вам понадобится установить на него операционную систему (ОС). Возможно, и даже скорее всего, домашний сервер будет выполнять ряд задач. Например, он может выполнять функции общего сетевого хранилища (NAS), поддерживать систему видеонаблюдения, реализовывать задачи мини-АТС для IP-телефонии, быть игровым сервером ну и конечно уже сдержать какое-либо программное обеспечение (ПО) для организации умного дома. Поэтому, трудно рекомендовать какую-либо ОС для Вашего сервера, потому что она должна учитывать все Ваши задачи. Мы же, в свою очередь, реализовали сервер SmartESP таким образом, чтобы он мог быть установлен на максимальное число разнообразных компьютерных платформ.
Это технология называется контейнеризацией и позволяет в рамках одной системы запускать разные сервисы со своими специфическими требованиями. Мы используем технологию Docker, которая позволяет установить сервер SmartESP в отдельном контейнере. Процесс установки сервера достаточно прост для начинающего администратора и описан ниже.
Предположим, что у Вас уже есть домашний сервер на котором установлена ОС семейства Linux, например можно использовать Ubuntu 20.04 LTS.
- Подготовка директорий:
- Создайте новую директорию, которая станет основной для проекта:
$ mkdir /var/smartesp
- Создайте директорию для базы данных:
$ mkdir /var/smartesp/db
- Настройка конфигурационных файлов:
- Перейдите в рабочую директорию проекта:
$ cd /var/smartesp
- Создайте и отредактируйте файл
config.ini
со следующим содержимым (Вы можете использовать команду:nano config.ini
):; Code page
CHARSET = "UTF-8"
; Database
DB_HOST_NAME = "db"
DB_NAME = "smartesp_db"
DB_USER_NAME = "smartesp_user"
DB_USER_PASS = "smartesp_pass"
; Secret key to restrict calling of the special cron-scripts
MASTER_KEY = "master_key"
; User registration secret key (allow all if empty)
REGISTER_KEY = ""
; Log retention period with full report, days
SAVE_LOG_PERIOD = 2
; Retention period for the summarized report archive, days
SAVE_ARCHIVE_PERIOD = 1000 - Создайте и отредактируйте файл
docker-compose.yml
со следующим содержимым (Вы можете использовать команду:nano docker-compose.yml
):version: '3'
services:
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: mysql_passkey
MYSQL_DATABASE: smartesp_db
MYSQL_USER: smartesp_user
MYSQL_PASSWORD: smartesp_pass
volumes:
- /var/smartesp/db:/var/lib/mysql
restart: always
web:
depends_on:
- db
image: smartesp/smartesp-vega:stable
volumes:
- /var/smartesp/config.ini:/var/www/html/config.ini
ports: - 80:80
restart: always - Установка и запуск контейнера:
- Убедитесь, что у Вас установлены Docker Engine и Docker Compose
- Скачайте образ сервера: docker:/smartesp/smartesp-vega:
$ docker pull smartesp/smartesp-vega:stable
- Запустите ваш докер-контейнер и связанные с ним сервисы в фоновом режиме:
$ docker-compose up -d
- Настройка планировщика задач. Откройте крон-таблицу текущего пользователя командой:
$ crontab -e
и добавьте следующие задания:3 0 * * * /usr/bin/wget -O /dev/null -T 10 -t 1 http://192.168.XXX.XXX/cron/service/master_key/
192.168.XXX.XXX — это IP-адрес Вашего сервера в локальной сети.
* * * * * /usr/bin/wget -O /dev/null -T 59 -t 1 http://192.168.XXX.XXX/cron/auto/master_key/
В случае, если необходимо остановить и обновить или перезапустить контейнер, то это можно сделать следующим образом:$ docker-compose down
$ docker pull smartesp/smartesp-vega:stable
$ docker-compose up -d
После запуска контейнера, потребуется некоторое время пока будет создана база данных. Поэтому при открытии сайта, может появляться сообщение Connection refused. Просто подождите несколько минут и обновите страницу.
После установки сервера, откройте его в браузере и выполните первоначальную установку (создание базы данных), нажав кнопку Запуск.
После этого выполните стандартную регистрацию нового пользователя.
Вот и всё! Ваш собственный сервер готов к работе.
Регистрация локального сервера
Есть еще несколько интересных и важных момент которые стоит упомянуть.
Прежде всего, это возможность получать уведомления. Не смотря на то, что Ваш собственный сервер локальный, тем не менее это не означает, что Вы тоже будете находится всё время рядом с ним. Север может иметь выход в Интернет, благодаря чему появляется очень полезная возможность отправлять уведомления о критических состояниях умного дома. Система уведомлений реализована в каждом проекте и может быть крайне важна. Вот пример автоматических уведомлений созданных для проекта климат-контроля:
Для получения уведомлений, необходимо зарегистрироваться на сайте SmartESP в своем Персональном разделе.
После регистрации, перейдите в раздел Сервера и нажмите кнопку Новый сервер.
В появившемся окне, укажите условное Имя Вашего сервера, а также выберете вариант Local. Кроме этого поля, Вам понадобиться указать Код лицензии. Для этого зайдите на свой собственный сервер как пользователь и перейдите в раздел Учетная запись, где будет доступен Ваш уникальный код лицензии. Скопируйте его сюда.
Нажмите Сохранить и в списке Ваших серверов появится новая запись.
Чтобы подтвердить её, нажмите кнопку Отправить и Вам тут же будет выдан соответствующий лицензионный ключ.
Скопируйте его и перейдите обратно на собственный сервер в панель управления. Отредактируйте поле Лицензионный ключ, вставив ранее скопированный номер.
Готово! теперь Ваш собственный локальный сервер получил возможность отправлять уведомления через наш облачный сервер на Ваш Telegram-мессенджер.