Metainformationen zur Seite
Dies ist eine alte Version des Dokuments!
Plugin-Daten | |
---|---|
Autor | Michael Schlenstedt |
Logo | ![]() |
Status | STABLE |
Version | 1.0.0 |
Min. LB Version | 3.0.0.1 |
Release Download | https://github.com/mschlenstedt/LoxBerry-Plugin-MotionEye/archive/refs/tags/loxberry-plugin-motioneye-1.0.0.zip |
Beschreibung | Das MotionEye Plugin macht den LoxBerry zum Kamera Surveillance System - inkl. Bewegungserkennung und Aufzeichnung. Alle Videostreams werden als MJPEG-Stream zur Verfügung gestellt. |
Sprachen | EN |
Diskussion | https://www.loxforum.com/forum/projektforen/loxberry/plugins/331116-plugin-motioneye-kamera-surveillance-system-f%C3%BCr-den-loxberry |
MotionEye Plugin
Aufgabe des Plugins
Das MotionEye Plugin installiert die Software MotionEye auf dem LoxBerry. Damit wird er zum vollwertigen Kamera Surveillance System. Zudem konvertiert die Software beliebige Kamera-/Video-Streams in MJPEG-Streams um, sodass auch Kameras, die kein MJPEG bieten, mit dem Türsteuerungsbaustein verwendet werden können. Die Konvertierung übernimmt dabei die Software ffmpeg. Ffmpeg kann so ziemlich alle gängigen Codecs und Videoformate decodieren.
MotionEye bietet dabei folgende Features:
- kompatibel mit den meisten USB Kameras und dem Raspberry PI Kamera Modul
- Support für IP (network) Kameras
- Motion Detection mit Email Notifications, Zeitplan und Schalten von virtuellen Eingängen am Miniserver
- Aufzeichnung bei Ereignis oder permanent, JPEG Dateien für Images, AVI/MP4 Dateien für Videos
- Aufzeichnung aus Loxone heraus starten (zum Beispiel per Bewegungsmelder)
- Uploading zu Google Drive und Dropbox sowie auf externe Datenträger und Netzwerk-Shares
Einige Worte zur Systemauslastung... Lesen!
Ernstgemeinte Warnung!
Die Verarbeitung von Videostreams benötigt erhebliche Systemressourcen. Voraussetzung für eine vernünftige Nutzung ist ein Raspberry Pi 4 mit großem Kühlkörper und eventuell einem Lüfter. Zudem muss ein gutes, leistungsstarkes Netzteil verwendet werden. Handy-Ladegeräte sind keine Netzteile! Wieviele Videostreams gleichzeitig verarbeitet werden können, hängt zudem auch von der Auflösung, Bitrate und Frames/s der Streams ab.
MotionEye kann technisch gesehen mehr oder weniger jeden Stream in jeder Qualität in einen MJPEG-Stream wandeln, Bewegung auswerten, aufzeichnen. Und das auch für beliebig viele Kameras. Aber die Hardware begrenzt die Möglichkeiten stark! Die Konvertierung eines Videostreams benötigt sehr viel CPU-Last - je höher die Qualität des Streams ist (Auflösung, Frames/s,, Bitrate), desto höher sind die Anforderungen an die Hardware.
Soll der Stream konvertiert werden (z. B. aus einem H.264 Stream), gilt es als ersten Schritt die Videoqualität in der Kamera so gering wie nur irgendwie möglich einzustellen. Man sollte die Videogröße und die Bitrate soweit herunternehmen, bis das Bild gerade noch akzeptabel ist. Diesen Stream dann in MotionEye konvertieren.
Am Besten werden überhaupt keine Streams konvertiert. Aktiviert wenn möglich den MJPEG-Stream in der Kamera und lasst ihn von MotionEye nur re-streamen für die Türsteuerungsbausteine in Loxone. Das verbraucht sehr geringe Ressourcen.
Wenn ihr H264 Streams von der Kamera verarbeiten wollt, verzichtet auf eine Konvertierung in MotionEye!
Verzichtet auf die Bewegungserkennung wenn möglich! Diese verbraucht "gigantische" Ressourcen und lässt sich sinnvoll nur in einer VM nutzen. Aber selbst dann sind die Ergebnisse eher ernüchternd… Nutzt wenn irgendwie möglich die Bewegungserkennung in eurer Kamera und triggert dann über HTTP z. B. einen Virtuellen Eingang in Loxone.
Nachdem man die Kameras in MotionEye aktiviert hat, sollte man die CPU-Auslastung und die CPU-Temperatur des LoxBerrys kontrollieren. Schließt dazu MotionExe im Browser (die Webseite verbraucht durch die Anzeige viele Ressourcen), öffnet dann das Terminal Widget und startet im Terminal "htop":
Achtet hier auf die CPU- und Speicherauslastung. Beobachtet auch die Load Average. Die drei Werte bedeuten: Aktuelle Auslastung, 5-Minuten-Duchschnitt, 15-Minuten-Durchschnitt. Ist die Loadaverage gleich der CPU-Anzahl, habt ihr eine Vollauslastung des Systems (100%). Ist sie kleiner, haben die CPUs noch Reserve. Ist die Load Average größer als die Anzahl der CPUs, schaffen die CPUs es nicht alle Anfragen in der gewünschten Zeit zu verarbeiten. Im Screenshot ist die Load Average ungefähr 2 und der Raspberry 4 hat 4 CPU Kerne. Das bedeutet eine Auslastung von 50%.
Download
- Das Plugin-Archiv (ZIP) kann auf GIT-Hub heruntergeladen werden: https://github.com/mschlenstedt/LoxBerry-Plugin-MotionEye/releases
- Der Sourcecode ist auf GitHub verfügbar: https://github.com/mschlenstedt/LoxBerry-Plugin-MotionEye
Fehlerberichte
Fehlerberichte bitte direkt im Repository auf GitHub melden.
Konfigurationsoptionen
Das Plugin bietet keine Konfigurationsoptionen an. Sämtliche Einstellungen werden in MotionEye durchgeführt.
Für eine Erklärung sämtlicher Optionen empfehle ich Euch die entsprechenden Tutorials auf YouTube: https://www.youtube.com/results?search_query=MotionEye
Erkannte Bewegung an Loxone melden
Warnung
Die softwareseitige Bewegungserkennung benötigt extrem hohe Systemleistung. Ich empfehle dringend dieses Feature nicht zu nutzen!
Neben den Aktionen, die innerhalb von MotionEye konfiguriert werden können, wenn von der Kamera eine Bewegung erkannt wurde, kann auch eine externe Webseite bei Bewegungserkennung aufgerufen werden. So ist es möglich in Loxone einen virtuellen Eingang bei Bewegungserkennung zu schalten und so weitere Aktionen in LoxoneConfig zu programmieren (Licht an z. B.).
Dazu gebt ihr in MotionEye in der Kamerakonfiguration unter "Motion Notifications" eine sogenannte Web Hook URL an. Diese schaltet den Virtuellen Eingang innerhalb von Loxone. Bitte schaut in die Doku von Loxone bzw. ins Wiki, wie sich die URLs zusammensetzen: REST Webservice oder https://www.loxone.com/dede/kb/webservices/
Eine URL für den Eingang/Baustein "kamera_garten" sieht z. B. so aus (Impuls): http://LOXONE_USER:LOXONE_PASSWORT@IP_MINISERVER/dev/sps/io/kamera_garten/Impulse
Kamera Streams auf externem Datenträger/Netzwerkshare speichern
Ich empfehle dringend, die Streams ausschließlich auf einer SSD per USB oder per Netzwerk-Share auf einem NAS zu speichern. Nutzt auf keinen Fall die SD-Karte, auch ein USB-Stick kann permanente Speichervorgänge nicht dauerhaft verkraften.
Richtet zunächst im LoxBerry euer Netzwerkshare oder aber einen externen Datenträger über das Netshares- oder USB Storage-Widget ein: Widget Netshares oder Widget USB Storages
Im System werden sowohl die Netzwerkshares als auch die USB Datenträger unter dem Pfad /opt/loxberry/system/storage/usb/NAME
bzw. /opt/loxberry/system/storage/smb/NAME
eingebunden. Wenn ihr im Widget auf "Browse" geht, seht ihr den exakten Pfad. Der Pfad zu eurem Datenträger oder Netzwerkshare muss nun in MotionEye unter "Filestorage" als "Custom Path" eingetragen werden:
Achtung! Standardmäßig ist hier das Datenverzeichnis des Plugins auf eurer SD-Karte vorausgewählt. Ich empfehle Euch dringend keine großen Datenmengen permanent auf der SD-Karte zu speichern! Die Speicherkarte könnte dadurch Schaden nehmen.
Aufnahme per Loxone starten
Mit Version 1.0.1 des Plugins können aus Loxone heraus Video- oder Fotoaufnahmen getriggert werden. So kann z. B. bei erkannter Bewegung über einen Bewegungsmelder die Aufzeichnung des Bildes für X Minuten gestartet werden.
Zunächst legt ihr einen passenden Pfad an, unter dem die Aufnahmen abgelegt werden sollen, siehe Kapitel oben.
Movies
Wenn ihr Videoaufnahmen per Trigger speichern wollt, aktiviert ihr die Sektion "Movies":
Es empfiehlt sich hier, Movie Passthrough
zu aktivieren. Damit wird das Kamerabild 1:1 ohne irgendwelche Konvertierung in ein MP4-File geschrieben. Das benötigt die geringsten Systemressourcen. Als Recording Mode
wählt ihr Motion Triggered
. Legt nun noch fest, wie lange die Aufnahmen gespeichert werden sollen. Nach dieser Zeit wird die Aufnahme automatisch gelöscht. Die Sektion "Motion Detection" weiter unten in den MotionEye-Einstellungen muss nicht aktiviert werden!
Still Images
Wenn ihr lediglich ein oder mehrere Standbilder per Trigger speichern wollt, aktiviert ihr die Sektion "Still Images":
Als Capture Mode
wählt ihr Motion Triggered
oder Motion Triggered (One Picture)
. Bei Motion Triggered wird pro Sekunde ein Bild gespeichert, solange die Bewegungserkennung aktiv ist. Im anderen Fall wird nur ein Bild zu Beginn gespeichert. Legt nun noch fest, wie lange die Aufnahmen gespeichert werden sollen. Nach dieser Zeit wird die Aufnahme automatisch gelöscht. Die Sektion "Motion Detection" weiter unten in den MotionEye-Einstellungen muss nicht aktiviert werden!
Trigger über Loxone Config
In Loxone Config legt ihr Euch einen Virtuellen Ausgang an:
Die Adresse lautet: http://loxberry:passwort@<ip_loxberry>
, z. B. http://loxberry:passwort@192.168.3.28
. Die IP-Adresse, Username und Passwort müsst ihr natürlich wie immer anpassen. Unterhalb des virtuellen Ausgangs legt ihr nun einen Virtuellen Ausgang Befehl an:
Befehl bei EIN: /admin/plugins/motioneye/motion.cgi?cam=1&motion=1
Befehl bei AUS: /admin/plugins/motioneye/motion.cgi?cam=1&motion=0
Als Digitaleingang verwenden: Aktiviert
Der Parameter cam
enthält die Camera-ID, die ihr ansprechen wollt. Diese findet ihr in der MotionEye Weboberfläche in der Sektion "Video Device". Mit motion=1
aktiviert ihr die Aufzeichnung, mit motion=0
stoppt ihr die Aufzeichnung wieder. In dem ihr vor den Ausgang eine Ausschaltverzögerung hängt, könnt ihr die Dauer der Aufzeichnung bei Bewegungserkennung anpassen:
Aufnahmen anschauen
Die Aufnahmen könnt ihr über die Weboberfläche von MotionEye erreichen und von dort auch direkt im Browser abspielen. Klickt dazu in der Weboberfläche auf das Picture- oder Play-Symbol. In der Übersicht lassen sich die Dateien auch herunterladen oder manuell löschen, zippen oder ein Timelapse Video erstellen.
Eine andere Alternative ist per Netzwerkfreigabe auf den LoxBerry zuzugreifen und die Dateien direkt zu öffnen bzw. zu kopieren. Dazu öffnet ihr ein Explorer-Fenster und gebt zwei Backslashe gefolgt von der IP eures LoxBerrys ein, z. B. \\192.168.3.28
. Wechselt in die loxberry
-Freigabe und geht in den Ordner \system\storage
. Dort findet ihr eure Netzwerkfreigaben oder USB-Geräte und könnt direkt auf die einzelnen Dateien zugreifen. Solltet ihr die Dateien im Datenverzeichnis des Plugins speichern, ist der Pfad \data\plugins\motioneye
.
Aufnahme per Mail versenden
Möchte man die Aufnahme automatisch per Mail versenden, so ist das ebenfalls möglich (z. B. das Kamerabild beim Klingeln direkt per Email versenden). Das empfiehlt sich aber nur für Bilder, Movies sind in aller Regel zu groß.
Konfiguriert Euch die Sektion "Still Images" so, dass nur ein Bild bei Bewegungserkennung gespeichert wird (Option Motion Triggered (One Picture)
) –> siehe oben. Nun aktiviert ihr in der Sektion "File Storage" die Option Run A Command
und gebt dort folgendes Kommando ein:
file %f | grep -q "JPEG" && printf "Hallo! \n\nEs hat um %H:%M geklingelt! Das Bild findest Du im Anhang. \n\nViele Grüße,\nDein MotionEye" | s-nail -a "%f" -s "Es hat geklingelt!" EURE@MAILADRESSE.net
Mailadresse und Text könnt/müsst ihr natürlich anpassen. Was macht das Kommando?
Immer wenn eine neue Datei erzeugt wird (also bei jeder erkannten Bewegung oder eben beim Drücken des Klingeltasters) wird das Kommando ausgeführt. Im Kommando kann man verschiedene Variablen verwenden (%f
beinhaltet z. B. den Dateipfad der erzeugten Datei). Zunächst wird am Anfang des Kommandos geprüft, ob es sich um eine JPG-Datei handelt. Nur wenn das der Fall ist, wird alles nach den beiden &-Zeichen ausgeführt. Mit printf
wird der Text der Email ausgegeben und an das Programm s-nail
übergeben. s-nail kann auf der Kommandozeile Emails erzeugen und versenden. Hier wird die Bilddatei angefügt, das Subject generiert und die ganze Email an die angegebene Adresse versendet.
Natürlich muss Euer Mailserver im LoxBerry Mail Widget dazu konfiguriert sein!
Multiview
Nur Kameras, für die das "Video Streaming" aktiviert wurde, erscheinen auch in der Multiview!
Das Plugin fügt jede Kamera, für die das Video Streaming aktiviert wurde, in eine simple Webseite ein, die über den Webage-Baustein in die Loxone Config integriert werden kann. So kann man sich mit einem Klick alle Kameras auf einen Blick aus der Loxone App heraus anschauen. Ein Klick auf das jeweilige Kamerabild öffnet den Kamerastream im Großformat.
LoxBerry als Überwachungskamera/Türkamera
Mit MotionEye könnt ihr sehr einfach einen LoxBerry zur Überwachungskamera oder Türkamera umbauen. Insbesondere mit dem Raspberry Kameramodul und einem Pi ZeroW kann man so eine sehr kompakte, stromsparende WLAN-Kamera aufbauen. Die Anleitung dazu findet ihr hier: LoxBerry als Überwachungskamera