АТОЛ, Linux и UEM: Как я просрал выходные, или Сказ о криворуких разработчиках
Всем привет. Пост-предостережение для админов, 1С-ников и всех, кто имеет несчастье работать с кассами АТОЛ под Линуксом.
Ситуация классическая: конец года, на носу повышение НДС до 22% (будь оно неладно), и в связи с этим АТОЛ выкатывает "жизненно важное" обновление драйверов — версию 10.10.8.0. Казалось бы, накати апдейт и живи спокойно. Но это же АТОЛ. Спокойно здесь не бывает.
Акт первый: Новая служба, старые проблемы
Главной фишкой этого драйвера стала отдельная служба uema. Теперь это обязательный костыль: без запущенной службы uema касса превращается в тыкву и работать отказывается.
Дано:
ОС: Linux (Debian)
Софт: 1С + самописная прослойка на Python
Задача: Обновиться, чтобы всё работало.
Качаем deb-пакеты, устанавливаем. Служба uema вроде бы стартует, но касса не работает. Лезем в логи — служба тупо не может подключиться к MQTT-серверу АТОЛа.
Тут спасибо Дмитрию Бачило и его ролику (https://youtu.be/5t0QBE24h58). Оказалось, что гении разработки из АТОЛ просто положили кривой конфиг в дистрибутив под Linux. Дефолтный конфиг — мусор.
Чтобы эта дрянь начала работать, конфиг (/etc/uem/agent/config.yml ) должен выглядеть так: ( жирным выделены изменения )
storage:
file: /etc/uem/agent/storage.db
uema_port: 5050
uemu_port: 5051
info:
modified: 2026-01-06T10:08:23+04:00
uemconfig:
uem_host: mqtt://plt-002.atol.ru
uem_port: 1883
uem_reg_host: https://entry-plt-002.atol.ru
logconfig:
file: /var/log/uem/agent/uema.log
log_level: debug
log_depth_in_days: 50
log_depth_in_mb: 30
monitoringconfig:
static_data_timeout_in_sec: 86400
dynamic_data_timeout_in_sec: 1200
Казалось бы, пофиксили конфиг, служба завелась, коннект есть. Можно выдохнуть? Хрен там плавал.
Акт второй: Танцы с бубном
Самое веселье началось при попытке подружить наш софт с этим чудом.
Запускаем наш Python-скрипт — ошибка драйвера: "Сервер UEMA не запущен" (или что-то в этом духе).
Я проверяю порты: netstat -tulpn | grep 5050. Служба висит! Порт доступен для подключения! Сервер работает и прекрасно себя чувствует.
Но драйвер (библиотека .so, которую использует софт) его в упор не видит.
Я перепробовал всё. Я пытался скармливать параметры подключения в коде. Я перерыл документацию (которой, по сути, нет). Я плясал с бубном вокруг прав доступа.
Запускаю официальную ГУИшную утилиту "Тест драйвера ККТ" от самого АТОЛа. Думаете, она работает? НЕТ! Даже родной софт матерится, что сервер UEMA не запущен.
В этот момент хотелось просто взять кувалду и разнести эту сраную кассу в щепки. Серьезно, сколько часов жизни можно тратить на гавно что бы его заставить работать.
Финал:
Разгадка оказалась настолько тупой и неочевидной, что у меня глаз задергался.
Оказывается, чтобы драйвер под Linux вообще догадался, куда ему стучаться (хотя порт 5050 — это, блин, дефолт!), нужно создать секретный файлик.
Создаем файл: ~/.atol/drivers10/uem.env
Пишем туда одну строку:
ATOL_UEMA_ADDRESS=127.0.0.1:5050
И всё.
Всё, б****! Оно заработало.
Эпилог
Уважаемые (нет) программисты АТОЛ. Вы вообще тестируете свой софт перед релизом? Или у вас "на винде запустилось — и ладно"? Почему пользователь должен искать решение по ютубам и методом тыка создавать environment-файлы, о которых ни слова в мануале? Вы выкатываете критическое обновление перед налоговыми изменениями и подсовываете нам нерабочий кусок кода с битыми конфигами.
Горите в аду со своим uema..








