Умный дом 
.

Каталог товаров

2016-12-23 Начались продажи, комплекты доработки ФР FPrint до Атол онлайн.
2016-12-03 Наша организация стала предоставлять услуги удостоверяющего центра, электронный документооборот,электронная отчетность,электронные подписи,торги.


Умный дом

Linux получение снимка с UVC Web Камеры
Сервисы в linux - очень просто
MqqtWarn install
смотрим Youtube на Телевизоре (Kodi центр)
простейшая система наблюдения
    Имеем главный компьютер:
  • linux ПК (можно Raspberry pi 3, Orange)
  • Mosquitto MQTT broker (сервер)
  • Mqqt-Warn - программа , где происходит обработка сообщений от разных датчиков и выполнение соответствующих действий

    Брокер отвечает за прием, передачу сообщений
  • опубликовать сообщение mosquitto_pub -t home/motions -m Hello
  • подписаться на прием mosquitto_sub -t home/motion

    Mqqt-Warn - это клиент , подписанный на все сообщения на выходе из брокера, выполненный просто в виде Python скрипта, запускаемого при старте.
  • Удобно настраивается через текстовый ini файл.
  • Туда удобно добавлять свои сервисы или использовать имеющиеся ,см. папку services.

    Mqqt-Warn использует особый формат сообщение (JSON стиль) :
  • mosquitto_pub -t home/motions -m "{\"par1\":\"value1\",\"par2\":\"value2\"}"

    В результате придет клиенту:
  • {"name":"aaaa"}

Таким образом будем передавать параметры от датчиков, например, движения

{"device":"motionSensor","area":"inHoll","action":"motion"}

Датчик будет удаленно настраиваться как WEB сервер по http://192.168.???.???, параметры будут храниться в EEPROM (при выключении сохраняются) , например, в Atmega 328P

Ip датчика (по умолчанию 192.168.1.178)

Ip брокера Mqtt (по умолчанию 192.168.1.19)

Topic брокера , куда будет публиковать сообщения датчик

Теперь допустим датчик движения будет публиковать свои сообщения в топик home/motions/Holl.

    К топику home/motions/Holl можно подключить , например , вэб камеру UVC, которая будет делать снимки. Cама камера аппаратно может быть подключена по USB к самому главному ПК или к любому мини ПК с Raspberry, Orange или др., где есть linux.
  • Также к топику home/motions/Holl можно подключить отправку по email сообщения.
  • Также к топику home/motions/Holl можно подключить ваш смартфон с установленым Mqtt клиентом.
  • В общем вариантов множество , подавляющее большинство из этих сервисов бесплатно

    Пробуем вариант по приходу события от датчика движения писать видео несколько секунд и сохранять в файл.
  • 1. Для этого установим библиотеку python-opencv. У меня довольно много времени отнял этот процесс , т.к. пришлось собирать из исходников.
  • 2. Можно установить guvcview и запускать с параметрами командной строки (см. guvcview --help), даже можно писать видео несколько секунд на экран и в файл.

Так как вариант 2 берет на себя все рутину по автоматической настройки камеры (баланс белого и др.) : будем его использовать.

Создаем для mqttwarn сервис uvcmonitor в каталоге services

В mqqt???.ini настраиваем подключение сервиса uvcmonitor (параметры где хранить видео, сколько секунд писать видео и др.)

************************ mqqt???.ini**********************

launch = ********, uvcmonitor, **********

    [config:uvcmonitor]
  • targets = {
  • 'view' : [ 'view1' ]
  • }
  • path = '/home/p/Arduino/MQTT_protocol/_video_/'
  • recordPeriod = 5 ; sec
  • cameraSymLink=="/dev/webcam1"
  • maxCatalogueSize = 500; Mb

    [home/motions/Holl]
  • targets = log:info , uvcmonitor:view, uvccamera:snapShot
  • format = '{_dthhmm} device={device} ' ; function or string format for output

**********************************************************

По поводу cameraSymLink=="/dev/webcam1"

Надо особо отметить, что используя несколько камер в системе linux появляются устройства типа /dev/video0,/dev/video1 ... причем одна и та же камера камера может быть сегодня /dev/video0 завтра после перезагрузки /dev/video2 и т.д. Как же читать эту камеру, если ее символическая ссылка (имя устройства) может меняться , даже просто вынув из USB и вставив заново в тот же USB.

Ответ создать например символическую ссылку webcam1:

В каталоге /etc/udev/rules.d/ создать файл (как я понял с произвольным именем).rules (я такой указал : 83-duplicate_devs.rules) и прописать в него , например, так

KERNEL=="video*", SUBSYSTEM=="video4linux", SUBSYSTEMS=="usb", ATTRS{idProduct}=="2310", ATTRS{idVendor}=="1908", SYMLINK+="webcam1"

    Дальше можно как-то применить новое правило
  • sudo udevadm control --reload-rules
  • sudo udevadm trigger

И вуаля - теперь у нас появляется стабильно /dev/webcam1 и мы знаем ,что это именно та самая 2310:1908 камера!

тел.(812) 386-07-42, 7-921-961-77-01, 7-911-928-11-05

1940