DMRConnectDMRConnect

Библиотека DMRConnect Link

Подключение в браузере и Node.js, быстрый старт, методы и поля настроек.

Наша собственная библиотека DMRConnect Link 2.0: один файл без зависимостей, свой генератор QR по стандарту ISO/IEC 18004 внутри. Работает в браузере и в Node.js, лицензия MIT. Библиотека ни к какому серверу не обращается, код рисуется прямо у посетителя, наш сайт для этого не нужен.

ФайлЗачем
dmrconnect-link-2.0.0.js (30 КБ)закреплённая версия: положите к себе, и она не изменится
dmrconnect-link.jsвсегда последняя версия
dmrconnect-link.d.tsтипы для TypeScript и подсказки в редакторе

Каждый стиль и цвет проверен распознаванием: коды разных версий и размеров читаются сканером zxing, тем же, что стоит во многих телефонах. С версии 1.x можно переходить без правок: старые вызовы работают как раньше, только код стал красивее.

<script src="/js/dmrconnect-link.js"></script>   <!-- своя копия файла -->
<div id="qr" style="width:220px"></div>
<script>
  const link = DMRConnectLink.render("#qr", {
    name: "Клуб R0A", type: "hblink",
    host: "dmr.example.org", port: 62031,
    password: "passw0rd", talkgroup: 91, slot: 2,
  }, { style: "rounded" });    // на телефоне над кодом появится кнопка «Добавить в DMRConnect»
  // link = "https://dmrconnect.ru/add#eyJ2Ijox..." - можно дать и кнопкой
</script>

В Node.js так же, файл лежит в вашем проекте:

const L = require("./dmrconnect-link.js");
const link = L.build({ type: "xlx", host: "xlx250.example.org", port: 62030, modules: "ABCD" });
const svg = L.svg(link, { style: "dots", size: 512 });   // разметка SVG для письма, PDF или печати

Методы

МетодЧто делает
build(cfg, {scheme})Ссылка на сервер. scheme: "https" (по умолчанию) или "app", см. какую ссылку выбрать. При ошибке в настройках бросает Error с понятным текстом.
render(el, cfg | link, opts)Рисует QR в элемент (селектор или узел), на телефоне добавляет кнопку. Возвращает ссылку.
button(el, cfg | link, {label})Кнопка «Добавить в DMRConnect» без кода.
svg(cfg | link, opts)Строка SVG, масштабируется без потери чёткости. Параметры в разделе «Оформление».
png(cfg | link, {px, ...opts})PNG в data: URL, по умолчанию 1024 px. Только в браузере, возвращает Promise.
dataUrl(cfg | link, opts)Картинка SVG в data: URL для <img>.
matrix(text, {ecl})Сам QR-код любого текста: размер, версия и матрица модулей, если хотите рисовать по-своему.
parse(link)Обратно в настройки, для проверки.
normalize(cfg)Проверка настроек без построения ссылки, бросает Error с понятным текстом.

Поля настроек

ПолеКлюч в ссылкеЗначение
typethblink (и FreeDMR), xlx, brandmeister, рефлекторы ysf, nxdn, p25
hosthдоменное имя или IPv4, обязательно
portp1..65535, по умолчанию 62031 (XLX 62030, YSF 42000, NXDN 41400, P25 41000)
namenназвание в списке серверов, до 40 знаков
passwordpwпароль мастера (для XLX не нужен)
talkgrouptgгруппа по умолчанию; у YSF это DG-ID, у NXDN и P25 номер рефлектора
slotts1 или 2
modulesmXLX: буквы модулей, например ABCD
scanscдо 8 групп скана, массив чисел
callsign, dmrIdcs, idтолько в личной ссылке, ID до 9 цифр (NXDN ID до 65535, YSF обходится без ID)
essideBrandMeister, 0..99
contactscuHBlink/FreeDMR и XLX: адрес списка абонентов, см. ниже