Изменения

Перейти к навигации Перейти к поиску

Импорт данных по протоколу R1Sensor

14 036 байт добавлено, 21:54, 29 марта 2023
Запросы к весовому комплексу
=Дата изменения документации=
0611.0611.2019 2022 года.
=Общие сведения о протоколе=
{{Внимание|запрещается одновременно обновлять базу товаров в параллельных сессиях.}}
Допускается параллельное выполнение таких операций как копирование файлов или копирование считывание файлов.
Объект {{ProtocolCommand|data}} - в данном объекте передаются дополнительные данные, необходимые для выполнения запроса или команды. Так же в этом поле содержится информация о ПО которое сформировало запрос.
 
{{Внимание|Максимальный размер пакета принимаемый весами 1024000 байт! Рекомендуется использовать пакеты не более 16348 байт.}}
==Ответы от весового комплекса==
{{ProtocolCommand|system-up-time}} - время со старта системы;
 
 
 
"goods-count"
"groups-count"
"labels-count"
 
"error-code"
"error-state"
"error-text"
 
"lock-state"
"packing-mode"
"user-inactive-time"
"image-recognition-active"
"image-recognition-camera-error"
"price-checker-active"
"voice-control-active"
 
"licensed"
 
"current-algoritm"
 
"weight"
"weight-stability"
"weight-tare"
 
"scale-model"
"scale-version"
"scale-serial-number"
"scale-serial-number-ext"
 
"operation-system"
"cpu-model"
"cpu-serial-number"
"cpu-temperature"
"hostname"
"user-name"
 
"current-time-date"
"hardware-rtc-state"
"version-build"
 
"screen-resolution"
 
"last-import-datetime"
"last-import-status"
 
"eth-ip-address"
"eth-mac"
"wifi-ip-address"
"wifi-mac"
==Запуск ротации логов программы и архивов, создаваемых программой==
==Добавление, удаление и получение файлов и каталогов на/с весов==
Данные команды позволяют получать файлы с весов, удалять файлы на весах и передавать файлы на весы. Начальным путем точкой для поиска файлов является каталог программы.
Для работы с файлами, находящимся в подкаталогах, необходимо в имя файла включить путь до необходимого файла.
<source lang="json">
"command" : "AddFile"
"command" : "GetFile"
"command" : "GetFileInfo"
"command" : "RemoveFile"
"command" : "AddDir"
"command" : "PartDataSended"
</source>
 
Поля используемые при работе с файлами:
 
{{ProtocolCommand|file-name}} - имя файла
 
{{ProtocolCommand|file-size}} - размер файла
 
{{ProtocolCommand|file-data}} - данные файла. Кодируются в BASE-64.
 
{{ProtocolCommand|file-md5}} - контрольная сумма файла. Рассчитывается до кодировки данных в BASE-64.
 
{{ProtocolCommand|use-compress}} - использование компрессии данных в GZip.
 
{{ProtocolCommand|"MultiPart"}} - блочный режим передачи данных. Использование нескольких пакетов при приеме/передаче файлов.
 
{{ProtocolCommand|"part-data-no"}} - номер текущего пакета при блочном приеме/передаче файлов. Отсчет с 0.
 
{{ProtocolCommand|"total-parts"}} - общее количество пакетов при блочном приеме/передаче файлов.
 
