TigerTag SDK JS

SDK для JavaScript / Node.jsTigerTag SDK

Читайте, проверяйте и записывайте NFC-чипы TigerTag на JavaScript.

SDK открытого протокола TigerTag для филамента и смолы для 3D-печати: превращает байты чипа в материал, цвет, параметры печати и количество, проверяет его подпись ECDSA-P256 без сети и собирает новые метки байт за байтом.

npm install tigertag
quick-start.js
const { TigerTag } = require('tigertag');

const tag = TigerTag.fromPages(uid, payload);   // from your NFC SDK
console.log(tag.pretty());                      // human-readable summary
console.log(String(tag.verify()));              // VALID / NOT SIGNED / INVALID
console.log(tag.toDict());                      // JSON-ready object
Быстрый старт из README: работает сразу после npm install, без настройки.
1.2.1Текущая версия, выпущена 2026-11-06
Node.js 18+Использует встроенные crypto и fetch
0Зависимостей времени выполнения для чтения и проверки
Apache-2.0Открытая лицензия с предоставлением патентных прав

Начните за три шага

Установите пакет, прочитайте чип своей NFC-библиотекой, запишите новый. Встроенные справочные таблицы позволяют первому запуску работать без сети.

  1. 1

    Установите пакет

    Из реестра npm. pnpm, yarn и bun устанавливают тот же пакет.

    npm install tigertag
    pnpm add tigertag
    yarn add tigertag
    bun add tigertag
  2. 2

    Прочитайте чип

    Передайте 7-байтовый UID и 144 байта, прочитанные NFC-библиотекой. Здесь — с nfc-pcsc и ACR122U.

    // Node.js — nfc-pcsc (ACR122U / PN532)
    reader.on('card', async (card) => {
      const uid = Buffer.from(card.uid, 'hex');        // 7 bytes
      const payload = await reader.read(4, 144, 4);    // pages 4–39, 144 bytes
      const tag = TigerTag.fromPages(uid, payload);
      console.log(tag.pretty());
      console.log(String(tag.verify()));               // VALID / NOT SIGNED
    });
  3. 3

    Измените и запишите

    Каждое изменение возвращает новый TigerTag; toBytes() даёт байты для записи. erase() даёт пустой чип.

    // Immutable surgical update — returns a new TigerTag, original unchanged
    const patched = tag.patch({ nozzleTempMin: 200, dryTemp: 55 });
    
    // Erase a chip — write the returned 80 bytes to the NFC chip
    const blankBytes = TigerTag.erase();

Полный API в README

Что умеет SDK

Один пакет для всего, что связано с чипом TigerTag: чтения, проверки, записи и обновления данных.

Чтение любого дампа

fromPages(), fromDump() и fromFile() принимают UID с 80 или 144 байтами либо полный дамп на 180 байт. pretty(), describe(), toDict() и toRawDict() возвращают текст, абзац простым языком или объекты, готовые для JSON.

Проверка подлинности без сети

verify() проверяет подпись ECDSA-P256, связывающую UID чипа с данными продукта, открытым ключом из пакета. Результат: valid, invalid, unsigned, no_key или no_uid.

Создание и изменение меток

create(), asInit(), patch() и erase() формируют байты чипа. TigerTag неизменяем: patch() возвращает новый объект и не позволяет менять idTigertag, idProduct, uid или подпись.

Сборка из каталога

TigerTag.fromCatalog(productId) собирает полный TigerTag+ из официального каталога продуктов, который загружается при первом использовании и кешируется в папке пользователя.

Синхронизация с производителем

Для чипов TigerTag+ методы rawApi(), diffApi() и patchFromApi() получают актуальные данные бренда, показывают отличия от чипа и применяют их.

Справочные данные, прежде всего офлайн

Таблицы материалов, брендов, видов поверхности, типов, диаметров и единиц входят в пакет. Фоновая проверка обновляет их не чаще раза в сутки; offline: true или TIGERTAG_OFFLINE=1 означает ноль сетевых запросов.

Три вида меток

SDK читает и записывает три типа меток протокола TigerTag v2.2 на чипах NTAG213, NTAG215 и NTAG216.

idProduct 0xFFFFFFFF

TigerTag (Maker)

Все поля на чипе, читаются полностью без сети.

idProduct 0x00000000

TigerTag Init

Пустой шаблон, готовый к программированию. Создаётся через TigerTag.asInit().

ECDSA-P256

TigerTag+

