Перейти к основному содержимому

Мастер привязки ячеек

Мастер — это способ заполнить карту ячеек так, чтобы каждая строка была доказана, а не записана со слов. Работают вдвоём или в одиночку, но обязательно у открытого шкафа: часть шагов делается руками.

Мастер есть в панели

Он написан и покрыт тестами. Ниже — смысл шагов, а не подписи кнопок: названия на экране могут отличаться. Порядок придуман не из удобства, а из того, что умеет и чего не умеет плата.

Привязка карты — самый долгий шаг дня установки, и в общем порядке установки она стоит после регистрации терминала. Полный распорядок дня — COMMISSIONING.md в репозитории проекта.

🔴 Мастер живёт в панели, а панель из сети постамата не открывается — намеренно, с чего начать, врезка «Почему адресов несколько». Обряд делается у шкафа, то есть ровно там, где местный Wi-Fi панель не отдаст. Свой канал связи (мобильный интернет) — такая же часть сборов, как отвёртка: без него до мастера не добраться, а понятно это станет уже на объекте.

⚠️ И вторая часть сборов — учётная запись с правом device.enroll. Раздел «Привязка каналов» администраторский; у роли «оператор» его нет ни в меню, ни по прямому адресу (панель отвечает «Раздел недоступен»). Ехать на установку с дежурной учёткой — значит приехать и не начать.

Идея в одном абзаце​

Программа шлёт команду «открыть» на очередное гнездо и ждёт. Техник у шкафа видит, какая дверца щёлкнула, закрывает её рукой, и система видит переход «открыто → закрыто». Этот переход и есть доказательство: так может ответить только гнездо, к которому подключён живой замок с работающим датчиком. Пустое гнездо и оборванный провод такого перехода дать не могут.

Порядок действий​

  1. Откройте шкаф и держите доступ к дверцам. Все дверцы в начале должны быть закрыты — так виден каждый щелчок.
  2. В панели выберите шкаф, скажите, сколько у него дверец, и начните привязку. Мастер идёт не по всем гнёздам платы, а по обходу — короткому списку каналов; как он собирается, разобрано во врезке «Сколько дверец у шкафа» ниже. Пропущенные гнёзда можно вернуть в конце. ⛔ Здесь стояло: «Мастер идёт по гнёздам по очереди: CH01, CH02, …» — с 7 сентября это неверно, и разница в полчаса вашего времени у открытого корпуса. На новом шкафу мастер сперва предложит завести черновую карту — см. врезку ниже. Без неё шкафу нечего открывать.
  3. Мастер шлёт «открыть» на текущее гнездо. Слушайте щелчок и смотрите, какая дверца отошла.
  4. Если дверца открылась — назовите её. Введите номер, который написан на этой дверце снаружи (или наклейте номер, если его ещё нет). Это и есть привязка «ячейка ↔ гнездо».
  5. Закройте дверцу рукой. Дожмите до щелчка. Мастер должен показать, что увидел закрытие, — вот это и есть подтверждение.
  6. Мастер записывает строку карты и переходит к следующему гнезду.
  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).

Когда мастер нужен снова​

  • собрали новый шкаф;
  • заменили плату замков;
  • переставляли провода внутри шкафа при ремонте — перепроверить целиком, а не одну строку;
  • заменили замок в одной дверце — достаточно перепривязать эту ячейку.

Замена планшета карту не затрагивает: она хранится в панели, а не в шкафу.