Например: для получения файла-картинки имя файла должно быть таким {{ProtocolCommand|"file-name" : "./Data/Images/goods.no.picture.png"}}.
В объекте {{ProtocolCommand|data}} передается имя необходимого файла {{ProtocolCommand|file-name}}, а возвращается информация о файле: {{ProtocolCommand|file-name}} {{ProtocolCommand|file-size}} - размер файла в байтах, {{ProtocolCommand|file-data}} - данные файла файла или части файла, {{ProtocolCommand|file-md5}} - контрольная сумма блока данных в поле {{ProtocolCommand|file-data}} до кодирования в BASE-64 рассчитанная по алгоритму MD5.
В объекте {{ProtocolCommand|data}} передается имя необходимого каталога {{ProtocolCommand|dir-name}}.
При добавлении файла в объекте {{ProtocolCommand|data}} в поле {{ProtocolCommand|file-data}} передаются данные файла, а в поле {{ProtocolCommand|file-md5}} - контрольная сумма файла рассчитанная по алгоритму MD5до кодирования в BASE-64. При передаче файла частями {{ProtocolCommand|file-md5}} передается только в последнем пакете и содержит контрольную сумма всего файла. Данные могут быть предварительно запакованы архиватором GZip (отключается в настройках весов). Так же флаг использования компрессии можно предать в объекте {{ProtocolCommand|"data": "use-compress"}} : ''1'' или ''0'' или ''true''/''false''. При использовании блочной передачи файлов архиватором пакуется каждая часть отдельно. После паковки блока, данные кодируются в BASE-64. Пример передачи файла:
Данные могут быть предварительно запакованы архиватором GZip (отключается в настройках весов). Так же флаг использования компрессии можно предать в объекте {{ProtocolCommand|<source lang="json">--> "command" : "AddFile", "data": { "usefile-compressname"}} : ''1'' или ''0'' или ''true''"./Data/Images/''false''goods.no.picture.png",Далее "file-data" : "данные кодируются в BASE-64.файла", "file-md5" : "9caa7d76e8e08b56256594f39c13e7d8" } <-- "response" : "Ok", "response-code" : 0</source>
При передаче/запросе больших файлов можно использовать передачу файлов частями (получение файлов более 16384 байт с весов всегда выполняется по частям). При передаче по частям необходимо в первом пакете использовать команду {{ProtocolCommand|AddFile}} и в объект данных {{ProtocolCommand|data}} добавить поля {{ProtocolCommand|"total-parts" : ''xxx''}} и {{ProtocolCommand|"part-data-no" : 0}}.
"file-data" : "данные-файла",
"part-data-no" : 0,
"total-parts" : 5, "use-compress" : 1
}
<--
"response" : "MultiPartOk", "response-code" : 10,
"data" : {
"part-data-no" : 0,
"part-data-no" : 4,
"total-parts" : 5,
"use-compress" : 1, "file-md5" : "9caa7d76e8e08b56256594f39c13e7d8"
}
Данная команда позволяет полностью очистить базу товаров и групп перед загрузкой новых товаров и групп.
Данная '''Если данная команда должна быть передана передается после команды {{ProtocolCommand|BeginUpdate}}, то включается режим очистки данных при передаче товаров.'''
Если данная команда не передается, то включается режим обновления/добавления товаров.
Очистка данных производится только если добавляется хотя бы один товар.
 
'''Если данная команда передается отдельно от других команд, производится полная очистка базы товаров (удаляются все товары и группы).'''
Запрос:
{{Внимание2|Параметры {{ProtocolCommand|goods-picture-bytes}} и {{ProtocolCommand|group-picture-bytes}} являются устаревшими и не рекомендованы к использованию. Используете параметры передающие имена файлов-картинок и загружайте файлы картинок отдельно. Это позволяет более экономично использовать дисковое пространство и использовать будущие расширения протокола весов.}}
 
 
В версиях ПО старше '''1.0.2.22 сборка 4168''' добавлена возможность групповой передачи товаров. Для этого список товаров загружается в поле {{ProtocolCommand|goods-list}}.
{{ProtocolCommand|goods-name}} - название товара для печати на этикетке.
 
{{ProtocolCommand|goods-name-2}} - второе название товара для печати на этикетке.
{{ProtocolCommand|goods-full-name}} - название товара для вывода на экранную кнопку товара. Если данное поле не задано, значение берется из поля {{ProtocolCommand|goods-name}}.
 
{{ProtocolCommand|goods-full-name-2}} - второе название товара для вывода на экранную кнопку товара. Если данное поле не задано, значение берется из поля {{ProtocolCommand|goods-name-2}}.
{{ProtocolCommand|goods-price}} - цена товара. Можно передавать как строку: '''''"123.55"''''', можно как число: 123.55
{{ProtocolCommand|goods-barcode-struct}} - номер структуры штрих-кода товара для версии 1.0.2.21 и старше.
{{ProtocolCommand|goods-action}} - признак акционности (скидка) товара (используется для вывода на кнопке товара специальной картинки).
{{ProtocolCommand|goods-is-popular}} - признак популярности товара (используется для вывода этих товаров в отдельное поле на форме выбора товаров).
{{ProtocolCommand|goods-tare}} - вес тары товара.
{{ProtocolCommand|goods-message-x}}               - текстовые сообщения для печати на этикетке, где х от 1 до 4номер строки текстового сообщения. Расширенные сообщения (номера с 6 и выше) введены начиная с сборки 4121.   // "goods-message-1 " - текстовое сообщение. // "goods-message-2 " - ингредиенты. // "goods-message-3 " - страна происхождения. // "goods-message-4 " - реклама. // "goods-message-5" - данные для второго ШК // "goods-message-6" - пищевая ценность / энергетическая ценность // "goods-message-7" - условия хранения // "goods-message-8" - изготовлено // "goods-message-9" - срок годности // "goods-message-10" - изготовитель // "goods-message-11" - картинка для этикетки 
*В поле {{ProtocolCommand|goods-picture-filename}} и {{ProtocolCommand|goods-second-picture-filename}} передается имя файла картинки для товара или группы. Указанный файл должен присутствовать в каталоге {{Путь к файлу|./Data/PicturesImages/}}. Можно располагать файлы в подкаталогах.
*Данные могут быть предварительно запакованы архиватором GZip (отключается в настройках весов). Так же флаг использования компрессии можно предать в объекте {{ProtocolCommand|data: use-compress}} : 1 или 0.
|-
| '''99...119''' || EAN13 || Пользовательские штрихкоды || Тип ШК задается в структуре пользовательского кода начиная с версии 1.0.2.21
|-
| '''200''' || || Пользовательский штрихкод, индивидуальный для каждого товара || Тип ШК задается в данных каждого товара индивидуально с версии 1.0.2.23
|}
{{ProtocolCommand|store-name-4}} - название магазина строка 4
 
