Статьи / KA066 /
Laurent-5/5G: iButton DS1990
§ 66. Laurent-5/5G: iButton DS1990
|
Дмитрий Иванов, 07 Апреля 2023
|
Нужно подключить к модулю Laurent-5 / Laurent-5G 1-Wire считыватель iButton (Touch Memory) DS1990 (или DS1990A), иметь возможность получать информацию об обнаруженной метке
а так же настроить модуль на выполнение автоматической реакции на данное событие. Нужно так же иметь возможность подключить RFID эмулятор iButton типа MATRIX-II (мод. Е).
Статья подразумевает использование прошивки не младше чем L527 / G527.
Модули Laurent-5 / Laurent-5G с прошивкой не младше чем L527 / G527 могут обрабатывать сразу два считывателя iButton на двух разных физических
каналах шины 1-Wire (канал 'А' и канал 'B').
Давайте рассмотрим именно такую ситуацию когда нужно сразу два считывателя.
Причем один из них будет типа домофонной кнопки (таблетки) а второй - RFID эмулятор MATRIX-II (мод. Е).
Первым делом нужно настроить модуль и указать ему что на шине 1-Wire следует ожидать DS1990. Для этого заходим в WEB интерфейс модуля,
в разделе Общие настройки → Шина 1-Wire. В данной статье оба канала настроим на работу с DS1990. Хотя, разумеется, можно использовать только один из них (любой).

Настройку модуля можно делать не только через WEB но и KE-командами управления (через TCP сервер / клиент, URL ссылкой и т.д.).
$KE,OWI,MOD
Предположим что к каналу 'А' подключим домофонную кнопку (например, считыватель JSB 15.0). Схема подключения показана на рисунке ниже.

К каналу 'B' подключим iButton RFID эмулятор MATRIX-II (мод. Е). Схема подключения показана на рисунке ниже.
Подразумевается, что сам модуль Laurent питается от источника 12 В (клемма Vin).


Если теперь вставить домофонную кнопку в гнездо считывателя или поднести RFID карту к считывателю MATRIX в WEB интерфейсе модуля в разделе RFID Wiegand & iButton
можно увидеть информацию об обнаруженных метках:


А что делать если нужно получать информацию об обнаруженной метке в режиме реального времени и обрабатывать в моем собственном софте на PC?
Для получения данных о событии обнаружения метки в режиме реального времени, можно воспользоваться KE-сообщением #IBUT.
Для включения его выдачи следует в WEB интерфейсе в разделе Общие настройки → Сообщения активировать выдачу,
например, в соединение TCP сервера (по умолчанию, на TCP порту 2424).

Если теперь подключиться к TCP серверу модуля (по умолчанию 192.168.0.101 : 2424), например, программой putty и поднести iButton метку, то в режиме реального времени
получим текстовое сообщение с информацией об обнаруженной метке. Сообщение можно разобрать в собственном софте и выполнить нужные действия.

Информацию о формате Ke-сообщений в частности сообщении #IBUT можно найти в документации на модуль Ethernet модуль Laurent-5 / Laurent-5G. Ke-команды управления
Аналогично, можно настроить выдачу KE-сообщений в соединение TCP клиента. Т.е. не наш софт подключается к модулю а наоборот -
TCP клиент модуля сам выходит на связь с TCP сервером развернутым на некотором PC. Например, предположим, что на PC с IP 192.168.0.200 запущен TCP сервер на порту 8000.
Тогда что бы получить информацию о событии по iButton достаточно активировать TCP клиент на модуле и включить выдачу Ke-сообщений в это соединение.




А что делать если нужно запросить информацию о ранее обнаруженной метке (последнем факте)?
На этот случай, есть специальная Ke-команда $KE,IBT,LST - она возвращает информацию о последней обнаруженной метке iButton на указанной шине 1-Wire.

В данном случае, на шине 'B' была обнаружена метка с ID=1.43.225.223.160.15.0.17 и с тех пор прошло 1457 секунд.
Ke-команду можно отправить в модуль не только через TCP-сервер соединение но и, например, в виде URL запроса:

А можно сохранить идентификаторы нужных меток / карт в базе данных самого модуля и в дальнейшем выполнять логику обработки исходя из наличия обнаруженной метки в "белой" базе?
Да, такая возможность у модулей Laurent-5 / Laurent-5G есть. Они могут хранить в своей энергонезависимой памяти до 1000 шт идентификаторов меток / карт
(+ текстовое описание) и в дальнейшем, используя систему программируемой логики CAT, выполнять действия при обнаружении метки из белой базы.
Для того что бы добавить метку в базу, в WEB интерфейсе модуля необходимо нажать на зеленый "плюс" расположенный рядом с обнаруженной меткой.

Произвольную метку можно так же добавить в базу с помощью Ke-команды $KE,RFD.
Программируемая логика CAT
|
|
А что делать если нужно выполнить действие на стороне модуля (например, включить реле) при обнаружении метки?
Причем, все должен сделать сам контроллер без участия внешнего сервера / компьютера?
Такая задача легко решается с помощью программируемой логики CAT силами самого модуля. В WEB интерфейсе заходим в раздел Система CAT и создаем новое событие по iButton:

Выбираем вариант "Метка из белого списка". Это будет означать что если на любом из каналов 1-Wire будет обнаружена метка iButton и ID
этой метки сохранен в белой базе - сработает реакция на данное событие (реакцию мы зададим далее).

Реакция на событие CAT задается в виде списка Ke-команд. В данном случае, например, будем переключать состояние реле RELE_1 на противоположенное.

Укажем текстовое имя данному событию:

После создания события CAT его нужно активировать (включить):

Если теперь поднести метку iButton которая есть в "белой" базе - автоматически сработает система CAT и 1-ое реле изменит
свое состояние на противоположенное. Если же поднести метку которой нет в базе - ни чего происходить с реле не будет.


Можно создать дополнительные события CAT на метку которой нет в базе или на конкретный ID. Все созданные события CAT сохраняются в
энергонезависимой памяти и отрабатываются модулем автономно без необходимости держать внешний компьютер / сервер.
А можно передать информацию об обнаруженной метке, например, на внешний WEB сервер в виде аргумента GET запроса?
Да, без проблем! И такую задачу можно решить. Для этого в модуле есть Ke-команда отправки HTTP GET запроса ($KE,URL) и
динамические переменные, которые можно указать в теле Ke-команды и вместо обозначения переменной при выполнении команды / запроса
будет подставлены актуальные значения (показание датчика, состояние аппаратного ресурса или как в нашем случае - ID обнаруженной метки).
Если предположить, что на машине с IP 192.168.0.200 на TCP порту 8090 запущен WEB сервер, то выполнив вот такую команду на модуле
(либо в терминале, либо как реакция в событии CAT) мы отправим идентификаторы iButton меток для
шины А (динамическая переменная ~IB1~) и для шины B (~IB2~) обнаруженных последний раз.
$KE,URL,RUN,192.168.0.200,8090,scr.cgi?valA=~IB1~&valB=~IB2~

© Дмитрий Иванов
07 Апреля 2023
https://kernelchip.ru