Показаны сообщения с ярлыком Motion. Показать все сообщения
Показаны сообщения с ярлыком Motion. Показать все сообщения

16.03.2021

Motion Eye



 

Есть замечательная обёртка на Python для Motion - MotionEye.

# Эти ребята замутили даже дистрибутив - MotionEyeOS

В Wiki установка расписана уже с установкой самого Motion. Больше никакого колдовства для Motion не потребуется, всё остальное мышкой через web-интерфейс. Совушка уже сама будет запускать демона с заботливо подготовленным конфигом, который будет лежать здесь - /etc/motioneye/motion.conf

На данный момент у меня Armbian Focal и установка по мануалу для Ubuntu. Стоит отметить, что MotionEye не запускается под Python3, только Python2.

Соберу в удобное для себя с некоторыми актуальными правками и b

apt-get install ssh curl motion ffmpeg v4l-utils -y
# reboot
apt-get install python2 -y
curl https://bootstrap.pypa.io/pip/2.7/get-pip.py --output get-pip.py
python2 get-pip.py
apt-get install libffi-dev libzbar-dev libzbar0 -y
apt-get install python2-dev libssl-dev libcurl4-openssl-dev libjpeg-dev -y
apt-get install python-pil -y
pip2 install motioneye

# Default config
mkdir -p /etc/motioneye
cp /usr/local/share/motioneye/extra/motioneye.conf.sample /etc/motioneye/motioneye.conf

# Work Dir - Yandex.Disk
# mkdir -p /mnt/ya.disk

# autostart
cp /usr/local/share/motioneye/extra/motioneye.systemd-unit-local /etc/systemd/system/motioneye.service
systemctl daemon-reload
systemctl enable motioneye
systemctl start motioneye

# check
netstat -tulpn | grep :8765 

# update
pip2 install motioneye --upgrade
systemctl restart motioneye

 

 

В MotionEye встроена уже загрузка фото/видео в некоторые облака и работа по добавлению новых сервисов ведётся... Ну а я добавлю ЯндексДиск.

apt install davfs2
mkdir /mnt/ya.disk
chmod -R 777 /mnt/ya.disk
usermod -aG davfs2 user

# Сохранить пароль для автостарта
nano /etc/davfs2/secrets    
# https://webdav.yandex.ru login password

# Монтирование диска
nano /etc/fstab             
# webdaveu.yandex.ru /mnt/ya.disk davfs users,rw,_netdev 0 0

# При поднятии сети примонтировать (на всякий случай)
nano /etc/network/if-up.d/yadisk_mount
#   #! /bin/sh
#   mount -a
chmod +x /etc/network/if-up.d/yadisk_mount

mount -a
# check
df -h | grep /mnt
ls /mnt/ya.disk

 

 

Добавим уведомление на почту. 

Первым делом идём сюда и включаем доступ для ненадёжных приложений. Далее забиваем поля в соответствующей вкладке.

  • SMTP Server: smtp.gmail.com
  • SMTP Port: 587
  • TLS: ON

 

13.03.2014

Webcam

0. Video
На вебках всё реже пишут про совместимость с Linux. Но обязательно указывают все версии Windows. Даже драйверов на диске нет! Какже быть?
Подключаем не_совместимую с Linux USB-вебку и набираем команду убедиться, что она у нас уже есть в системе:

ls /dev/video*




1. mjpg_streamer - ретранслятор


Качай с источника mjpg-streamer-cubie или с моего MyDrive
Может пригодится оригинал mjpg-streamer-r63

Компиляция и запуск:
cd mjpg-streamer
sudo apt-get install libv4l-dev libv4l-0 libjpeg8-dev imagemagick
make USE_LIBV4L2=true clean all
export LD_LIBRARY_PATH=.
./mjpg_streamer -i "./input_uvc.so -f 30 -r 1280x720" -o "./output_http.so  -p 8080 -w ./www"
Ошибка...
ERROR:
Adding control for Pan (relative)
UVCIOC_CTRL_ADD - Error: Inappropriate ioctl for device
Но работает!!!
http://10.10.10.10:8080
top: CPU 3-5%

А если не работает, то, возможно, камера не поддерживает режим. Тогда в командную строку сходу добавляем "-y". Если не получилось, то смотрим режимы внимательней:
sudo apt-get install uvcdynctrl
uvcdynctrl -f

