Контроль веса на каждой кассе может работать автономно. Обмен данными позволяет существенно ускорить автоматическое обучение и синхронизировать ручные изменения для отдельных товаров на всех кассах.

За обмен отвечает модуль контроля веса WeightControl. В нем реализован и клиент, и сервер обмена данными, которые могут быть включены одновременно. Любая касса может выступать в качестве как клиента, так и сервера для других клиентов. Также может быть использован SCO сервер, установленный в docker-контейнер, который аналогично может выполнять функции обмена.

Процесс и виды обмена

При старте кассы и в процессе работы обмен выполняется в фоновом режиме.

Обмен инициируется со стороны клиента с заданным в настройках периодом. В процессе обмена клиент передает серверу и запрашивает от него все измененные данные, начиная со времени предыдущего обмена.
На кассе можно инициировать полный обмен вручную по кнопке "Начать обмен" (команда WEIGHTCONTROL_CLIENTEXCHANGE) в меню "Статус обмена данными для обучения" (WEIGHTCONTROL_EXCHANGESTATUS).
Для выполнения инкрементального обмена по кнопке "Начать обмен" необходимо задать настройку в конфигурационном файле /opt/sst-sco/conf/weightcontrol.ini:

[WeightControl.ExchangeStatusForm.exchangeButton]
full = false

Данные, связанные с контролем веса и обменом, хранятся в базе данных /opt/sst-sco/data/weightcontrol/weightcontrol.sqlite. Логи работы клиента и сервера можно посмотреть в директории /opt/sst-sco/logs/ в файлах weightcontrolclient.log и weightcontrolserver.log. По умолчанию для обмена используется TCP порт 3201.

Реализовать обмен между клиентом и сервером можно несколькими способами:

  1. Отдельный сервер для нескольких магазинов: один SCO сервер, к которому будут подключаться все кассы со всех магазинов торговой сети.
  2. Один главный сервер и несколько промежуточных: отдельный сервер можно установить на магазин, несколько магазинов, на регион и т. д. При этом период обмена между кассами и промежуточным сервером можно сделать чаще, а между промежуточными и главным реже. Количество промежуточных серверов между кассой и главным сервером не ограничено.
  3. Одна из касс выполняет роль сервера: можно использовать одну из касс, если нет возможности выделить отдельный сервер. Недостаток данного способа в том, что обмен не будет работать, пока эта касса будет выключена.

Для клиента нельзя указать в роли сервера ту же кассу. В такой ситуации клиент не будет запущен и для него в будет установлен статус "Неверно настроен".

Настройка

Данные настройки используются как на кассах, так и на SCO сервере.

Наименование

Возможные значения

Описание

Файл /opt/sst-sco/conf/weightcontrol.ini, секция [WeightControl], настройки модуля контроля веса
enable
  • true
  • false (по умолчанию)

Включить модуль контроля веса

listenAddress<хост>:<порт>
по умолчанию не задано
Прослушиваемый адрес. Если установлен, текущая касса или сервер становится сервером обмена данными. К нему подключаются другие клиенты (кассы, промежуточные сервера).
Как правило, устанавливается в 0.0.0.0:3201. 0.0.0.0 означает что подключение к серверу возможно через все сетевые интерфейсы.
serverAddress<хост>:<порт>
по умолчанию не задано
Адрес сервера. К нему подключается текущая касса или сервер для обмена данными
exchangeIntervalцелое число
по умолчанию 30
Период обмена данными между клиентом и сервером в минутах. Указывается для клиента

Пример настройки на кассе

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

/opt/sst-sco/conf/weightcontrol.ini
[WeightControl]
enable = true
serverAddress = <ip-адрес сервера>:3201

Если касса выступает в роли сервера, тогда надо указать listenAddress

Касса в роли сервера
[WeightControl]
enable = true
listenAddress = 0.0.0.0:3201

Сервер контрольных весов

Сервер контрольных весов может быть установлен на отдельный сервер в docker-контейнер.

Архив с сервером необходимо запросить у тех. поддержки

Установка

Для Ubuntu 16.04 и выше

Если на хостовой машине не установлен docker, его необходимо установить:

sudo apt update
sudo apt install docker.io

Выполнить скрипт установки:

sudo ./docker/weightcontrol/install.sh

При выполнении будет выведен лицензионный ключ, для которого необходимо получить файл лицензии. Файл лицензии надо скопировать в каталог /opt/sst-sco/weightcontrol-server/license на хосте, затем перезапустить контейнер:

sudo docker restart sst-sco-server-weightcontrol

Проверить статус лицензии можно при помощи скрипта из архива:

sudo ./docker/weightcontrol/license.sh

Обновление с версии 1.13 и выше

Надо выполнить скрипт:

sudo ./docker/weightcontrol/install.sh

При обновлении автоматически создается бэкап и сохраняется в /opt/sst-sco/backup на хостовой машине.

Обновление с версии 1.12 и ниже

Если данные не были примонтированы на хосте, то надо сделать бэкап данных в каталоге /opt/sst-sco/data внутри контейнера.
Скопировать данные старого контейнера из /opt/sst-sco/data в каталог /opt/sst-sco/weightcontrol-server/data на хосте.
Затем остановить и удалить старый контейнер.

sudo docker stop sst-sco-server
sudo docker rm sst-sco-server

Далее установить новую версию, как описано выше в пункте "Установка".

Работа с контейнером

# Остановка контейнера
sudo docker stop sst-sco-server-weightcontrol

# Старт остановленного контейнера
sudo docker start sst-sco-server-weightcontrol

# Перезапуск контейнера
sudo docker restart sst-sco-server-weightcontrol

# Запуск mc в контейнере
sudo docker exec -it sst-sco-server-weightcontrol mc

# Удаление остановленного контейнера
sudo docker rm sst-sco-server-weightcontrol

Изменение настроек

Настройки находятся на хостовой машине в каталоге /opt/sst-sco/weightcontrol-server/conf.

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

sudo docker restart sst-sco-server-weightcontrol

Логирование

Логи пишутся в каталог /opt/sst-sco/weightcontrol-server/logs на хосте.

  • No labels