NEWS
Einbindung (IP) Kamera über "Motion"
-
Okay, zum Thema motion 4.0.1 sind wir schon einmal gleich vorgegangen…
Jetzt muss ich mich noch mal an den Rest machen. Verstehe ich das richtig, dass die Pipeline den Stream von der Kamera auf /dev/video0 umleitet, ich den netcam_url also wieder auskommentiere?
-
> Verstehe ich das richtig, dass die Pipeline den Stream von der Kamera auf /dev/video0 umleitet, ich den netcam_url also wieder auskommentiere
Ja, genau. Für motion (und alle anderen programme die v4l nutzen) sieht das dann wie ein lokales device aus.
-
Was bisher geschah:
Installation von motion:
sudo bash apt-get install autoconf automake build-essential git libtool libjpeg8-dev libzip-dev libavformat-dev libavcodec-dev libavutil-dev libav-tools libswscale-dev libavdevice-dev cd / git clone https://github.com/Motion-Project/motion.git cd motion autoreconf -fiv ./configure make make install && ldconfig
dann noch die Konfiguration kopieren und bearbeiten:
sudo bash cp /usr/local/etc/motion/motion-dist.conf /usr/local/etc/motion/motion.conf nano /usr/local/etc/motion/motion.conf
/dev/video0 verwenden
Ports so einstellen, dass es keine Kollision mit ioBroker gibt
webcontrol_html_output auf "off"
…
motion muss auch noch gestartet werden:
sudo motion
` > 1.) Gstreaner 1.0 + plugins installieren.
2.)v4l2loopback (dkms) installieren
3.)v4l2loopback laden (modprobe…)
4.)gstreamer pipeline starten
5.)Motion configurieren das /dev/video0 verwendet wird `
zu 1.)
sudo bash apt-get install gstreamer1.0-tools apt-get install gstreamer1.0-plugins apt-get install gstreamer1.0-omx
zu 2.)
Über apt-get install … bekommt man die Version 0.8, die mit der aktuellen Version von Jessie/ Firmware nicht kompatibel ist, daher:
sudo bash apt-get install raspberrypi-kernel-headers cd / git clone https://github.com/umlaeute/v4l2loopback cd v4l2loopback make && sudo make install
zu 3.)
modprobe v4l2loopback
zu 4.)
/usr/bin/gst-launch-1.0 rtspsrc location=rtsp://192.168.0.9 ! rtph264depay ! h264parse ! omxh264dec ! videoconvert ! tee ! v4l2sink device=/dev/video0
Und siehe da, es geht. Motion belastet die CPU jetzt mit ca 44% aber wenn Bewegung erkannt wird geht die Belastung hoch auf 99%. Die Verzögerungszeit ist ca. 5 Sek. Hast du eine Idee, wo man noch tunen kann? Die Kamera liefert schnelle Bilder, das sehe ich am PC mit iSpy.
zu 5.)
siehe "Installation von motion" oben
Denn Autostart via systemd musst du noch beisteuern. Passt sonst alles?
-
Hey, du bist ja richtig schnell…
Prima, dass es funktioniert.
Hier die Service Files:
cat /etc/systemd/system/gstreamer.service [Unit] Description=Launch and monitor Gstreamer Pipeline [Service] ExecStart=/usr/bin/gst-launch-1.0 rtspsrc location=rtsp://192.168..:8001/ch01.264 ! rtph264depay ! h264parse ! omxh264dec ! videoconvert ! tee ! v4l2sink device=/dev/video0 Restart=always [Install] WantedBy=multi-user.target
und
cat /etc/systemd/system/motion.service [Unit] Description=Motion Daemon [Service] Type=forking PIDFile=/var/run/motion/motion.pid ExecStart=/usr/bin/motion -c /etc/motion/motion.conf Restart=on-failure Requires=gstreamer.service [Install] RequiredBy=gstreamer.service
Ich kümmere mich grade um den "nur eine cam bug".
Gruß
Martin
ps.:
Die erste Zeile mit dem "cat" gehört natürlich nicht in die Files. Habs nur stehe gelassen, damit du weist wohin du die Files packen musst. Die Pipeline im gstreamer.service file musst du natürlich auch anpassen.
-
Habe das ganze jetzt einmal auf einem Pi2 installiert - nur motion und v4l, sonst nichts (die Anleitung oben funktioniert also…). Da ist die Videowiedergabe noch langsamer, als beim Pi3, auf dem noch parallel SQL und ioBroker läuft. Ist sichergestellt, dass die GPU verwendet wird oder macht hier alles die CPU? Kann man das irgendwie prüfen?
-
Naja, es wird halt nur das h264 decoding auf der gpu gemacht. Die eigentliche Bewegungserkennung ist cpu. Du könntest ja mal testweise in der gstreamer pipeline einen anderen h264 decoder verwenden. Z.B.: x264dec Da x264dec auf der cpu decodiert. Leider kommt man nicht so ohne weiteres an die Auslastung des entsprechenden gpu subsystems. (There are no tools I am aware of to monitor H264 block utilisation.) Was ist den langsam? Der mjpeg stream? Hast du dir den mal mit vlc angesehen? Leider steht mein pi ca. 70km von meiner aktuellen positon entfernt. Daher kann ich keine zuverlässige tests durchführen. Die Bandbreite (upstream) würde da reinpfuschen. Ich meine aber, dass ich bei 720p ca. 15-20 frames bei ca. 2-5 Sekunden Latenz hatte. (Pi2) Es sah erstaunlich flüssig aus…
-
Beim rtsp Stream auf dem PC (VLC) habe ich eine Latenz-Zeit deutlich kleiner als eine Sekunde, im Browser, wenn ich auf den Pi schaue, von ca. 4-5 Sekunden. Framerate im VLC ist auch deutlich höher.
Ich habe mir jetzt mal noch nen Pi 3 bestellt, mal schaun, wie's da dann aussieht, wenn er nur mit der Kamera beschäftigt ist. Wie sieht's mit dem Adapter aus? Kann ich im Moment irgendetwas zur Unterstützung tun?
-
Hmmm. Ich meinte nicht die Latenz cam->vlc, sondern die Latenz motion-mjpeg-stream->vlc. Also die Url des motion http streams in vlc. (Um den browser-player als Ursache auszuschließen.) falls du x11 auf dem pi hast, könntest du auch direkt mal mit vlc /dev/video0 testen. (Um gstreamer h264 decoding als Ursache auszuschließen.) Ich denke cam -> vlc (also direkt rtsp über vlc) markiert die minimale Latenz. (Weniger geht nicht.)
-
Ok, ich habe mal was gegen den "one cam bug" getan. Bitte mal den file "motion.js" aus dem git ziehen und damit die bestehende ersetzen.
-
Bald gibt's hier ein Update mit Tutorial, wie jede Billig-IP-Kamera in ioBroker eingebunden werden kann - rtsp ist Voraussetzung, das kann aber so ziemlich jede Kamera, wie es scheint.
Damit ist es auch möglich, Bilder auf's Handy geschickt zu bekommen, obwohl die Kamera keinen URL für Snapshots "versteht".
Stay tuned…
-
Bald gibt's hier ein Update mit Tutorial, wie jede Billig-IP-Kamera in ioBroker eingebunden werden kann - rtsp ist Voraussetzung, das kann aber so ziemlich jede Kamera, wie es scheint.
Damit ist es auch möglich, Bilder auf's Handy geschickt zu bekommen, obwohl die Kamera keinen URL für Snapshots "versteht".
Stay tuned… `
Hi,
bin auf der Suche nach einer ähnlichen Anbindung.
Kannst du schon sagen wann das Tutorial ungefähr fertig sein wird?
Mfg
-
Über's verlängerte Wochenende jetzt sollte ich fertig werden.
-
Über's verlängerte Wochenende jetzt sollte ich fertig werden. `
Ohne irgendeine Art von Druck erzeugen zu wollen, einfach weil ich ne Lösung suche…. Gibt es da ne Zeitschiene? :oops: -
Gibt's seit Ende Mai:
http://forum.iobroker.net/viewtopic.php … 900#p68900
Kannst dich gleich mal zum Thema v4l2loopback einbringen…
-
Hallo,
ich bekomme den Motion Adapter nicht zum laufen.
In den Adaptern habe ich ihn hinzugefügt, in den Instanzen auch und konfiguriert, aber in den Objekten legt er nix an. kann das am Admin 3.x Adapter hängen.
Wenn ich was von der Konsole schicke:
echo {"event": "on_motion_detected", "thread": 3, "timestamp": "1520863657", "noiselevel": 15} | /bin/netcat 192.168.1.138 6666
bekomme ich im Broker:
motion.0 2018-03-13 07:42:26.799 error at TCP.onread (net.js:547:20)
motion.0 2018-03-13 07:42:26.799 error at Socket.Readable.push (_stream_readable.js:134:10)
motion.0 2018-03-13 07:42:26.799 error at readableAddChunk (_stream_readable.js:176:18)
motion.0 2018-03-13 07:42:26.799 error at Socket.emit (events.js:188:7)
motion.0 2018-03-13 07:42:26.799 error at emitOne (events.js:96:13)
motion.0 2018-03-13 07:42:26.799 error at Socket. (/opt/iobroker/node_modules/iobroker.motion/lib/motion_helper.js:66:29)
motion.0 2018-03-13 07:42:26.799 error at EventEmitter.emit (events.js:188:7)
motion.0 2018-03-13 07:42:26.799 error at emitOne (events.js:96:13)
motion.0 2018-03-13 07:42:26.799 error at EventEmitter. (/opt/iobroker/node_modules/iobroker.motion/motion.js:150:27)
motion.0 2018-03-13 07:42:26.799 error at Object.parse (native)
motion.0 2018-03-13 07:42:26.799 error SyntaxError: Unexpected token e in JSON at position 1
motion.0 2018-03-13 07:42:26.796 error uncaught exception: Unexpected token e in JSON at position 1
Wie gesagt in den Objekten gibt es nix mit motion.
Wer kann mir helfen?
Danke und viele Grüße
Marcel Jaud
-
Hallo,
ich bekomme den Motion Adapter nicht zum laufen.
In den Adaptern habe ich ihn hinzugefügt, in den Instanzen auch und konfiguriert, aber in den Objekten legt er nix an. kann das am Admin 3.x Adapter hängen.
Wenn ich was von der Konsole schicke:
echo {"event": "on_motion_detected", "thread": 3, "timestamp": "1520863657", "noiselevel": 15} | /bin/netcat 192.168.1.138 6666
bekomme ich im Broker:
motion.0 2018-03-13 07:42:26.799 error at TCP.onread (net.js:547:20)
motion.0 2018-03-13 07:42:26.799 error at Socket.Readable.push (_stream_readable.js:134:10)
motion.0 2018-03-13 07:42:26.799 error at readableAddChunk (_stream_readable.js:176:18)
motion.0 2018-03-13 07:42:26.799 error at Socket.emit (events.js:188:7)
motion.0 2018-03-13 07:42:26.799 error at emitOne (events.js:96:13)
motion.0 2018-03-13 07:42:26.799 error at Socket. (/opt/iobroker/node_modules/iobroker.motion/lib/motion_helper.js:66:29)
motion.0 2018-03-13 07:42:26.799 error at EventEmitter.emit (events.js:188:7)
motion.0 2018-03-13 07:42:26.799 error at emitOne (events.js:96:13)
motion.0 2018-03-13 07:42:26.799 error at EventEmitter. (/opt/iobroker/node_modules/iobroker.motion/motion.js:150:27)
motion.0 2018-03-13 07:42:26.799 error at Object.parse (native)
motion.0 2018-03-13 07:42:26.799 error SyntaxError: Unexpected token e in JSON at position 1
motion.0 2018-03-13 07:42:26.796 error uncaught exception: Unexpected token e in JSON at position 1
Wie gesagt in den Objekten gibt es nix mit motion.
Wer kann mir helfen?
Danke und viele Grüße
Marcel Jaud `
Ich habe mich nun wieder mit dem Adapter motion beschäftigt und habe ihn nun am LaufenDen Motion-Adapter hast du in den grünen Status bekommen?
Mein Test-System:
Pi3
Admin 3.3.3
node 6.3.1
npm 3.10.10
Ich habe eine ganz einfache Installation durchgeführt, ohne gstreamer und v4l2loopback.
Auf dem Pi3 habe ioBroker und motion am Laufen. Motion braucht 10% von der CPU. Nun kann ich testen…
-
Hallo @lobomau, Hallo zusmammen,
bin neu hier im Forum und möchte meine Foscam FI9901EP mittels motion in VIS einbinden.
Habe bisher einige Views angelegt, Navigation, etc. und nun wäre video dran.
Zur Vorgeschichte:
Mit der SW von Foscam habe ich diese bereits am laufen, Bewegungen werden registriert und auf einem
USB Stick an meinem Router (Speedport) gespeichert (Video und Foto). Diesen habe ich als FTP-Server in
der SW von Foscam angelegt (USB-Stick ist dann ein Laufwerk in meinem Netz) Hier würde ich dann auch
gerne von iobroker aus speichern wollen. Live Video stream habe ich auch mal zur Übung mit VLC eingerichtet
(rtsp://admin:password@192.168.2.XXX:88/videoMain) und läuft.
Da ich die Kamera nun aber über iobroker laufen lassen möchte, bei erkannter Bewegung dann zudem
auch Licht oder was anderes schalten möchte, meine Frage wie ich die Foscam am besten über motion in VIS
einbinden kann.
Und ja, ich habe hier im Forum schon sehr viel darüber gelesen, auch eine Anleitung wie hier beschrieben
mit v4l2loopback u.s.w. Das führte am Ende zu einer Neuinstallation da ich das mit der Einbindung eines
USB Stick am PI nicht hinbekam (hängte sich am Ende auf und ich kam nicht mehr rein)
Habe aktuell motion 4.0 (über die Konsole hochgeladen) weil in iobroker mir trotz mehrfacher Versuche
nur eine version 0.0.1 angeboten wird. Höher kriege ich das nur über die Konsole hin. Mache ich da was falsch ?
Weiterhin Admin 3.3.5, node 6.14.1, npm 3.10.10
Habe zwischendurch mal versucht mittels http bzw. rtsp und bekannten widgets (z.B. CAM/Snapshot, …)
das video in VIS einzubinden. Leider kläglich gescheitert, war echt frustrierend. Sicher mache ich hier einen
einfachen Fehler, komme aber einfach nicht drauf.
Wäre schön hier etwas Hilfe zu bekommen.
Viele Grüße
Rainer
-
Hallo Rainer,
direkte Einbindung von rtsp Streams in VIS habe ich nicht verwirklicht bekommen.
Http Streams liefen aber mit VIS.
Versuche mal ob deine Cam auch http kann, wäre einfacher.
Meine rtsp Streams laufen bei mir über Motion auch mit VIS.
Im Prinzip rufe ich per VIS per http meinen Raspi mit motion auf mit http://IP:Port.
Dieser Port verbindet dann mit Motion , der die Cam mit dem rtsp Stream aufruft.
In motion müssen erst die Dateien angepasst werden.
Liegt bei mir unter etc/motion.
Dies sind die motion.conf und die camera1-dist.conf.
Einfacher geht es per http.
Http Stream teste am besten mit Mozilla oder so, kein IE.
Der VLC ist weniger geeignet da er so ziemlich alles an Syntax nimmt.
Gut fürs abspielen, weniger geeignet um Streams zu testen.
Syntax ist meist:
http://User:PW@CamIP:Port/bla bla
oder ohne PW
http://CamIP:Port/blabla
Dieses wäre zu testen:
https://www.ispyconnect.com/man.aspx?n=foscam
Gruß Ralf
-
Hallo Ralf,
super danke für die Infos. Werde mich weiter rein arbeiten und mit http testen.
Motion habe ich installiert doch da komme ich mit den Angaben in der motion.config schon ins
schleudern. Ganz abgesehen von der camera1-dist.conf, die habe ich noch garnicht auf dem Schirm
gehabt. Habe was das angeht keine Programmierkenntnisse und bin auch erst seid ca. 2 Wochen
mit iobroker etwas tiefer in diese Welt eingestiegen aber super spannend. Vorher TV ambilight
mit Pi3, Hyperion und libreELEC erstellt. Das war aber gefühlt Pipifax gegen das hier. Lese mich
halt so durch und probiere. Daher nochmal Danke für deine Tips. Wenn Du noch einen Thread parat
hast, wo das von Dir genannte weiter beschrieben wird bzw. wo Du dir deine Anregungen/Infos
geholt hast, immer gerne.
Gruß
Rainer
-
Hallo Rainer,
da hast du aber viel vor. Ja die Einstellung ist schon heavy.
Kleine Starthilfe.
In der motion.conf setzt du deamon auf on.
Ganz am Ende steht:
Remember: If you have more than one camera you must have one
camera file for each camera. E.g. 2 cameras requires 3 files:
This motion.conf file AND camera1.conf and camera2.conf.
Only put the options that are unique to each camera in the
camera config files.
camera /etc/motion/camera1-dist.conf
camera /etc/motion/camera2-dist.conf
; camera /etc/motion/camera3.conf
; camera /etc/motion/camera4.conf
Hier achte darauf das vor camera /etc/motion/camera1-dist.conf kein " ; " steht.
Sonst wird die Datei nicht aufgerufen.
In der camera1-dist.conf änderst du:
Zeile 23 User:PW deine Config
Zeile 33 Deine Cam IP nicht die vom Rasp
Zeile 85 Port ist 8085 des Raspberry
Dann sollte die Cam per http://RaspIP:8085 erreichbar sein.
Den Adapter nutze ich nicht.
Noch einfacher geht es wenn du http der Camera direkt in Vis einbindest.
Gruß Ralf
! # /etc/motion/camera1.conf
! #
! # This config file was generated by motion 4.0
! ###########################################################
! # Capture device options
! ############################################################
! # Camera Id
! # Consistent identification number to assign to each camera across multiple
! # invocations of Motion.
! # Default: The order when the camera file was read
! # camera_id = 1
! # Set the authentication method (default: 0)
! # 0 = disabled
! # 1 = Basic authentication
! # 2 = MD5 digest (the safer authentication)
! stream_auth_method 1
! # Authentication for the stream. Syntax username:password
! # Default: not defined (Disabled)
! stream_authentication User:PW
! # Username and password for network camera (only if required). Default: not defined
! # Syntax is user:password
! ; netcam_userpass value
! # Videodevice to be used for capturing (default /dev/video0)
! # for FreeBSD default is /dev/bktr0
! # videodevice /dev/video0
! # netcam_url http://192.168.2.xxx:xxxx/cgi-bin/hi3510/snap.cgi?&-getstream
! netcam_url rtsp://User:PW@192.168.2.xxx:xxxx/11
! # Image width (pixels). Valid range: Camera dependent, default: 640
! width 1280
! # Image height (pixels). Valid range: Camera dependent, default: 480
! height 720
! # The video input to be used (default: -1)
! # Should normally be set to 1 for video/TV cards, and -1 for USB cameras
! input -1
! # Draw a user defined text on the images using same options as C function strftime(3)
! # Default: Not defined = no text
! # Text is placed in lower left corner
! text_left CAMERA 1
! ############################################################
! # Target Directories and filenames For Images And Films
! # For the options snapshot_, picture_, mpeg_ and timelapse_filename
! # you can use conversion specifiers
! # %Y = year, %m = month, %d = date,
! # %H = hour, %M = minute, %S = second,
! # %v = event, %q = frame number, %t = camera id number,
! # %D = changed pixels, %N = noise level,
! # %i and %J = width and height of motion area,
! # %K and %L = X and Y coordinates of motion center
! # %C = value defined by text_event
! # Quotation marks round string are allowed.
! ############################################################
! # Target base directory for pictures and films
! # Recommended to use absolute patch. (Default: current working directory)
! #target_dir /tmp/motion/cam1
! # File path for motion triggered images (jpeg or ppm) relative to target_dir
! # Default: %v-%Y%m%d%H%M%S-%q
! # Default value is equivalent to legacy oldlayout option
! # For Motion 3.0 compatible mode choose: %Y/%m/%d/%H/%M/%S-%q
! # File extension .jpg or .ppm is automatically added so do not include this
! # Set to 'preview' together with best-preview feature enables special naming
! # convention for preview shots. See motion guide for details
! picture_filename CAM1_%v-%d%m%Y%H%M%S-%q
! ############################################################
! # Live Stream Server
! ############################################################
! # The mini-http server listens to this port for requests (default: 0 = disabled)
! stream_port 8085
! # Command to be executed when a picture (.ppm|.jpg) is saved (default: none)
! # The filename of the picture is appended as an argument for the command.
! #on_picture_save /usr/local/motion-extras/camparse2.pl
! # Command to be executed when a movie file (.mpg|.avi) is closed. (default: none)
! # Filename of movie is appended as an argument for the command.
! #on_movie_end /usr/local/motion-extras/mpegparse2.pl
5230_unbenannt.jpg