Автозапуск
Создаём файл /etc/init.d/mjpg_streamkick
#!/bin/sh

### BEGIN INIT INFO
# /etc/init.d/mjpg_streamkick
# Provides:          mjpg_streamer.sh
# Required-Start:    $network
# Required-Stop:     $network
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: mjpg_streamer for webcam
# Description:       Streams /dev/video0 to http://IP/?action=stream
### END INIT INFO

ld_library_path=/home/user/mjpg-streamer
export LD_LIBRARY_PATH ld_library_path
export LD_LIBRARY_PATH=/home/user/mjpg-streamer

NAME=mjpg_streamer
DESC="M-JPEG Streamer"
DAEMON=/home/user/mjpg-streamer/mjpg_streamer
MJPG_QUALITY=85
MJPG_RESOLUTION=800x600
MJPG_FREQ=10
MJPG_VIDEO_DEVICE="/dev/video0 -y"
MJPG_OUTPUT=/home/user/mjpg-streamer/www
MJPG_OUTPUT_PORT=8080
USER_PASS=rv:rv

f_message(){
        echo "[+] $1"
        echo "      "
}


# Carry out specific functions when asked to by the system
case "$1" in
        start)
                f_message "Starting $DESC..."
                $DAEMON -b -i "input_uvc.so -d $MJPG_VIDEO_DEVICE -f $MJPG_FREQ -r $MJPG_RESOLUTION -q $MJPG_QUALITY " -o "output_http.so -p $MJPG_OUTPUT_PORT -w $MJPG_OUTPUT -c $USER_PASS -n "
                sleep 1
  echo ".."
                sleep 1
                f_message "$NAME Started!"
  /etc/init.d/mjpg_streamkick status
                ;;
        stop)
                f_message "Stopping $DESC..."
                killall mjpg_streamer
                f_message "$NAME Stopped!"
                ;;
        restart)
                f_message "Restarting $DESC..."
                killall $NAME
                f_message "$NAME Killing!"
                $DAEMON -b -i "input_uvc.so -d $MJPG_VIDEO_DEVICE -f $MJPG_FREQ -r $MJPG_RESOLUTION -q $MJPG_QUALITY " -o "output_http.so -p $MJPG_OUTPUT_PORT -w $MJPG_OUTPUT -c $USER_PASS -n "
                sleep 1
  echo ".."
                sleep 1
                f_message "$NAME Restarted!"
  /etc/init.d/mjpg_streamkick status
                ;;
        status)
                pid=`ps -A | grep $NAME | grep -v "grep" | grep -v $NAME. | awk '{print $1}' | head -n 1`
                if [ -n "$pid" ];
                then
                        f_message "$DESC Status:"
                        f_message "$DESC is running with pid ${pid}"
                        f_message "$NAME was started with the following command line"
                        cat /proc/${pid}/cmdline ; echo ""
                else
                        f_message "$DESC Status:"
                        f_message "Could not find $NAME running!"
                fi
                ;;
        *)
                f_message "Usage: $0 {start|stop|status|restart}"
                exit 1
                ;;
esac
exit 0

И... Внедряем
sudo chmod 755 /etc/init.d/mjpg_streamkick
sudo update-rc.d mjpg_streamkick defaults 







2. Motion - детектор движения, юзает на входе поток из ретранслятора.
sudo apt-get install motion

Конфигурация:
/etc/motion/motion.conf
netcam_url http://10.10.10.10:8080/?action=stream
width 1280
height 720
framerate 10
webcam_port 8880
webcam_localhost off
control_port 8881
control_localhost off
locate on                  # рисует рамку по движению
target_dir /tmp/motion     # директория для сохранения снапшотов

sudo motion
top: CPU 101-103%

Ещё почитать:

Несколько камер: http://ubuntuforums.org/showthread.php?t=1897786
Motion, использует дополнительные, спицифичные для каждой камеры, конфиги, подключаемые в основном файле конфигурации:
thread /etc/motion/thread0.conf
thread /etc/motion/thread1.conf
thread /etc/motion/thread2.conf

thread1.conf
videodevice /dev/video1
text_left USBWebcam-1
target_dir /home/motion/images/webcam1
webcam_port 8881




Выход в люди:
Port Forwarding
DynDNS