"Smart Home" mit eigenen Händen. Teil 2. Videoüberwachung

    Im letzten Artikel ( Link ) haben wir den theoretischen Teil der Konstruktion unseres „smart home“ zu lesen und auf der Technologie entschieden verwendet. Beginnen wir nun mit der Umsetzung des praktischen Teils :) Das

    erste Opfer unseres Interesses wird ein Videoüberwachungssystem sein.


    Was, warum und warum?



    Wie ich bereits schrieb, wird der Kern unseres Systems ein Personal Computer sein. Wir werden alle unsere Systeme daran anschließen und er wird das alles verwalten. Die Anforderungen an Eisen ergeben sich aus den notwendigen Aufgaben, sind aber für uns nicht sehr mächtig. In meinem Fall war die Hauptanforderung die Geräuschlosigkeit und die geringe Größe der Systemeinheit. Die Wahl fiel auf einen Schokoriegel. Intel Atom - als Prozessor und Festplatte auf einer SSD zur Geräuschreduzierung. Das Betriebssystem ist Ubuntu Linux. Es stellt sich heraus, in vernünftig genug Geld. Es sieht etwa so aus :

    Bild

    Lassen Sie uns unsere Schafe zurück. Wie ich bereits geschrieben habe, werden wir die Videoüberwachung auf der Basis einfacher USB-Webkameras aufbauen, von denen eine zusätzliche Option ein Mikrofon sein kann. Zum Beispiel:

    Bild

    Zum Anschließen verwendete ich lange USB-Kabel mit einem aktiven Verstärker oder 5-Meter-Kabel mit Ferritringen und USB-Hubs mit Netzteilen. Besonderes Augenmerk muss auf die Qualität dieser Elemente gelegt werden.

    Bild
    Bild

    Dies ist völlig ausreichend, um unser Videoüberwachungssystem zu organisieren. Sie können auch die Möglichkeit in Betracht ziehen, analoge und IP-Kameras anzuschließen, aber ich ging von den Kosten der Lösung und den verfügbaren Materialien aus :)

    Software



    Wir gehen davon aus, dass die Kameras an unseren Computer angeschlossen sind - dies sollte keine Probleme verursachen. Kommen wir zum interessantesten Teil - dem Softwareteil.

    Wenn Sie moderne Kameras gekauft haben, benötigen Sie höchstwahrscheinlich keine zusätzlichen Gesten, damit das Betriebssystem diese erkennt. In meinem Fall sind 4 Webcams an das System angeschlossen. Überprüfen Sie dies: Wie Sie sehen, hat das System sie erkannt. Ich habe keine anderen Aktionen ausgeführt als das Anschließen an den USB-Anschluss. Wenn Sie in der Ausgabe keine Geräte sehen, müssen Sie höchstwahrscheinlich den Treiber für Ihre Kamera googeln. Für mich selbst entschied ich, dass ich keinen Videostream von den Kameras aufnehmen würde, sondern einmal in der Sekunde. Die Vorteile liegen auf der Hand:

    nix@nix-boss:~$ ls /dev/video*
    /dev/video0 /dev/video1 /dev/video2 /dev/video3






    • Weniger Verkehr bei der Anzeige über WEB (manchmal möchten Sie über GPRS von Ihrem Telefon aus sehen)
    • In Zukunft - ein Bewegungsmelder, der auf Bildanalyse und der Nutzung neuronaler Netze für eigene Zwecke basiert

    Für all dies verwenden wir ein Programm namens motion . In Ubuntu, ganz einfach gesagt:
    sudo apt-get install motion

    Die Konfigurationsdatei standardmäßig befindet sich in / etc / Bewegung genannt wird, seltsam genug, motion.conf :)

    Öffnen, Bearbeiten, geben etwa die folgende Form: In der Config threadX.conf alle Parameter sind ähnlich wie die Basislinie, nur ändern notwendige Leitungen, d.h. die Adresse des Kamerageräts im Betriebssystem, den Text im Bild und das Speicherverzeichnis. Ich habe die Kommentare aus der Konfigurationsdatei entfernt, um nicht zu viel Platz zu beanspruchen. Sie können sie in der ursprünglichen Bewegungskonfigurationsdatei anzeigen

    daemon off
    process_id_file /var/run/motion/motion.pid
    setup_mode off

    # Устройство, с которого осуществляется захват
    videodevice /dev/video0

    v4l2_palette 8
    input 8
    norm 0
    frequency 0
    rotate 0

    # Ширина снимков с камеры
    width 320

    # Высота снимков с камеры
    height 240

    framerate 2
    minimum_frame_time 0
    netcam_tolerant_check off
    auto_brightness off
    brightness 0
    contrast 0
    saturation 0
    hue 0

    roundrobin_frames 1
    roundrobin_skip 1
    switchfilter off

    threshold 1500
    threshold_tune off
    noise_level 32
    noise_tune on
    despeckle EedDl
    smart_mask_speed 0
    lightswitch 0
    minimum_motion_frames 1
    pre_capture 0
    post_capture 0
    gap 60
    max_mpeg_time 0
    output_all off

    output_normal off
    output_motion off

    # Качество снимков
    quality 50
    ppm off

    ffmpeg_cap_new off
    ffmpeg_cap_motion off
    ffmpeg_timelapse 0
    ffmpeg_timelapse_mode daily
    ffmpeg_bps 500000
    ffmpeg_variable_bitrate 0
    ffmpeg_video_codec swf
    ffmpeg_deinterlace off

    # Делаем снимок раз в секунду
    snapshot_interval 1

    locate off

    # Текст в правом нижнем углу снимка. В данном случае - время
    text_right %Y-%m-%d\n%T-%q

    # Текст в левом нижнем углу
    text_left CAMERA %t

    text_changes off
    text_event %Y%m%d%H%M%S

    # Удваиваем размер текста на снимке
    text_double on

    # Куда сохраняем
    target_dir /opt/data/current/video0

    # Сохраняем снимок под именем camera.jpg (файл будет перезаписываться раз в секунду)
    snapshot_filename camera

    jpeg_filename camera
    movie_filename %v-%Y%m%d%H%M%S
    timelapse_filename %Y%m%d-timelapse

    # Выключаем встроенный веб-сервис, нам не нужен
    webcam_port 0
    webcam_quality 50
    webcam_motion off
    webcam_maxrate 1
    webcam_localhost on
    webcam_limit 0

    control_port 0
    control_localhost on
    control_html_output on

    track_type 0
    track_auto off
    track_motorx 0
    track_motory 0
    track_maxx 0
    track_maxy 0
    track_iomojo_id 0
    track_step_angle_x 10
    track_step_angle_y 10
    track_move_wait 10
    track_speed 255
    track_stepsize 40

    quiet on

    sql_log_image off
    sql_log_snapshot on
    sql_log_mpeg off
    sql_log_timelapse off
    sql_query insert into security(camera, filename, frame, file_type, time_stamp, event_time_stamp) values('%t', '%f', '%q', '%n', '%Y-%m-%d %T', '%C')

    ; mysql_db db
    ; mysql_host localhost
    ; mysql_user user
    ; mysql_password password

    # У меня есть еще 3 камеры ;)
    thread /etc/motion/thread1.conf
    thread /etc/motion/thread2.conf
    thread /etc/motion/thread3.conf





    videodevice /dev/video1
    text_left CAMERA 2
    target_dir /opt/data/current/video1




    . Es ist sehr detailliert beschrieben. Änderungen gegenüber der ursprünglichen Konfigurationsdatei sind mit meinen Kommentaren versehen.

    Jetzt müssen wir die notwendigen Verzeichnisse erstellen und die Funktionsfähigkeit der Konfiguration überprüfen: Gehen Sie nacheinander zu unseren Kameraordnern und sehen Sie sich die camera.jpg- Dateien an . Wenn alles richtig gemacht ist, werden wir verschiedene Bilder von unseren Kameras sehen.

    nix@nix-boss:~$ mkdir /opt/data/current/video0 (и далее)
    nix@nix-boss:~$ sudo motion -c /etc/motion/motion.conf




    Total



    In diesem Artikel haben wir gelernt, wie Bilder von unseren Kameras empfangen und einmal pro Sekunde in separaten Verzeichnissen als Bild gespeichert werden.

    Im nächsten Teil werde ich darüber sprechen, wie man dem System beibringt, Sprache zu synthetisieren und uns zu verstehen.
    Vielen Dank für Ihre Aufmerksamkeit;)

    UPD: Teil 3

    Jetzt auch beliebt: