АННОТАЦИЯ

В данном программном документе приведено руководство системного программиста по установке и настройке WEB-сервиса для управления устройством «бегущая строка».

Общие сведения о системе

Функциональным назначением системы является приём, сохранение и предоставление данных, полученных в процессе работы с WEB-интерфейсом и мобильным приложением. Основные функции системы состоят в приёме и обработке данных JSON формата, сохранение и предоставлении по запросу, для последующей обработкой операторами. Для функционирования системы требуется серверная операционная си-стема, система управления базами данных, веб-сервер с поддержкой языка программирования Java и программный код.

Структура системы

Система приёма, сохранения и предоставления данных, полученных в процессе работы с WEB-интерфейсом и мобильным приложением состоит из комплекса программного обеспечения, необходимого для её выполнения. На серверной операционной системе запущен веб-сервер, ожидающий HTTP запроса. При вхождение запроса выполняется сценарий, зависящий от вызываемого при запросе файла.

Настройка системы

Подготовка системы к работе делится на несколько этапов, выполнение которых будет рассматриваться на примере системы GNU/Linux Debian 9.

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

Установка СУБД MySQL

Обновите базу пакетов

$ apt-get update

Установите пакет MySQL-server

$ sudo apt-get install mysql-server

Если будет просить ввести root пароль, то оставьте его пустым Инициализируйте систему безопасности MySQL

$ mysql_secure_installation

Создание и настройка базы данных

Зайдите в mysql и создайте новую базу данных:

$ mysql –u root –p
(после нужно ввести пароль)

Затем необходимо создать базу данных

CREATE DATABASE RunningString;

Если ошибок нет, то база успешно создана. Создайте пользователя, под которым сайт будет работать с БД:

CREATE USER ‘Amind’@’localhost’ IDENTIFIED BY ‘Abcd123’;

Логин и пароль можно изменить в файле application.properties, находящийся по пути rString\src\main\resources

Выдайте пользователям привилегии:

$ GRANT ALL PRIVILEGES ON production.* TO ‘Amind’@’localhost’ IDEN-TIFIED BY ‘Abcd123’;

Создавать структуру базы данных не является необходимым, поскольку при запуске WEB-приложения она создастся автоматически.

2 Установка зависимостей WEB-приложения

Установка пакета JDK

Для установки необходимо ввести

sudo apt -y install openjdk-8-jdk

Установка зависимости Gradle

Для установки необходимо ввести

sudo install gradle

3 Удалённый доступ к файлам веб-приложения

Установите SSH

$ apt-get install openssh-server

Запустите сервис ssh

$ service ssh start

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

$ scp /path/to/file.http User@remote.host:/var/www/site.ru

Для загрузки папки на сервер используйте команду с ключом –r

$ scp –r path/to/dir User@remote.host:/var/www/site.ru

Для скачивания с сервера на локальную машину используйте команду

$ scp User@remote.host:/var/www/site.ru/file.http local/path/to/dir

4 Запуск WEB-сервиса

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

gradle BootRun

После чего приложение само установит оставшиеся зависимости и при необходимости отобразит ошибки.

5 Обязательные изменения в текстах программ

1. Откройте в текстовом редакторе файл /core/baseinfo.php.

2. Замените в нём:

'spring.datasource.username' – если неоюходимо изменить имя пользователя для доступа к базе данныхх серверному приложению.

'spring.datasource.password' – замените на пароль пользователя базы данных.

'server.http.port' – Замените порт, по которому осуществляется HTTP запросы

'server.port' – Замените порт, по которому осуществляется HTTPS запросы.

3. Сохраните изменения

Проверка системы

Для проведения проверки системы рекомендуется внести данные в ручном режиме через веб-интерфейс, или же провести тестовую передачу данных с устройства. После выполнение внесения данных, проверьте хранимые данные SQL запросом:

select * from massages

select * from string

select * from string_massage

Сообщения системному программисту

При запуске WEB-приложения в консоли Фреймворк будет выводить возможные сообщения ошибок.

ПРИЛОЖЕНИЕ 1

Структура базы данных

Для хранения данных используется следующая структура базы данных:

1. opr_list(N, Name) – таблица содержащая данные о операторах.

Столбцы:

N – уникальный номер оператора(id).

Name – имя оператора.

2. objects(NumOb, NameOb) – таблица содержащая данные о объектах размещения приборов.

Столбцы:

NumOb – уникальный номер объекта размещения(id).

NameOb – наименование объекта размещения.

3. units_list(uNum, uName, Serial, AKey, OPid, x, y, IDob) – таблица со-держащая данные о используемых приборах.

Столбцы:

uNum – уникальный номер прибора(id).

uName – наименование прибора.

Serial – серийный номер прибора.

AKey – ключ доступа прибора (используется для идентификации при-бора при передаче данных).

OPid – уникальный номер оператора (берётся из таблицы OPR_list).

x – координата размещения прибора Х.

y – координата размещения прибора У.

IDob – уникальный номер объекта размещения (берётся из таблицы Objects)

4. info(Num_i, Date, Prib_id, OpNum, ObjectId, x, y) – таблица содержащая данные о сессиях передачи данных.

Столбцы:

Num_i – номер сессии передачи данных.

Date – временной штамп сессии передачи данных.

Prib_id – уникальный номер прибора передавшего данные (берётся из units_list)

OpNum – уникальный номер оператора, закреплённого к прибору на момент сессии передачи данных (берётся из OPR_list)

ObjectId – уникальный номер объекта размещения, где располагался прибор на момент сессии передачи данных.

x – координата X размещения прибора на объекта размещения, на момент сессии передачи данных.

y – координата Y размещения прибора на объекте размещения, на момент сессии передачи данных.

5. save_data(Num, Type, Value) – таблица содержащая данные, полученные в процессе сессии передачи данных.

Столбцы:

Num – номер сессии, в процессе которой были переданы данные.

Type – вид параметра, данные измерения которого были переданы.

Value – значение данных для замеряемого параметра.

6. multiplier(unit, sensor, timestamp, ratio) – таблица содержащая калибровочные данные датчиков.

Столбцы:

unit – уникальный номер прибора на котором установлен калибруемый датчик.

sensor – наименование датчика, параметр, если он снимает несколько параметров, а так же номер датчика, если их несколько в одном приборе

timestamp – временная привязка данных калибровки

ratio – данные калибровки.

7. sensors_adr(id, unit_id, sensor, adr, timestamp, sensor_name, note) – таблица содержащая адреса датчиков.

Столбцы:

id – уникальный номер записи

unit_id – уникальный номер прибора на котором установлен датчик

sensor – полное название параметра передаваемого датчиком

adr – адрес датчика

timestamp – время внесения данных

sensor_name – короткое наименование параметра

note – заметка о датчике и его применение

Далее представлена структура базы данных и взаимосвязь таблиц на рисунке 1.

Рисунок 1.

SQL запрос, для загрузки в новую базу данных созданной структуры

SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; -- ---------------------------- -- Table structure for info -- ---------------------------- DROP TABLE IF EXISTS `info`; CREATE TABLE `info` ( `Num_i` INT(1) UNSIGNED NOT NULL AUTO_INCREMENT, `Date` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP, `Prib_id` tinyint(1) UNSIGNED NOT NULL, `OpNum` tinyint(1) UNSIGNED NOT NULL, `ObjectId` tinyint(1) UNSIGNED NOT NULL, `x` FLOAT(10, 5) NOT NULL, `y` FLOAT(10, 5) NOT NULL, PRIMARY KEY (`Num_i`) USING BTREE, UNIQUE INDEX `Number_id_index`(`Num_i`) USING BTREE, INDEX `date_index`(`Date`) USING BTREE, INDEX `Unit_index`(`Prib_id`) USING BTREE ) ENGINE = Aria CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Page; -- ---------------------------- -- Table structure for multiplier -- ---------------------------- DROP TABLE IF EXISTS `multiplier`; CREATE TABLE `multiplier` ( `unit` tinyint(1) NOT NULL, `sensor` VARCHAR(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, `timestamp` datetime(0) NOT NULL, `ratio` VARCHAR(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, `adr` VARCHAR(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, INDEX `Unit_index_multip`(`unit`) USING BTREE ) ENGINE = Aria CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Page; -- ---------------------------- -- Table structure for objects -- ---------------------------- DROP TABLE IF EXISTS `objects`; CREATE TABLE `objects` ( `NumOb` tinyint(1) UNSIGNED NOT NULL AUTO_INCREMENT, `NameOb` VARCHAR(35) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, PRIMARY KEY (`NumOb`) USING BTREE ) ENGINE = Aria CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Page; -- ---------------------------- -- Table structure for opr_list -- ---------------------------- DROP TABLE IF EXISTS `opr_list`; CREATE TABLE `opr_list` ( `N` tinyint(1) UNSIGNED NOT NULL AUTO_INCREMENT, `Name` VARCHAR(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, PRIMARY KEY (`N`) USING BTREE ) ENGINE = Aria CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Page; -- ---------------------------- -- Table structure for save_data -- ---------------------------- DROP TABLE IF EXISTS `save_data`; CREATE TABLE `save_data` ( `Num` INT(1) UNSIGNED NOT NULL, `Type` CHAR(25) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, `Value` CHAR(25) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, INDEX `Num_ses`(`Num`) USING BTREE, INDEX `Type_value_index`(`Type`, `Value`) USING BTREE ) ENGINE = Aria CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Page; -- ---------------------------- -- Table structure for sensors_adr -- ---------------------------- DROP TABLE IF EXISTS `sensors_adr`; CREATE TABLE `sensors_adr` ( `id` SMALLINT(1) UNSIGNED NOT NULL AUTO_INCREMENT, `unit_id` tinyint(1) UNSIGNED NOT NULL, `sensor` VARCHAR(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, `adr` VARCHAR(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, `timestamp` datetime(0) NOT NULL, `sensor_name` VARCHAR(25) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, `note` VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE ) ENGINE = Aria CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Page; -- ---------------------------- -- Table structure for units_list -- ---------------------------- DROP TABLE IF EXISTS `units_list`; CREATE TABLE `units_list` ( `uNum` tinyint(1) UNSIGNED NOT NULL AUTO_INCREMENT, `uName` VARCHAR(25) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, `Serial` VARCHAR(15) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, `AKey` VARCHAR(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, `OPid` tinyint(1) UNSIGNED NOT NULL, `x` FLOAT(10, 5) NOT NULL, `y` FLOAT(10, 5) NOT NULL, `IDob` tinyint(1) UNSIGNED NOT NULL, `remove` bit(1) NOT NULL, PRIMARY KEY (`uNum`) USING BTREE, UNIQUE INDEX `Units`(`uNum`, `uName`) USING BTREE ) ENGINE = Aria CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Page; SET FOREIGN_KEY_CHECKS = 1;