Skip to content

Latest commit

 

History

History
47 lines (39 loc) · 3 KB

nvr_gpio.md

File metadata and controls

47 lines (39 loc) · 3 KB

Настройка кнопок со своим функционалом на регистраторе

front_panel

Регистратор имеет на борту разъем для подключения фронт-панели с кнопками, ir-ресивером:

nvr-ports

Разъем cn5 подписан с обратной стороны. С назначением +3.3в и GND понятно, IR задействовать не удалось, остальные пины ведут на GPIO процессора:

Y2    ^17
Y1    ^6
X2    ^13
Y3    ^8
X1    ^7
ALARM 10
REC   11

Символ ^ означает подтяжку резистором к +3.3, значит кнопкой эти пины надо замыкать на GND и ловить значение 0. Это реализовано в файле root/gpio_monitor.sh. По замыканию пина Y1 на землю он производит рестарт сервиса wfb, который следом рестартует телеметрию, для более удобного подключения смартфона или планшета по USB, или после смены wifi-адаптера. Скрипт мониторинга ведет лог нажатий, который можно наблюдать по tail -f /tmp/gpio.log. Примеры использования GPIO на выход можно посмотреть в testgpio.sh, и можно подключить пин ALARM или REC к малмощному светодиоду с резистором для индикации процессов, например перезапуска wfb-ng как сделано в gpio_monitor.sh.

Для запуска монитора как системного демона создадим файл /etc/init.d/S99gpio_monitor откуда и будем запускать наш root/gpio_monitor.sh:

#!/bin/sh
#
# Start gpio monitor
#

case "$1" in
  start)
    echo "Starting gpio_monitor daemon..."
    /root/gpio_monitor.sh &
    ;;
  stop)
    echo "Stopping gpio_monitor daemon..."
    kill -9 $(pidof {exe} ash /root/gpio_monitor.sh)
    ;;
    *)
    echo "Usage: $0 {start|stop}"
    exit 1
esac

Перезагружаемся без wifi адаптера и/или usb modem, активируем их уже после загрузки и убеждаемся, что по нажатию кнопки (хотя бы полсекунды подержите) сервисы запускаются. Список запущенных процессов всегда можно посмотреть командой ps axww.