Библиотека 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 с понятным текстом. |
Поля настроек
| Поле | Ключ в ссылке | Значение |
|---|---|---|
type | t | hblink (и FreeDMR), xlx, brandmeister, рефлекторы ysf, nxdn, p25 |
host | h | доменное имя или IPv4, обязательно |
port | p | 1..65535, по умолчанию 62031 (XLX 62030, YSF 42000, NXDN 41400, P25 41000) |
name | n | название в списке серверов, до 40 знаков |
password | pw | пароль мастера (для XLX не нужен) |
talkgroup | tg | группа по умолчанию; у YSF это DG-ID, у NXDN и P25 номер рефлектора |
slot | ts | 1 или 2 |
modules | m | XLX: буквы модулей, например ABCD |
scan | sc | до 8 групп скана, массив чисел |
callsign, dmrId | cs, id | только в личной ссылке, ID до 9 цифр (NXDN ID до 65535, YSF обходится без ID) |
essid | e | BrandMeister, 0..99 |
contacts | cu | HBlink/FreeDMR и XLX: адрес списка абонентов, см. ниже |