Короткий ответ для тех, кто настраивает кассовую программу: там указывается 51401 (у второй кассы — 51402 и далее). Остальные порты программе знать не нужно, они внутренние. Но когда что-то не работает, разбираться приходится во всей цепочке, а в ней шесть портов, и два из них отличаются одной цифрой.
Карта портов
| Порт | Кто его слушает | Зачем нужен |
|---|---|---|
| 51401 | Служба ESM: Control Module | Приём запросов на проверку кодов от кассовой программы. Именно этот порт указывается в настройках 1С и другого кассового ПО |
| 50401 | Она же | Служебный порт экземпляра. В кассовой программе не указывается |
| 4042 | Агент драйвера ККТ | По нему модуль опрашивает кассу: получает серийный номер, данные ФН, регистрирует коды в буфере |
| 4041 | gRPC-сервер драйвера ККТ | Связь с драйвером со стороны кассовой программы. Этот порт виден в 1С при проверке подключения оборудования |
| 51077 | Оркестратор ЕСМ | Управление экземплярами: добавление касс, список зарегистрированных ККТ |
| 5995 | Локальный модуль «Честный знак» | Офлайн-проверка кодов при обрыве связи с ГИС МТ |
dkkt — там будет 4042.Почему у второй кассы порты другие
Каждая касса на компьютере получает свой экземпляр службы Control Module — со своим серийным номером в имени и своей парой портов. Первая занимает 50401 и 51401, вторая — 50402 и 51402, и так далее. Порт агента драйвера при этом остаётся общим: он один на компьютер, и это иногда создаёт сложности, о них ниже.
Порядок добавления второй кассы разобран отдельно: несколько касс на одном ЕСМ.
Где эти порты задаются
Настройки экземпляра лежат в файле C:\ProgramData\ESP\ESM\um\config_<серийный номер ККТ>.yml — по файлу на кассу (в части сборок расширение .yaml). Интересуют две секции:
soft→httpsPort— тот самый порт для кассовой программы. Здесь его и меняют, если 51401 занят или нужно развести две кассы.dkkt→portиurl— как модуль достучится до драйвера ККТ. По умолчанию 4042 и 127.0.0.1.
Как проверить, что порт занят
Штатный способ на Windows — командная строка:
netstat -ano | findstr 51401— покажет, слушает ли кто-то порт, и выведет PID процесса в последней колонке.tasklist /FI "PID eq <номер>"— по этому PID покажет, что за программа его держит.
Типичная находка — оставленная открытой утилита тест-драйвера ККТ: пока она запущена с включённой галкой, порт кассы занят, и кассовая программа до ККТ не достучится. Это одна из самых частых причин ошибок вида «драйвер ККТ недоступен».
Что открывать в файрволе
Все перечисленные порты — локальные: обмен идёт внутри одного компьютера, наружу их публиковать не нужно и не следует. От файрвола и антивируса требуется другое — не блокировать локальные соединения и не мешать исходящим запросам модуля к серверам маркировки.
На практике достаточно добавить в исключения папку модуля и его службы. Если антивирус режет локальный обмен, симптом узнаваемый: проверка кода упирается в таймаут — ошибка 514.
Две кассы разных производителей на одном компьютере
Отдельный случай, на котором спотыкаются: порт агента драйвера изменить нельзя, он один — 4042. Когда на компьютере стоят кассы разных производителей, их драйверы претендуют на один и тот же порт, и второй экземпляр модуля не может опросить свою кассу.
Развязывается это через сетевой адрес: драйверы занимают порт по-разному — один на всех сетевых интерфейсах, другой только на 127.0.0.1, — и в секции dkkt одного из экземпляров вместо локального адреса указывают сетевой адрес самого компьютера. Порядок запуска драйверов при этом становится значимым, а регистрацию касс приходится делать по очереди.