Контроль веса на каждой кассе может работать автономно. Обмен данными позволяет существенно ускорить автоматическое обучение и синхронизировать ручные изменения для отдельных товаров на всех кассах.
За обмен отвечает модуль контроля веса 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.
Реализовать обмен между клиентом и сервером можно несколькими способами:
- Отдельный сервер для нескольких магазинов: один SCO сервер, к которому будут подключаться все кассы со всех магазинов торговой сети.
- Один главный сервер и несколько промежуточных: отдельный сервер можно установить на магазин, несколько магазинов, на регион и т. д. При этом период обмена между кассами и промежуточным сервером можно сделать чаще, а между промежуточными и главным реже. Количество промежуточных серверов между кассой и главным сервером не ограничено.
- Одна из касс выполняет роль сервера: можно использовать одну из касс, если нет возможности выделить отдельный сервер. Недостаток данного способа в том, что обмен не будет работать, пока эта касса будет выключена.
Для клиента нельзя указать в роли сервера ту же кассу. В такой ситуации клиент не будет запущен и для него в будет установлен статус "Неверно настроен".
Настройка
Данные настройки используются как на кассах, так и на SCO сервере.
Наименование | Возможные значения | Описание |
---|---|---|
Файл /opt/sst-sco/conf/weightcontrol.ini , секция [WeightControl] , настройки модуля контроля веса | ||
enable |
| Включить модуль контроля веса |
listenAddress | <хост>:<порт> по умолчанию не задано | Прослушиваемый адрес. Если установлен, текущая касса или сервер становится сервером обмена данными. К нему подключаются другие клиенты (кассы, промежуточные сервера). Как правило, устанавливается в 0.0.0.0:3201. 0.0.0.0 означает что подключение к серверу возможно через все сетевые интерфейсы. |
serverAddress | <хост>:<порт> по умолчанию не задано | Адрес сервера. К нему подключается текущая касса или сервер для обмена данными |
exchangeInterval | целое число по умолчанию 30 | Период обмена данными между клиентом и сервером в минутах. Указывается для клиента |
Пример настройки на кассе
Для подключения кассы к серверу необходимо указать адрес сервера.
[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
на хосте.