Мастер привязки ячеек
Мастер — это способ заполнить карту ячеек так, чтобы каждая стро ка была доказана, а не записана со слов. Работают вдвоём или в одиночку, но обязательно у открытого шкафа: часть шагов делается руками.
Он написан и покрыт тестами. Ниже — смысл шагов, а не подписи кнопок: названия на экране могут отличаться. Порядок придуман не из удобства, а из того, что умеет и чего не умеет плата.
Привязка карты — самый долгий шаг дня установки, и в общем порядке установки она стоит
после регистрации терминала. Полный распорядок дня — COMMISSIONING.md в репозитории
проекта.
🔴 Мастер живёт в панели, а панель из сети постамата не открывается — намеренно, с чего начать, врезка «Почему адресов несколько». Обряд делается у шкафа, то есть ровно там, где местный Wi-Fi панель не отдаст. Свой канал связи (мобильный интернет) — такая же часть сборов, как отвёртка: без него до мастера не добраться, а понятно это станет уже на объекте.
⚠️ И вторая часть сборов — учётная запись с правом device.enroll. Раздел «Привязка
каналов» администраторский; у роли «оператор» его нет ни в меню, ни по прямому адресу
(панель отвечает «Раздел недоступен»). Ехать на установку с дежурной учёткой — значит
приехать и не начать.
Идея в одном абзаце
Программа шлёт команду «открыть» на очередное гнездо и ждёт. Техник у шкафа видит, какая дверца щёлкнула, закрывает её рукой, и система видит переход «открыто → закрыто». Этот переход и есть доказательство: так может ответить только гнездо, к которому подключён живой замок с работающим датчиком. Пустое гнездо и оборванный провод такого перехода дать не могут.
Порядок действий
- Откройте шкаф и держите доступ к дверцам. Все дверцы в начале должны быть закрыты — так виден каждый щелчок.
- В панели выберите шкаф, скажите, сколько у него дверец, и начните привязку. Мастер идёт не по всем гнёздам платы, а по обходу — короткому списку каналов; как он собирается, разобрано во врезке «Сколько дверец у шкафа» ниже. Пропущенные гнёзда можно вернуть в конце. ⛔ Здесь стояло: «Мастер идёт по гнёздам по очереди: CH01, CH02, …» — с 7 сентября это неверно, и разница в полчаса вашего времени у открытого корпуса. На новом шкафу мастер сперва предложит завести черновую карту — см. врезку ниже. Без неё шкафу нечего открывать.
- Мастер шлёт «открыть» на текущее гнездо. Слушайте щелчок и смотрите, какая дверца отошла.
- Если дверца открылась — назовите её. Введите номер, который написан на этой дверце снаружи (или наклейте номер, если его ещё нет). Это и есть привязка «ячейка ↔ гнездо».
- Закройте дверцу рукой. Дожмите до щелчка. Мастер должен показать, что увидел закрытие, — вот это и есть подтвер ждение.
- Мастер записывает строку карты и переходит к следующему гнезду.
- В конце — выборочная проверка. Откройте три-четыре ячейки по номерам из панели и убедитесь, что открылись именно они. Особенно проверьте соседние номера: перепутанные местами ячейки — самая незаметная и самая неприятная ошибка.
Подтверждение канала снимается на конкретном железе: щёлкал замок этого шкафа, его дверцу закрывали рукой. Поэтому сеанс привязки принадлежит одному шкафу целиком.
Что делает панель, если шкаф в списке наверху переключить посреди обряда (6 сентября):
- обряд останавливается, черновик прежнего шкафа с экрана убирается — иначе таблица читалась бы как «вот что я сейчас запишу в выбранный шкаф», а это подтверждения, снятые на другом железе. Именно так карта и уезжала не туда;
- на экране остаётся красная строка, которая не гаснет сама — её надо убрать нажатием «Я прочитал, скрыть». Всплывающая плашка тут не годится: техник смотрит не в экран, а на дверцу, которую только что открыл;
- в строке сказано, что известно про дверцу, и текстов три разных, а не один: дверца была открыта в момент обрыва — закройте рукой; команда открытия принята сервером — дверца ещё может открыться, шкаф забирает команды примерно раз в минуту, проверьте её; ответа не дождались — открылась она или нет, не известно;
- код второго фактора снимается: сервисный ключ выдаётся отдельно на каждый шкаф;
- доведённый до конца обряд в другой шкаф не переезжает — про это панель тоже пишет отдельно. Начинать надо заново, стоя у того шкафа, который выбран.
⚠️ И перед самой записью карты экран называет шкаф словами: «Карта поедет в шкаф «имя»». Сверьте название с корпусом, у к оторого стоите. Все остальные заслоны здесь программные, и человек их не видит; эта строка — единственное место, где ошибку «пишу не в тот шкаф» может поймать сам техник. Цена промаха обычная для карты: работающий шкаф перестаёт выдавать ячейки, и на его дверцах чужие номера.
⚠️ Кнопка «Открыть канал CH…» гаснет не молча: прямо под ней написано, чего не хватает — «Обряд сейчас не начать: …» (не выбран шкаф; карта выбранного ещё не пришла; сеанс собран на другом шкафу; не введён код подтверждения). Серой кнопки без причины здесь больше нет.
Шкаф открывает только те ячейки, которые есть в его карте, и сверяет гнездо с ней. Сделано это ради безопасности: если карта в панели и карта в шкафу разойдутся, клиенту откроется чужая дверца. Команды «открой гнездо номер семь, что бы на нём ни висело» у шкафа нет вовсе.
Поэтому на шкафу, где карты ещё нет, открывать нечего. Мастер предлагает завести черновую карту — заготовки на все гнёзда. Они создаются выведенными из оборота: клиенту такая ячейка не достанется, показываться свободной не будет, и открыть её умеет только сам мастер. Это важно: шкаф, на котором привязку бросили на середине, не превращается в набор обещаний.
После записи черновой карты подождите, пока шкаф её заберёт — обычно около минуты. Пока не забрал, мастер честно скажет: «карта до постамата не доехала». Это сообщение не про гнездо и не про провода — просто связь ещё не случилась. Повторите через минуту.
⚠️ «Около минуты» — это такт по умолчанию, а такт у каждого шкафа свой и правится в «Настройках» этого шкафа (на пилоте его меняли). Если ждать приходится заметно дольше минуты — посмотрите такт, а не провода.
Плата держит 27 каналов, а замков на шкафу бывает четыре. Раньше мастер вёл техника по всем двадцати семи: на канале без замка он честно ждёт пятнадцать секунд и честно отвечает «доказать нечем» — двадцать три правдивых ответа подряд, около получаса у открытого корпуса. Конца у обхода при этом не было названо вовсе: техник узнавал, что работа сделана, только обойдя всё «на всякий случай».
С 7 сентября обход сужается, и собирается он из двух источников:
- что уже сказала плата. Каналы, с которых когда-либо приходило «закрыто» (
0x11), — это доказательство того же сорта, ради которого написан весь обряд: несуществующий датчик так ответить не может. На поработавшем шкафу спрашивать вообще нечего, обход собирается сам; - поле «Дверец у шкафа» — сколько дверец вы насчитали на том корпусе, у которого стоите. Нужно там, где плату ещё никто не опрашивал: доказанных каналов нет, взять раскладку неоткуда. И второе его дело — сказать, когда обход закончен: без числа конца у обхода нет.
Экран называет вслух, откуда взялся список, и считает: «подтверждено каналов: 2 из 4», а в конце — «Обход закончен». ⚠️ Слова «в этом сеансе» там несущие: дверцы, привязанные в прошлый выезд, в этот счёт не входят, и «шкаф готов» строка не обещает.
🔴 Короткий обход — не запрет и не список всех дверец шкафа. Отсутствие замка доказать невозможно, поэтому канал, которого в обходе нет, означает «не доказан», а не «пусто». Если дверца не нашлась — включите «Перебрать все 27 каналов платы»: те самые полчаса, но иначе шкаф с неизвестной раскладкой не завести. Выбранный руками канал из списка не исчезает никогда, он просто подписан «вне обхода».
⚠️ Догадка названа догадкой. Когда плата не сказала ничего, «дверец 4» превращается в первые четыре номера — а номера каналов не обязаны идти подряд: на нашем пилотном шкафу четыре замка стоят на CH02, CH03, CH04 и CH26. Поэтому кнопка ведёт к следующему каналу обхода, а не к «текущему плюс один».
⚠️ Число живёт вместе со шкафом, у которого вы его сняли. Переключили список наверху — чужая четвёрка на двенадцатидверный шкаф не переедет. Иначе обход прошёл бы по первым четырём каналам и бодро доложил «найдено 4 из 4», а восемь настоящих дверец остались бы незаведёнными.
Открытие само по себе не доказывает ничего: пустое гнездо тоже показывает «открыто», всегда и без всяких команд. Доказательством служит именно закрытие после открытия — момент, когда датчик впервые сказал «нажат».
Если после команды ничего не произошло
Три причины, в порядке убывания вероятности.
| Что видно | Скорее всего | Что делать |
|---|---|---|
| мастер пишет «карта до постамата не доехала» | шкаф ещё не забрал карту — связь случается раз в такт этого шкафа | подождите такт и повторите; про гнездо это не говорит ничего |
| щелчка нет, ни одна дверца не отошла | к этому гнезду ничего не подключено | оставьте гнездо непривязанным и идите дальше |
| щелчок есть, дверца отошла, но система не увидела закрытие | замок работает, а датчик — нет: провод датчика не подключён или оборван | запишите номер гнезда, ячейку не привязывайте, передайте на ремонт |
| щелчок есть, но открылась не та дверца, что ожидали | провода на плате перепутаны при сборке | это нормально: просто назовите ту дверцу, которая реально открылась |
Третий случай — не ошибка, а обычное дело. Карта затем и нужна, чтобы связать «как подключили» с «как написано на дверце».
⚠️ Обратите внимание на формулировку: неудачная привязка называется «не доказано», а не «замка нет». Это не придирка к словам — отсутствие замка доказать невозможно в принципе, и вот почему.
Чего делать не надо
- Не нажимайте «открыть» несколько раз подряд. Импульс на замок длится треть секунды, и очередь нажатий только запутает: вы перестанете понимать, на какое из них шкаф отвечает. Подождите пару секунд и повторите один раз.
- Не заполняйте карту «по памяти» или копированием с другого шкафа. Провода в двух одинаковых с виду шкафах могут быть разведены по-разному.
- Не привязывайте ячейку, у которой не подтвердилось закрытие. Такая ячейка в работе
будет вечно выглядеть как «датчик не подтверждён», и система не сможет проверить, что
клиент закрыл дверцу.
⚠️ Здесь стояло «и вечно давать тревогу» — это неверно: по такому гнезду тревога
не поднимается намеренно (иначе пустые гнёзда шумели бы на каждом опросе). Вместо
тревоги — тихий отказ: шкаф не откроет её ни на возврат, ни на выдачу, и первым
об этом узнает клиент, стоящий у клавиатуры с верным кодом
(
packages/domain/src/cell-state.ts, веткаsensor_unproven:canIssue: false,canAccept: false,alarm: false).
Когда мастер нужен снова
- собрали новый шкаф;
- заменили плату замков;
- переставляли провода внутри шкафа при ремонте — перепроверить целиком, а не одну строку;
- заменили замок в одной дверце — достаточно перепривязать эту ячейку.
Замена планшета карту не затрагивает: она хранится в панели, а не в шкафу.