Мышка в качестве дверного оповещателя

Мышка в качестве дверного оповещателя

Автор: Александр Хмельницкий

Мой друг владеет небольшим обувным магазином. После того как у него пропало несколько товарных позиций он попросил меня найти способ следить за входной дверью. Ему необходима была очень дешевая система, подключенная к компьютеру, и которая отсылала бы предупреждающее письмо на почту каждый раз когда дверь открывается в нерабочие дни.

Я решил разобрать старую USB мышку и использовать язычковый переключатель в качестве эмулятора клика. Небольшой кусок кода на Питоне (Python) и Линукс позволят фиксировать нажатие мышки как предупреждение об открытии/закрытии двери и соответствующее письмо будет отправляться на электронный ящик.

Шаг 1 - Необходимые компоненты

Вам понадобятся:

  • старая проводная USB мышка;
  • наличие системы Линукс с использованием Xorg/X11 (тестировалось на Linux Mint и Ubuntu);
  • язычковый переключатель или другой механический переключатель;
  • паяльник;
  • клеммник;
  • несколько проводов.

Шаг 2 - Работа с мышкой

Аккуратно откройте корпус мышки. Вынимите все шурупы. Далее разберитесь с кнопками вашей мышки - какая кнопка за что отвечает: в зависимости от девайса у вас будет от 2 до 5, возможно 6 кнопок.

Теперь установите переключатель. Вы можете отпаять переключатель или же сразу припаять провода к мышиной плате. В данном случае я решил припаять напрямую, чтобы была возможность пользоваться мышкой и в дальнейшем. Кроме того, я использовал только один переключатель, хотя Питон может справиться сразу с тремя.

Как только закончите с припаиванием, соберите мышку и выведете провода наружу.

Припаяйте выведеннный кабель к клеммнику. Этот клеммник будет использован для подключения оповещательного переключателя (язычкового или механического).

Шаг 3 - Работа со скриптом на Питоне

Скрипт Питона будет выполнять следующие шаги:

  • отключать мышь от Х11 при неправильном входном сигнале;
  • прослушивать мышку на события, используя исходные данные;
  • определять наличие клика (симулированием оповещательного переключателя);
  • проверять, происходит ли клик во время выходных дней;
  • если да, то отправлять письмо;

Перед тем как запускать скрипт, вам нужно будет сперва проверить его, отредактировать и "подогнать" под себя. Все конфигурационные переменные находятся в самом начале.

device_name : название мышки в X11

xinput_id : ID мышки в X11

$ xinput list | grep "slave  pointer"
     Virtual core XTEST pointer               id=4 [slave  pointer  (2)]
     SynPS/2 Synaptics TouchPad               id=10 [slave  pointer  (2)]
     PS/2 Generic Mouse                       id=11 [slave  pointer  (2)]
     Kensington Kensington PocketMouse Pro    id=13 [slave  pointer  (2)]

Когда закончите, просто прогоните скрипт в Sudo, чтобы иметь доступ к исходным данным мышки.

$ sudo python MyMouseAlarm.py

Шаг 4 - Подключите оповещательный сенсор

Теперь просто подключите ваш оповещательный сенсор к клеммнику. Он должен быть пассивным и действовать как механический переключатель, хотя он может быть и язычковым, ртутным, или являться микропереключателем.

Спасибо за внимание.

  • mouse-as-door-alarm-1
  • mouse-as-door-alarm-2
  • mouse-as-door-alarm-21
  • mouse-as-door-alarm-22
  • mouse-as-door-alarm-23
  • mouse-as-door-alarm-24
  • mouse-as-door-alarm-25
  • mouse-as-door-alarm-26
  • mouse-as-door-alarm-3
  • mouse-as-door-alarm-4