==Настройки весов==
Данные команды служат для получения списка настроек весов, а так же получения или изменения самих значений настроек на весах.
 
 
При передаче данных команд необходимо передавать пароль для изменения настроек (этот пароль используется так же для входа в режим настроек на весах).
 
При передаче пароля рекомендуется передавать MD5 сумму пароля в поле {{ProtocolCommand|password}} и значение {{ProtocolCommand|"crypted-password": true}}.
 
Если пароль передается в открытом виде, что не рекомендуется по соображениям безопасности, то нужно передать значение {{ProtocolCommand|"crypted-password": false}}.
 
=== Получение списка настроек ===
 
Команда для получения настроек с весов {{ProtocolCommand|GetSettingsList}}:
 
<source lang="json">
{
"id": 4,
"command": "GetSettingsList",
"data": {
"application": "PyR1SensorDriver",
"version": "0.0.1.0",
"version-build": "1",
"compile-date": "26.07.2022",
"password": "11b9842e0a271ff252c1903e7132cd68",
"crypted-password": true,
}
}
</source>
 
Ответ:
 
<source lang="json">
{
"id": 4,
"response": "Ok",
"response-code": 0
"data": {
"application": "R1 Sensor.",
"compile-date": "26-07-2022",
"version": "1.0.2.22",
"version-build": 4153,
 
"settings-read-list": [{"settings-name": "enDebug", "settings-type": 1, "settings-type-name": "bool", "settings-value": true}, {"settings-name": "enLog", "settings-type": 1, "settings-type-name": "bool", "settings-value": true}],
"settings-write-list": [{"settings-name": "enDebug", "settings-type": 1, "settings-type-name": "bool", "settings-value": true}, {"settings-name": "enLog", "settings-type": 1, "settings-type-name": "bool", "settings-value": true}]
}
}</source>
 
Возвращаемые значения:
{{ProtocolCommand|settings-read-list}} - Список настроек доступных для чтения.
{{ProtocolCommand|settings-write-list}} - Список настроек доступных для изменения.
 
В списках возвращается перечень настроек со следующими параметрами:
{{ProtocolCommand|settings-name}} - название настройки. Используется для чтения и изменения.
{{ProtocolCommand|settings-type}} - числовое представление типа значения настройки.
{{ProtocolCommand|settings-type-name}} - название типа значения настройки.
{{ProtocolCommand|settings-value}} - текущее значение настройки.
 
 
=== Получение значения настроек ===
 
В поле {{ProtocolCommand|settings-name}} передается название необходимого параметра настроек, а поле {{ProtocolCommand|settings-valuе}} само значение.
 
Команда для получения значений настроек с весов {{ProtocolCommand|GetSettings}}:
 
<source lang="json">
{
"id": 4,
"command": "GetSettings",
"data": {
"application": "PyR1SensorDriver",
"version": "0.0.1.0",
"version-build": "1",
"compile-date": "26.07.2022",
"password": "11b9842e0a271ff252c1903e7132cd68",
"crypted-password": true,
"settings-name": "enImageRecognition"
}
}
 
</source>
 
Ответ:
 
<source lang="json">
{
"id": 4,
"response": "Ok",
"response-code": 0
"data": {
"application": "R1 Sensor.",
"compile-date": "26-07-2022",
"version": "1.0.2.22",
"version-build": 4153
 
"settings-name": "enImageRecognition",
"settings-value": false,
}
}</source>
 
