Кран наливает только по разрешению 1С

BRWR запирает краны пивного магазина. Клапан открывается, когда учётная система разрешила налив, и закрывается сам на заказанном объёме. Каждый миллилитр посчитан, пролив виден сразу.

Журнал

  1. 14:32:10кран 06пролив 40 мл · мимо системы
  2. 14:31:52кран 03налито 498 из 500 мл · продажа
  3. 14:29:47кран 01налито 1002 из 1000 мл · продажа
Краны и журнал на экране магазина: второй наливает, четвёртый открыт и ждёт продавца, пятый промывается, а пролив на шестом записан в журнал.

Замок на каждом кране

BRWR для пивных магазинов и сетей: клапаны и контроллеры на линиях кранов и сервер на компьютере магазина, который связан с 1С.

Замок

Перед каждым краном на линии стоит клапан. Он закрыт, пока учётная система магазина не разрешит налив. Без разрешения кран не нальёт ни капли.

Закрывается сам

Контроллер считает объём по расходомеру и закрывает клапан на заказанном объёме. Если струя остановилась или вышло время, клапан тоже закроется.

Учёт пролива

Поток при закрытом клапане не останется незамеченным. Это протечка или налив в обход системы, и он попадает в журнал с краном и временем.

Железо и программа

Контроллеры стоят на одной линии RS-485 до компьютера магазина. На нём работает сервер BRWR: дашборд, стойка кранов с наливами вживую, журнал и HTTP API для 1С.

Как идёт налив

Для продавца почти ничего не меняется: он пробивает продажу и наливает. Разница в том, что кран без продажи не откроется.

  1. 1

    Продажа в 1С

    Продавец пробивает сорт и объём, как обычную продажу.

  2. 2

    1С разрешает

    Учётная система проверяет срок годности кеги и остаток. Если всё в порядке, она даёт BRWR разрешение на налив.

  3. 3

    Кран открыт

    Клапан на линии крана открывается, продавец наливает как обычно.

  4. 4

    Клапан закрывается сам

    На заказанном объёме контроллер закрывает клапан, а 1С получает итог налива в миллилитрах.

Что получает магазин

Только свежее пиво

Срок годности кеги проверяется на каждом наливе. Просроченную кегу 1С наливать не даст.

Каждый миллилитр посчитан

Каждый налив записан с объёмом по расходомеру и привязан к своей продаже в 1С. Налить больше, чем пробито, не выйдет: клапан закроется.

Пролив на виду

Протечка и налив в обход системы видны в журнале с краном и временем, а не в недостаче в конце месяца.

Для специалиста 1С

1С говорит с сервером BRWR в магазине по HTTP: JSON в обе стороны, токен магазина в заголовке Authorization. Полное описание в формате OpenAPI отдаёт сам сервер.

  • GET/api/tapsКраны магазина и что с каждым сейчас.
  • POST/api/poursРазрешить налив: кран, объём и номер налива.
  • GET/api/pours/{job_id}?wait=30Дождаться итога: сколько налито и чем налив кончился.
  • POST/api/pours/{job_id}/abortЗакрыть кран сейчас, если покупатель передумал.
  • GET/api/events?after=0События: наливы, протечки, пропажа связи с контроллером.

Номер налива job_id придумывает 1С. Запрос с тем же номером не нальёт второй раз, так что после обрыва связи его можно просто повторить.

События читаются с последнего номера, который 1С уже видела: так она узнаёт о протечках и о кране, с которым пропала связь.

1С разрешает налив 500 мл на четвёртом кране
POST /api/pours
Authorization: Bearer <токен магазина>
Content-Type: application/json

{
    "job_id": "3f2c8a1e-5b7d-4e0a-9c61-0d4b2e7f8a90",
    "tap": "4",
    "ml": 500
}
Потом ждёт итога
GET /api/pours/3f2c8a1e-5b7d-4e0a-9c61-0d4b2e7f8a90?wait=30

{
    "job_id": "3f2c8a1e-5b7d-4e0a-9c61-0d4b2e7f8a90",
    "tap": "4",
    "state": "done",
    "ml_target": 500,
    "ml_poured": 498,
    ...
}

Поставить BRWR в магазин

Напишите, сколько у вас магазинов и кранов и какая у вас 1С. Расскажем, что понадобится, и покажем систему в работе.