Wirenboard 6 wiegand

При попытке получить ИД карточки со считывателя карт с помощью скриптов через интерфейс Wiegand: (https://github.com/contactless/wiegand-linux-sysfs ), приходят все время разные данные, по содержанию и по размеру, при том что карточка одна и та же. Считыватель подключен к портам А1 и А2, разъемы GPIO: 111 и 109.
Контроллер: WirenBoard 6.5
Ниже вывод работы Питоновского скрипта.
Подскажите, пожалуйста, как быть и в чем может быть причина? Спасибо.

root@wirenboard-AN3SYUMZ:~# python test.py
Binary: 001010010111111111000110
2719686
Binary: 00001100101111111111000110
3342278
Binary: 00010100101111111111000110
5439430
Binary: 00010100101111111111000110
5439430

Сергей, добрый день! Если можете, пришлите код, которым вы считываете данные. Можно на info@contactless.ru

Всем привет, чем закончилась история считывания wiegand ? Имеется задача считывать wiegand.
Пытаюсь использовать тот же код что и у автора темы, https://github.com/contactless/wiegand-linux-sysfs/blob/master/wiegand_test1.py
но никакого вывода нет. Хотя входы 111 и 109 работают, проверил изменяя потенциал

for i in {gpio109,gpio111}; do cat /sys/class/gpio/$i/value;done

лучше через wiegand_epoll, который рядом лежит, не через python.

1 Симпатия

Евгений огромное спасибо за ответ.
Действительно данные теперь приходят но каждый раз разные

./wiegand_epoll 109 111

got value 1 = 0x1 (2 bits)
got value 1923596792 = 0x72a7c1f8 (42 bits)
got value -1461276876 = 0xa8e6af34 (38 bits)
got value 1234885720 = 0x499adc58 (46 bits)
got value 1935378400 = 0x735b87e0 (55 bits)

Пробовал в исходнике грубо поиграться таймаутом epoll все равно каждый раз приходят новые данные с одной и той же карты.

это очень странно конечно. А попробуйте запустить через nice -n-19 ./wiegand_epoll ...

1 Симпатия

Остановил все сервисы wb-home, adc, gpio и все начало считываться нормально. По крайней мере теперь знаю куда копать. Спасибо!

А, ну видимо дело в том, что эти же gpio опрашиваются сервисом wb-homa-gpio и тоже через epoll

Всем привет!

Имеем аналогичную проблему - каждый раз при считывании карты приходят данные разной длины.

Считыватель - ESMART Reader с интерфейсом Wiegand 26 (https://esmart.ru/products/skud/skud-schityvateli-esmart-dostup/esmart-reader-stone/).
Версия WB - 6.6.0.

Пробовали все скрипты из указанного репозитория (https://github.com/contactless/wiegand-linux-sysfs), в том числе с высоким приоритетом (nice -n -19 …).
Пробовали останавливать сервисы командой service wb-* stop.
К успеху пока не пришли.

Считыватель подключаем следующим образом (провод считывателя -> пин на WB):

  • D0 -> A1 (GPIO 109)
  • D1 -> A2 (GPIO 111)
  • V+ -> +5V / Vout 12V (пробовали два варианта)
  • GND -> GND

Подключили считыватель к Arduino Nano - стабильно получаем 26 бит.

Что мы делаем не так? Похоже, что-то тривиальное не учли, но сами понять пока не можем. Ткните носом по возможности. Спасибо!

Боюсь, что не хватает “реальности времени” на Wiren Board для этого считывателя. В протоколе Wiegand, если я правильно помню, допустимы разные времена. Видимо у этого считывателя они особенно маленькие.

Варианты решения: использовать Dallas или RS-485, использовать другой считыватель, использовать Arduino Nano в качестве конвертера во что-то, например в UART.