Для получения нескольких настроек одновременно можно при передаче использовать список c названиями настроек.
Для этого необходимо записать имена настроек в список {{ProtocolCommand|items-list}}.
 
Значения так же возвращаются в списке {{ProtocolCommand|items-list}}.
 
<source lang="json">
{
"id": 18,
"command": "GetSettings",
"data": {
"application": "PyR1SensorDriver",
"version": "0.0.1.0",
"version-build": "1",
"compile-date": "26.07.2022",
"password": "11b9842e0a271ff252c1903e7132cd68",
"crypted-password": true,
"items-list": [{"settings-name": "enImageRecognition"}, {"settings-name": "enDebug"}]
}
}
</source>
 
Ответ:
 
<source lang="json">
{
"id": 18,
"response": "Ok",
"response-code": 0
"data": {
"application": "R1 Sensor.",
"compile-date": "26-07-2022",
"version": "1.0.2.22",
"version-build": 4153,
"items-list": [{"settings-name": "enImageRecognition", "settings-value": "true"}, {"settings-name": "enDebug", "settings-value": "true"}]
},
}
</source>
 
 
=== Изменение значения настроек ===
 
Команда для изменения настроек на весах: {{ProtocolCommand|SetSettings}}
 
При изменении настроек используется тоже имя настройки, что и при получении значения настройки.
 
В поле {{ProtocolCommand|settings-name}} передается название необходимого параметра настроек, а поле {{ProtocolCommand|settings-valuе}} само значение.
 
<source lang="json">
{
"id": 18,
"command": "SetSettings",
"data": {
"application": "PyR1SensorDriver",
"version": "0.0.1.0",
"version-build": "1",
"compile-date": "26.07.2022",
"password": "11b9842e0a271ff252c1903e7132cd68",
"crypted-password": true,
"settings-name": "enImageRecognition",
"settings-value": "true"
}
}
</source>
 
 
Ответ:
 
<source lang="json">
{
"id": 18,
"response": "Ok",
"response-code": 0
"data": {
"application": "R1 Sensor.",
"compile-date": "26-07-2022",
"version": "1.0.2.22",
"version-build": 4153
},
}
</source>
 
 
Для изменения нескольких настроек одновременно можно при передаче использовать список.
Для этого необходимо записать настройки в список {{ProtocolCommand|items-list}}
 
<source lang="json">
{
"id": 18,
"command": "SetSettings",
"data": {
"application": "PyR1SensorDriver",
"version": "0.0.1.0",
"version-build": "1",
"compile-date": "26.07.2022",
"password": "11b9842e0a271ff252c1903e7132cd68",
"crypted-password": true,
"items-list": [{"settings-name": "enImageRecognition", "settings-value": "true"}, {"settings-name": "enDebug", "settings-value": "true"}]
}
}</source>
 
В ответе на данную команду присутствует список со статусами изменения каждой из переданных настроек:
 
<source lang="json">
{
"id": 18,
"response": "Ok",
"response-code": 0
"data": {
"application": "R1 Sensor.",
"compile-date": "26-07-2022",
"version": "1.0.2.22",
"version-build": 4153
"items-list": [{"enImageRecognition": True}, {"enDebug": True}]
}
}
</source>
 
==Перезапуск системы распознавания товаров==
 
Данная команда служат для перезапуска системы распознавания товаров после изменения настроек системы.
 
 
При передаче данной команды необходимо передавать пароль для изменения настроек (этот пароль используется так же для входа в режим настроек на весах).
 
 
При передаче пароля рекомендуется передавать MD5 сумму пароля в поле {{ProtocolCommand|password}} и значение {{ProtocolCommand|"crypted-password": true}}.
 
Если пароль передается в открытом виде, что не рекомендуется по соображениям безопасности, то нужно передать значение {{ProtocolCommand|"crypted-password": false}}.
 
 
<source lang="json">
{
"id": 6,
"command": "RestartImageRecognitionSystem",
"data": {
"application": "PyR1SensorDriver",
"version": "0.0.1.0",
"version-build": "1",
"compile-date": "26.07.2022",
"password": "11b9842e0a271ff252c1903e7132cd68",
"crypted-password": true
}
}
</source>
 
Ответ:
 
<source lang="json">
{
"id": 6,
"response": "Ok",
"response-code": 0
"data": {
"application": "R1 Sensor.",
"compile-date": "26-07-2022",
"version": "1.0.2.22",
"version-build": 4153
},
}
</source>
=Перечень ошибок=

Навигация