Все поля на чипе плюс идентификатор продукта, связанный с облачным API для обновлений от производителя. Подписанный чип проверяется через verify().

В командной строке и внутри Electron

Пакет устанавливает команду tigertag и работает в главном процессе приложения Electron.

Команда tigertag

Разбирает дамп в текст, JSON или сырые поля и по запросу обновляет справочные таблицы.

# Parse a dump file
tigertag dump.bin

# JSON output
tigertag dump.bin --json

# Update the reference tables now (into the data dir)
tigertag update

Внутри приложения Electron

Разбор чипов в главном процессе, без дополнительного подпроцесса.

// main.js — replace parseTigerTag() subprocess dependency
const { TigerTag, TigerTagDB } = require('tigertag');

function parseTigerTag(payload, uid) {
  const tag = TigerTag.fromPages(Buffer.from(uid), Buffer.from(payload));
  const db  = new TigerTagDB();
  return {
    dict: tag.toDict(db),
    raw:  tag.toRawDict(),
    sig:  tag.verify(db).toDict(),
  };
}

Попробуйте без считывателя: playground

Локальная веб-страница, которую обслуживает сам SDK: она собирает и декодирует чипы TigerTag и показывает каждый байт. NFC-оборудование не нужно.

  • Вход и выход SDK рядом: вызов create(), затем pretty(), describe(), verify() и toDict().
  • С одним или несколькими считывателями PC/SC, например ACR122U, чипы читаются сразу при поднесении, а Burn записывает текущее содержимое.
  • Playground никогда не записывает подпись: выпустить её может только сертифицированный производитель.
npm run playground
# then open http://localhost:7432/tools/playground.html

# Enable live reader support (one-time install)
npm install ws nfc-pcsc

Часть экосистемы TigerTag

SDK реализует открытую спецификацию TigerTag наряду с другими официальными инструментами.

Спецификация протокола TigerTag

Открытая спецификация, которую реализует SDK: структура памяти, типы меток, схема подписи и справочная база данных.

Репозиторий: TigerTag-RFID-Guide

TigerTag SDK для Python

Версия для Python: чтение, проверка, запись и сравнение. Страница playground — один и тот же файл в обоих SDK.

Репозиторий: TigerTag-SDK-Python

TigerTag Studio Manager

Открытое настольное приложение для учёта запасов под Windows, macOS и Linux, работает с TigerTag Pod и считывателями ACR122U.

Репозиторий: TigerTag-Studio-Manager

TigerTag RFID Connect

Официальное мобильное приложение: чтение и запись чипов встроенным NFC телефона.

Вопросы

Как установить TigerTag JavaScript SDK?

Выполните npm install tigertag, либо pnpm add tigertag, yarn add tigertag или bun add tigertag. Нужен Node.js 18 или новее; для чтения и проверки другие пакеты не нужны.

Нужно ли подключение к интернету?

Нет. Справочные таблицы и открытый ключ подписи входят в пакет, поэтому чтение и проверка работают без сети. Сеть используется только для ежедневной проверки таблиц, каталога продуктов и облачных методов TigerTag+; offline: true или TIGERTAG_OFFLINE=1 её отключает.

С какими NFC-чипами и считывателями он работает?

TigerTag использует чипы NTAG213, NTAG215 и NTAG216 (ISO 14443-3). SDK принимает UID и байты, прочитанные вашей NFC-библиотекой, поэтому не привязан к одному считывателю; в README показан nfc-pcsc с ACR122U.

Как он проверяет подлинность чипа?

verify() проверяет подпись ECDSA-P256 чипа по его UID и идентификаторам продукта открытым ключом из пакета. Возвращает valid, invalid, unsigned (метка Maker), no_key или no_uid без обращения к серверу.

Может ли он записывать чипы?

Он формирует байты: create(), patch(), asInit(), erase() и fromCatalog() дают TigerTag, чей toBytes() — содержимое, которое записывает ваша NFC-библиотека. Кнопка Burn в playground записывает его на чипы подключённых считывателей.

Есть ли версия для Python?

Да: TigerTag-SDK-Python — версия того же API для Python, и оба SDK обслуживают одну и ту же страницу playground.

Под какой лицензией SDK?

Apache-2.0, с явным предоставлением патентных прав. Для реализации самого протокола TigerTag лицензия не требуется.

Одна команда для старта

npm install tigertag, затем TigerTag.fromPages(uid, payload).

Открыть в npm