Id катушек и QR-ссылки
Ратифицировано 2026-11-05 — пока не реализовано. Приложения строятся на этом контракте. Открытые вопросы перечислены в конце; решение любого из них меняет только то, что в нём названо. Разделы с пометкой Предложено ещё не ратифицированы: не стройте на них ничего, пока они не будут ратифицированы.
Публичный эталон: репозиторий TigerQR-Label содержит спецификации ссылок и этикеток этого контракта (
spec/links.md,spec/labels.md), тестовые векторы (test-vectors/links.json), эталонный код, который выполняетqr.tigertag.io(src/parse.ts,src/links.ts), и девять примеров этикеток. Документация — CC-BY-4.0, код — Apache-2.0. Проверяйте считыватель на тестовых векторах.
Коротко
Заголовок раздела «Коротко»QR-код TigerTag содержит одну короткую ссылку, https://qr.tigertag.io/<path>.
Путь говорит, что она открывает:
flowchart TD
QR["QR scanned<br/>qr.tigertag.io/#lt;path#gt;"]
QR -- "/#lt;14 hex#gt;" --> CHIP["Spool with a chip<br/>TigerTag / TigerTag+"]
QR -- "/#lt;10 or 17 digits#gt;" --> DATA["Spool without a chip<br/>TigerData / TigerData+"]
QR -- "/p/#lt;10 digits#gt;" --> PROD["Catalogue product, public<br/>page · .json · .ttag"]
CHIP --> OWNER{"Spool: is the owner<br/>signed in?"}
DATA --> OWNER
OWNER -- "yes" --> SPOOL["Their spool<br/>page · .json · .ttag"]
OWNER -- "no" --> OTHER["The product and the owner's name<br/>.json / .ttag: 303 to /p/"]
classDef private fill:#f08c0022,stroke:#f08c00,stroke-width:2px
classDef public fill:#2f9e4422,stroke:#2f9e44,stroke-width:2px
class CHIP,DATA,OWNER,SPOOL private
class PROD,OTHER public
Оранжевым отмечено личное, только для владельца катушки; зелёным — общедоступное.
| QR-код на | Путь | Пример |
|---|---|---|
| катушке с чипом (TigerTag / TigerTag+) | UID чипа в шестнадцатеричном виде, 14 символов, печатается строчными буквами; UID парного чипа открывает ту же катушку | qr.tigertag.io/1d33dbda0d1080 |
| катушке без чипа (TigerData / TigerData+) | id без префикса TigerData_: 10 или 17 цифр; длинная форма (TigerData_6130922252, tigerdata-…) тоже работает |
qr.tigertag.io/6130922252 |
| продукте (TigerQR+) | p/ + id_product в десятичном виде, всегда 10 цифр, дополненный нулями (p/0010303748); старые этикетки с 8 шестнадцатеричными символами (p/9f5e0644) по-прежнему открываются |
qr.tigertag.io/p/2673739332 |
- Ссылка на катушку: владелец, войдя в аккаунт, видит свою катушку; все
остальные видят продукт и имя владельца.
.jsonи.ttagотдают катушку только владельцу; остальные получают303на.json/.ttagпродукта. - Ссылка на продукт общедоступна, без входа: страница каталога, его данные
(
p/2673739332.json) и файл (p/2673739332.ttag). - Регистр букв в ссылках не важен.
- Чтобы поделиться катушкой или продуктом, делитесь этой короткой ссылкой:
именно она печатается на этикетках, и её читает любое приложение. Ссылка, которой делятся, может начинаться с языка (
qr.tigertag.io/fr/p/2673739332): тогда страница открывается на этом языке для всех. На печатных этикетках его никогда нет.
Остальная часть страницы — сам контракт.
Правила, которым следует каждое приложение TigerSystem:
- как катушка без чипа (TigerData / TigerData+) получает свой id;
- как катушка сохраняет свою ссылку, когда получает чип;
- как id катушки записывается в QR-код печатной этикетки и считывается обратно;
- как приложение вызывает катушку со значениями (вес, заметка) через ссылку;
- как продукт получает собственную ссылку;
- как ссылка отвечает в JSON или файлом
.ttag. - что несёт печатная этикетка и каковы её шаблоны.
1. Id катушек
Заголовок раздела «1. Id катушек»Катушка — это документ в инвентаре аккаунта, users/{uid}/inventory/{spoolId}.
Id документа и есть id катушки: в одном аккаунте не может быть двух катушек с
одинаковым id.
| Катушка | Id | Пример |
|---|---|---|
| Чип (TigerTag / TigerTag+) | NFC UID чипа, шестнадцатеричный, в верхнем регистре, 14 символов (7-байтовый UID NTAG) | 04AB12CD3E4F80 |
| Без чипа, выдаётся с этого момента | TigerData_ + миллисекунды epoch (13 цифр) + случайное число 0000–9999 (всегда 4 цифры) |
TigerData_17623456789014213 |
| Без чипа, выдан до этого контракта | TigerData_ + 10 случайных цифр |
TigerData_4480517985 |
| Без чипа, устаревший префикс | CLOUD_ + 10 случайных цифр |
CLOUD_4480517985 |
| Устаревший десятичный (старое Android-приложение) | UID в десятичной записи, переводится в шестнадцатеричный | 1234567890123456 |
Уже выданные id этим контрактом никогда не переписываются. Считыватели
проверяют только префикс (TigerData_ / CLOUD_ → без чипа); ни один из них не
зависит от числа цифр. Id — это идентификатор, и ничего больше: никогда не
выводите из него дату создания. 4-байтовый UID (проприетарный чип, привязанный к
катушке) никогда не бывает именем документа инвентаря, поэтому никогда не
появляется в ссылке.
Выдача id без чипа
Заголовок раздела «Выдача id без чипа»Каждое приложение, создающее катушки без чипа (сегодня Tiger Studio, позже мобильное приложение), выдаёт id одинаково:
- Составить
TigerData_<Date.now()><four random digits>. - Локальная проверка — если id уже есть в инвентаре, который хранит
приложение (копия живого слушателя, включая офлайн-кэш), или в его
uidMigrationMap, составьте другой. Это работает офлайн. - Записать
- онлайн: в транзакции, которая сначала читает документ и завершается ошибкой, если он существует; при ошибке вернитесь к шагу 1;
- офлайн: обычная запись, которую Firestore ставит в очередь до возвращения сети. Шаги 1 и 2 — единственная защита.
Обычный set() для уже существующего id перезаписывает находящуюся там
катушку, молча. Именно это предотвращает шаг 3.
Четыре случайные цифры также делают новый id без чипа практически уникальным во всех аккаунтах (примерно одна коллизия за 600 лет при миллионе катушек без чипа в год), так что сервер позже сможет разрешить ссылку для кого-то, кроме владельца, не меняя ни одной напечатанной этикетки.
2. Сохранение ссылки, когда катушка получает чип
Заголовок раздела «2. Сохранение ссылки, когда катушка получает чип»Программирование чипа на катушке без чипа переносит катушку на UID чипа. В одном пакете:
- записать катушку под UID чипа (и под UID двойника — для пары двойников);
- удалить документ
TigerData_…; - записать перенаправление
users/{uid}/uidMigrationMap/{old id}→{ hex_uid, migrated_at }.
Пакет гарантирует, что все три действия происходят вместе или не происходят
вовсе. Перенаправление хранится в uidMigrationMap (коллекции, которая уже
сопоставляет устаревшие десятичные id с шестнадцатеричными), а не в виде
документа-заглушки в инвентаре: всё, что читает инвентарь, считает один документ
одной катушкой.
3. QR-ссылки
Заголовок раздела «3. QR-ссылки»Печатная этикетка катушки несёт QR-код со ссылкой на катушку — и больше ничего (ни веса, ни заметки: напечатанные значения устаревают):
https://qr.tigertag.io/<id>Рядом с кодом ничего не печатается открытым текстом: ни id, ни ссылка. QR-код — это путь обратно к катушке.
<id> — это id катушки без префикса:
| Катушка | Ссылка |
|---|---|
| Чип | https://qr.tigertag.io/04ab12cd3e4f80 |
| Без чипа (новая) | https://qr.tigertag.io/17623456789014213 |
| Без чипа (до этого контракта) | https://qr.tigertag.io/4480517985 |
CLOUD_ |
без QR-ссылки — этикетка печатается без QR-кода |
| Устаревший десятичный | без QR-ссылки — сначала переведите катушку в шестнадцатеричный формат |
Кодирование
Заголовок раздела «Кодирование»- Вся ссылка — в нижнем регистре, включая id:
https://qr.tigertag.io/04ab12cd3e4f80. Проверено 2026-11-07: камера iPhone открывает ссылку в любом регистре, но камера Samsung (Galaxy S24) показывает ссылкуHTTPS://в верхнем регистре как обычный текст и открывает только ссылку в нижнем. - Один сегмент в байтовом режиме. Схема в нижнем регистре не может использовать буквенно-цифровой режим, а разбиение ссылки на сегменты ничего не экономит (измерено: каждый вариант — 29 × 29).
- Коррекция ошибок M (15 %): этикетки царапаются и сгибаются.
- Итог: 29 × 29 модулей для каждой ссылки на катушку и на продукт. Рисуйте каждый модуль на целом числе точек принтера, со стандартной свободной зоной в 4 модуля.
Чтение ссылки
Заголовок раздела «Чтение ссылки»Считыватели извлекают id из ссылки офлайн: приложению, сканирующему
этикетку, сайт никогда не нужен. Они читают путь без учёта регистра,
игнорируют завершающий / и разрешают его по форме:
| Путь | Id катушки |
|---|---|
| 17 цифр | TigerData_<17 digits> |
| 10 цифр | TigerData_<10 digits> |
| 14 шестнадцатеричных символов | UID в верхнем регистре |
13 шестнадцатеричных символов, начинающихся с 4 |
усечённый UID NTAG: 0 + 13 символов (правило исправления) |
p/ + id_product: 10 десятичных цифр (печатная форма) или 8 шестнадцатеричных символов (старые этикетки) |
продукт — раздел 5 |
Окончание .JSON или .TTAG запрашивает ответ для инструментов — раздел 6.
Приложения записывают короткую форму выше, но считыватели принимают и
длинную форму: префикс TigerData в любом регистре, затем _ или -, затем
17 или 10 цифр — TigerData_17623456789014213, TigerData-17623456789014213,
TIGERDATA-17623456789014213, tigerdata_4480517985 ведут к одной и той же
катушке. Ссылка, набранная или отправленная вручную, продолжает работать.
Префикс CLOUD не принимается ни в одной из форм.
UID может состоять только из цифр, но его длина — 14 символов, никогда не 17 и
не 10, так что всегда решает длина. Ни один устаревший десятичный id не доходит
до считывателя, поскольку ни один не печатается. Любая другая форма — это
этикетка из более новой версии: считыватель сообщает об этом («обновите
приложение»), а не выдаёт ошибку. Каждый другой вид объектов получает
собственную папку — букву и / (p/ для продукта, позже r/ для стеллажа), —
так что он никогда не пересечётся с уже напечатанными ссылками на катушки.
Языковой префикс
Заголовок раздела «Языковой префикс»Ссылка, которой делятся, может нести перед путём язык того, кто ею делится. (2026-11-11.)
https://qr.tigertag.io/<lang>/<spool id>https://qr.tigertag.io/<lang>/p/<id_product><lang> — один из en, fr, de, es, it, zh, pt, pt-pt, pl,
ru, nl, пишется строчными буквами, читается в любом регистре.
- Тогда страница открывается на этом языке для всех, включая роботов
предпросмотра ссылок:
/fr/p/2673739332→tigersystem.io/fr/catalog/2673739332. - Без префикса решает язык браузера посетителя.
- Неизвестный префикс даёт
404. - На печатных этикетках префикса нет никогда: они остаются нейтральными по языку. Его добавляют только кнопки «Поделиться» (tigersystem.io и Tiger Studio).
Считыватели его отбрасывают. Считыватель, которому передают ссылку (поле вставки в Studio, сканер или поле вставки мобильного приложения, любой сторонний считыватель), сначала отбрасывает один начальный <lang>/ в любом регистре, а затем читает остаток, как описано выше: qr.tigertag.io/fr/p/2673739332 открывает тот же продукт, что и qr.tigertag.io/p/2673739332. Считыватель никогда не печатает и не сохраняет префикс: этикетка или экспорт, сделанные по ссылке, которой поделились, несут ссылку без префикса. Ссылка, которой делятся, — qr.tigertag.io/fr/p/2673739332; QR-код всегда содержит qr.tigertag.io/p/2673739332. (2026-11-11.)
Поиск катушки
Заголовок раздела «Поиск катушки»-
Найдите id в собственном инвентаре вошедшего зрителя.
-
Нет там → найдите его в
uidMigrationMapзрителя и пройдите по перенаправлению. -
У пары двойников одна этикетка, с основным UID; любой из двух UID открывает катушку.
-
Удалённая катушка (
deleted: true) открывается как «удалённая», а не как ошибка.Владелец видит катушку на самой странице — она читается в браузере из его собственного документа инвентаря (правила ограничивают доступ им самим): продукт (фото на его цвете), бренд, материал, уровень, оставшийся вес от ёмкости, температуры сопла, стола и сушки, диаметр, стеллаж и слот, вес пустой катушки. Две кнопки: «Open in Tiger Studio» (
https://studio.tigersystem.io/?spool=<docId>, со значениями из ссылки) и «See the product page». Владелец, вошедший на устройстве в Studio Web, но не на сайт, отправляется в Studio Web: сайт не может прочитать документ без собственной сессии. (2026-11-07.) Владелец может изменить там вес и заметку той же записью, что и Studio:weight_availableилиmessage(не более 28 байт UTF-8),updatedAt(время сервера),needUpdateAt(время сервера) для формата с чипом, двойник — в том же пакете. Там же можно изменить контейнер (пустую катушку), так, как его записывает Studio:container_id,container_weight(с собственной поправкой аккаунта),updatedAt, двойник — в том же пакете. На странице есть кнопка выхода. (2026-11-08.) -
Любой, кто не является владельцем, — не вошедший, другой аккаунт, включая принятого друга, — отправляется к продукту катушки, и катушка ему никогда не показывается: сервер находит катушку по её id во всех аккаунтах (индекс по id катушки), читает её
id_productи перенаправляет на ссылку продукта из раздела 5. Один и тот же id в двух аккаунтах с разными продуктами (перезаписанный чип, старый документ которого сохранил другой аккаунт) → продукт документа, обновлённого последним (updatedAt), — верно практически в любом случае. Нет продукта или нет совпадения → страница, сообщающая, что катушка приватная, с «Start my inventory». Поиск выполняется только для этих сканирований, так что его стоимость следует за ними, а не за числом аккаунтов. (Ратифицировано 2026-11-06; правило конфликтов — 2026-11-07.)Посетитель без сессии (на устройстве не найден вход) не перенаправляется: страница даёт ему выбор. Она показывает карточку продукта катушки (только публичный продукт, никогда — для приватной катушки), выполняет вход прямо на месте (после входа проверка владельца запускается снова, и владелец попадает на катушку) или ведёт дальше, на страницу продукта. Вошедший пользователь, который не является владельцем, отправляется к продукту, как описано выше. (2026-11-07.)
Чья это катушка. Любой, кто сканирует катушку, вошедший или нет, видит её владельца: отображаемое имя и фото из
userProfilesаккаунта, чей документ был обновлён последним, даже если профиль не публичный, и даже для катушки без продукта, чтобы тот, кто найдёт катушку, знал, кому она принадлежит. Никогда — uid или адрес электронной почты. (2026-11-08.)
Конфиденциальность: знание id никогда не показывает катушку. Отсканированная ссылка открывает катушку только для её владельца; внутри приложений катушка показывается только тому, кому правила Firestore уже разрешают её читать (владельцу, принятому другу, публичному инвентарю). Id содержат метку времени и могут быть угаданы; это никогда не должно иметь значения. Продукт катушки не является приватным: он напечатан на этикетке, а чип TigerTag+ несёт его открытым текстом для любого телефона с NFC. Вес, заметка и стеллаж никогда не покидают аккаунт; владелец показывается только отображаемым именем и фото (см. выше). Сканирование учитывается один раз на вкладку браузера и катушку (перезагрузка — не новое сканирование), с его продуктом, брендом, материалом и местоположением на уровне города, но никогда с id катушки. Отчёт о сканировании также содержит IP-адрес посетителя, который хранится для защиты от флуда и для анализа: он показывается только в истории администратора, никогда — брендам, и используется для проверки города, переданного edge. Он хранится один год, только в целях безопасности. Сканирование вошедшим посетителем привязывается к его аккаунту.
4. Вызов катушки со значениями
Заголовок раздела «4. Вызов катушки со значениями»Приложение может построить ссылку, которая открывает катушку и предлагает значения, с помощью обычных параметров запроса (эти ссылки никогда не печатаются, поэтому читаемость важнее размера QR):
https://qr.tigertag.io/04AB12CD3E4F80?weight=640¬e=Opened%20in%20JuneПараметры
Заголовок раздела «Параметры»| Параметр | Значение | Ограничение |
|---|---|---|
weight |
вес нетто филамента, в граммах | целое число, от 0 до ёмкости катушки |
note |
заметка катушки (поле message) |
простой текст, не более 28 байт UTF-8 (место на чипе) |
Имена не зависят от регистра. Неизвестный параметр игнорируется и никогда не считается ошибкой. Значение вне ограничения отклоняется. Новые параметры добавляются в эту таблицу и никогда не придумываются одним приложением в одиночку.
Кто может их применить
Заголовок раздела «Кто может их применить»| Ситуация | Что происходит |
|---|---|
| Не вошёл | Значения отклоняются. Ссылка предлагает войти, а затем открывает катушку без них. |
| Вошёл, не владелец (включая катушку друга) | Значения отклоняются. Катушка открывается, если это разрешают правила. |
| Вошёл, владелец | Studio: катушка открывается со значениями, заполненными заранее, и одно действие сохраняет их («Update: 640 g»). Страница Hub: вес, который укладывается в ёмкость и отличается от сохранённого, сохраняется сразу — на катушке и её двойнике одним пакетом, — после чего баннер предлагает вернуть прежний вес («Revert to 772 g») на случай повторного сканирования старой ссылки. (Hub, 2026-11-08.) |
Ссылка от кого-то другого никогда не записывает: значения применяются только к собственной катушке владельца. Приложение, которому нужно записывать без подтверждения (весы, постоянно обновляющие вес, интеграция), не использует ссылки: оно записывает через аккаунт пользователя по правилам Firestore (руководство по интеграции).
5. Ссылки на продукты
Заголовок раздела «5. Ссылки на продукты»Ратифицировано 2026-11-06.
У продукта — филамента из каталога, чья бы катушка с ним ни была, — есть собственная ссылка: для упаковки, полки магазина, шоурума или печатного каталога:
https://qr.tigertag.io/p/<id_product><id_product>записывается в десятичном виде, всегда 10 цифрами, с нулями впереди:id_productникогда не длиннее 10 цифр (наибольший —4294967295). Примеры: продукт2855882328→https://qr.tigertag.io/p/2855882328; продукт10303748→https://qr.tigertag.io/p/0010303748. 29 × 29 модулей.- Этикетки, напечатанные раньше, несут прежнюю форму —
id_productв виде 8 строчных шестнадцатеричных символов (p/aa394e58); она остаётся читаемой навсегда (см. ниже). - Id, которого нет или больше нет в каталоге, —
p/0000000000иp/4294967295(«нет продукта», никогда не печатаются), неизвестный id, продукт в архиве, удалённый или объединённый, — открывает одну-единственную страницу «забытого продукта»: этого филамента больше нет в каталоге, с поиском. Один статус для всех,404(и для страницы, и для ответов.json/.ttag): почему продукт исчез, читающему неважно.id_productникогда не присваивается другому продукту: уже наклеенная этикетка никогда не откроет не тот филамент. - Ссылки обслуживает Hub (
tigersystem.io):qr.tigertag.ioуказывает на него. Страница — это страница каталога Hub (ниже); ответы.JSONи.TTAG— маршруты API Hub, которые читают каталог (с кэшированием). - Этикетка катушки никогда не повторяет свой продукт: ссылка на катушку уже ведёт к нему (раздел 3).
Чтение ссылки на продукт
Заголовок раздела «Чтение ссылки на продукт»Правильно сформированная ссылка на продукт имеет одну из двух длин, поэтому её невозможно прочитать неверно:
- 10 цифр → десятичное (
p/2673739332,p/0010303748). - 8 символов
0-9/a-f→ шестнадцатеричное, прежняя печатная форма, по-прежнему принимается (p/9f5e0644открывает тот же продукт, что иp/2673739332).
В качестве допуска, без гарантии, десятичное число другой длины, набранное
вручную, читается как десятичное, кроме ровно 8 цифр: они читаются сначала как
шестнадцатеричное, затем как десятичное, если такого продукта нет. Значение больше
4294967295 — неизвестная ссылка. 0 и 4294967295 в любой форме означают
«нет продукта» (404). Окончания .json и .ttag работают в любой форме, без
учёта регистра.
Страница, которую она открывает
Заголовок раздела «Страница, которую она открывает»p/… перенаправляет (302) на существующую страницу каталога продукта,
tigersystem.io/<lang>/catalog/<id_product in decimal>, на языке ссылки (языковой префикс), а без него — на языке телефона.
Отдельной страницы сканирования нет: страница каталога построена в первую
очередь для телефона (адаптивная), так как большинство её посещений приходят
со сканирования, — фото и образец цвета, бренд, материал и название цвета
вверху, параметры печати читаются с одного взгляда, затем — остальная страница.
6. Ответы JSON и .TTAG
Заголовок раздела «6. Ответы JSON и .TTAG»Ратифицировано 2026-11-06.
Ссылка, оканчивающаяся на .JSON (в любом регистре), — или отправленная с
Accept: application/json — отвечает в JSON вместо страницы. Ссылка,
оканчивающаяся на .TTAG, отвечает той же записью в виде
файла .ttag для скачивания
(Content-Disposition: attachment). Это адреса для инструментов, они никогда не
печатаются.
Та же логика, что и при сканировании (поиск катушки): владелец получает катушку, все остальные — её продукт.
| Ссылка | Владелец (Authorization: Bearer <Firebase ID token>) |
Все остальные (не вошедший, другой аккаунт, друг) |
|---|---|---|
…/p/2855882328.json |
запись продукта | то же самое |
…/p/2855882328.ttag |
продукт в виде файла .ttag |
то же самое |
…/04ab12cd3e4f80.json |
катушка | 303 → …/p/<id_product>.json; нет продукта из каталога (TigerData, TigerTag мейкера) → 404 |
…/04ab12cd3e4f80.ttag |
катушка в виде файла .ttag |
303 → …/p/<id_product>.ttag; нет продукта из каталога → 404 |
Без продукта из каталога о катушке не отдаётся ничего, даже её материал: 404
соответствует странице «приватной катушки» при сканировании.
- Катушка: файл
.ttagс этой единственной записью — документом инвентаря в том виде, в каком его хранит Firestore. Он содержитid_product; инструмент, которому нужен продукт, затем вызывает…/p/<id_product>.json. - Продукт: запись каталога в том виде, в каком её возвращает API продуктов,
на языке из
?lang=(по умолчанию английский). Кэшируется на сервере и разрешена с любого сайта. - Ответ по катушке никогда не кэшируется: он зависит от того, кто спрашивает.
- При открытии в Tiger Studio
.ttagкатушки импортируется в режиме Restore (катушка в прежнем виде, включая чип и резервную копию);.ttagпродукта импортируется в режиме Import, как новый TigerData+ с новым id. - Запрос JSON или
.TTAGникогда не записывает: значения из ссылки (?weight=,?note=) там игнорируются.
7. Печатные этикетки
Заголовок раздела «7. Печатные этикетки»Все приложения печатают одинаковые этикетки: два вида, один набор шаблонов, чтобы этикетка, напечатанная из Tiger Studio, мобильного приложения или сайта, выглядела и сканировалась одинаково.
| Этикетка | Её QR-код | Печатается для |
|---|---|---|
| Катушка | ссылка на катушку (раздел 3) | любой катушки, у которой есть QR-ссылка (не CLOUD_, не устаревший десятичный) |
| Продукт (карточка-образец) | ссылка на продукт (раздел 5) | катушки или продукта из каталога с реальным id_product (TigerTag+, TigerData+) |
Владелец, сканирующий этикетку катушки, получает катушку; все остальные — её продукт (поиск катушки). Этикетка продукта открывает продукт для всех: это этикетка для образца, полки или шоурума.
Что несёт этикетка
Заголовок раздела «Что несёт этикетка»- бренд — там, где был бы логотип производителя (логотипы производителей появятся позже);
- серию белым по чёрной плашке (
PLA Rainbow; материал, если серии нет); - название цвета и его hex-код(ы) (
#F2D066, до трёх на широких шаблонах); - на этикетке катушки — название этикетки в правом верхнем углу, контурной «таблеткой»:
TigerQR+, если её привязка — продукт из каталога (реальныйid_product) или чип TigerTag+, иначеTigerQR(так что чип TigerTag без продукта даётTigerQR); этикетка продукта (филамента) всегда несётTigerQR+. Как у TigerTag и TigerTag+,+означает привязку к каталогу. «Таблетка» не говорит, есть ли у катушки чип; - до четырёх полей значений, которые пользователь выбирает из: диапазона сопла, диапазона стола, сушки (температура · время), TD, диаметра;
- QR-код.
Только то, что не меняется: никогда — остаток веса, заметка, стеллаж или владелец. Ничего открытым текстом рядом с QR-кодом (раздел 3).
Шаблоны
Заголовок раздела «Шаблоны»Девять шаблонов — распространённые размеры и макеты этикеток катушек:
| Шаблон | Размер (ширина × высота) | Макет |
|---|---|---|
| Classic (по умолчанию) | 40 × 30 mm | бренд, плашка, цвет + hex, четыре поля, QR внизу справа |
| Wide | 50 × 30 mm | Classic с более широкой плашкой |
| Compact | 40 × 25 mm | бренд, QR слева, плашка, цвет, hex — без полей |
| Slim | 40 × 12 mm | QR слева, бренд, плашка, цвет — без полей |
| Slicer-friendly | 40 × 30 mm | бренд, серия, цвет крупно друг под другом, большой QR справа — без полей |
| Vertical | 30 × 40 mm | бренд, плашка, цвет крупно, hex, линия, поля стопкой слева, QR внизу справа |
| Vertical bold | 30 × 40 mm | бренд, плашка во всю ширину, цвет, линия, QR по центру снизу — без полей |
| Vertical compact | 25 × 40 mm | бренд, плашка, цвет, hex, линия, большой QR снизу — без полей |
| Только QR | 25 × 30 mm | «таблетка» TigerQR / TigerQR+ по центру сверху, под ней QR 20 мм — больше ничего, без полей |
Каждый шаблон — один SVG, размеченный в десятых долях миллиметра и масштабируемый под точки принтера. QR-код заполняет ту же область, что и на распространённых этикетках катушек (≈ 14 mm на Classic), с целым числом точек принтера на модуль: ближайшим, округлённым вверх, если это остаётся в пределах 6 % области. Белые поля этикетки служат её свободной зоной. При 203 dpi код 29 × 29 на Classic — это 4 точки на модуль (≈ 14,5 mm).
- PDF, PNG (в разрешении принтера) и SVG, чтобы работал любой принтер — при необходимости через его собственное приложение;
- прямая печать на принтерах этикеток (Brother QL, Niimbot, Phomemo) появится позже, принтер за принтером, с теми же шаблонами.
- чтобы их попробовать, playground TigerQR делает этикетку TigerQR+ продукта из каталога в каждом шаблоне, в PNG (203 или 300 dpi) и SVG.
Открытые вопросы
Заголовок раздела «Открытые вопросы»- Ссылки приложений. iOS (
apple-app-site-association) и Android (фильтры intent) по умолчанию сопоставляют пути с учётом регистра: ссылки печатаются в нижнем регистре, но набранная или отправленная вручную ссылка может быть другой, поэтому мобильное приложение объявляет сопоставление без учёта регистра (iOS) и фильтрует путь в коде (Android). - Домен.
qr.tigertag.ioпечатается навсегда: продлевайтеtigertag.ioна долгий срок.
См. также: Универсальная идентичность филамента, Инвентарь и облачная синхронизация, Обзор для разработчиков