NEWS
Einbindung (IP) Kamera über "Motion"
-
Hallo
danke für die Info. Ich bin zwar schon des öfteren über docker gestolpert, habe aber nie so richtig verstanden was das ist und was es da geht. War nirgendwo richtig beschriben. So eine kurzinfo oder ähnliches. Das motion für iobroker hört sich ja interessan an scheint aber nicht so einfach zu sein zum laufen zu bekommen vor allem die Bewegungserkennung. Da habe ich schon mit motioneye probleme das vernünftig hinzubekommen.
Gruß
werner
-
Problem gelöst :)
Die Bewegungserkennung in Motion kannst du mit folgendem Befehl deaktivieren/aktivieren
url = "http://192.168.xxx.xxx:8080/y/detection/pause"; req(url,function(error,response,body){ if(body){ log("Motion detection Cam2 abgeschalten"); } });Wobei die xxx durch die IP deines Motion-Servers und das y durch deine Kameranummer zu ersetzen sind. Aktivieren kannst du mit "start" anstelle von "pause".
Die Befehle kannst du übrigens leicht selbst herausfinden wenn du im Browser "ip.von.mot.ion:8080" aufrufst. Da gibt's noch viele Möglichkeiten… `
Hallo Thisoft,
inzwischen habe ich Motion auf meinem Rock installiert und es funktioniert auch. Leider klappt es mit dem aktivieren bzw. deaktivieren der Bewegungserkennung nicht. Wenn ich deinen Code (angepasst um IP, Cameranummer etc.) übernehme, bekomme ich folgenden Fehler im LOG:
! 2018-10-15 08:34:31.444 - info: javascript.0 Start javascript script.js.Alarmanlage.Motion_Satus_anpassen
! 2018-10-15 08:34:31.451 - error: javascript.0 script.js.Alarmanlage.Motion_Satus_anpassen: script.js.Alarmanlage.Motion_Satus_anpassen:3
! 2018-10-15 08:34:31.451 - error: javascript.0 req(url,function(error,response,body){
! 2018-10-15 08:34:31.452 - error: javascript.0 ^
! 2018-10-15 08:34:31.452 - error: javascript.0 ReferenceError: req is not defined
! 2018-10-15 08:34:31.453 - error: javascript.0 at script.js.Alarmanlage.Motion_Satus_anpassen:3:8
! 2018-10-15 08:34:31.453 - error: javascript.0 at ContextifyScript.Script.runInContext (vm.js:59:29)
! 2018-10-15 08:34:37.356 - info: javascript.0 Stop script script.js.Alarmanlage.Motion_Satus_anpassenFolgenden Code hatte ich genommen:
url = "http://192.168.2.50:8090/1/detection/pause"; req(url,function(error,response,body){ if(body){ log("Motion detection Cam2 abgeschalten"); } });Ich habe das nun versucht in Blockly (der Java Sprache bin ich nicht wirklich mächtig) nachzubauen, komme aber auch da nicht ans Ziel :(
Hier das Blockly, was ich gebastelt habe:
Code:
<xml xmlns="http://www.w3.org/1999/xhtml"><block type="request" id="=:wNO+w`+ubt;b^pb*iS" x="-162" y="63"><mutation with_statement="true"></mutation> <field name="WITH_STATEMENT">TRUE</field> <field name="LOG">log</field> <value name="URL"><shadow type="text" id="Uh2H:L{Jm2cHo5-g?h+2"><field name="TEXT">text</field></shadow> <block type="text" id="OKb+A0yg5cI@Yn`3.OUi"><field name="TEXT">192.168.2.50:8090/1/detection/pause</field></block></value> <statement name="STATEMENT"><block type="debug" id="3-*oZ[01:nGsA+H,m/3D"><field name="Severity">log</field> <value name="TEXT"><shadow type="text" id="QcmsZF{|bj=]g74FRk!P"><field name="TEXT">test</field></shadow> <block type="variables_get" id="kUCkB5qh?e%|;Y6Ud_KA"><field name="VAR">result</field></block></value></block></statement></block></xml>bzw. das Bild dazu ;)
!

Als Ergebnis bekomme ich immer nur "undefined" zurück und der Befehl wird nicht gesendet.
Hier der Auszug aus dem Log:
! 2018-10-15 08:39:12.772 - info: javascript.0 Start javascript script.js.Alarmanlage.Motion_Blockly
! 2018-10-15 08:39:12.779 - info: javascript.0 script.js.Alarmanlage.Motion_Blockly: undefined
! 2018-10-15 08:39:12.779 - info: javascript.0 script.js.Alarmanlage.Motion_Blockly: request: 192.168.2.50:8090/1/detection/pause
! 2018-10-15 08:39:12.779 - info: javascript.0 script.js.Alarmanlage.Motion_Blockly: registered 0 subscriptions and 0 schedulesWenn ich den Befehl im Browser (Safari/Chrome) eingebe, wird er gesendet und ich bekomme die Rückmeldung dass die Detection pausiert wurde.
Ich habe auch versucht vor die IP ein http:// zu setzen, dann kommt im Log der Error: Websocket hang up?!?
Hat jemand eine Idee, wo ich gerade meinen Knoten habe? Am liebsten ich könnte das in Blockly lösen, dann ich das in mein anderes Script mit einfließen lassen :)
Vielen Dank vorab!
Grüße
Matthias
EDIT: Lösung habe ich gefunden. Ich hatte in Motion für den Webzugriff einen Benutzernamen und Passwort angegeben. Nach der Herausnehme funktioniert das Blockly von mir einwandfrei, es muss vor der IP aber http:// stehen.
Grüße
Matthias
-
Hi,
versuche mich auch grade an MotionEye und Docker.
Hab über docker pull jshridha/motioneye:latest das Image geladen und dann probiert über docker run -d -p 80:80 jshridha/motioneye zu starten.
Komme dann aber auf keine Oberfläche.
Bin noch ganz neu im Docker Thema und hab da sicherlich noch einiges zu lernen. Wo bin ich hier ganz falsch unterwegs?
Ciao
Martin
-
Schau mal in Docker in deinem Motioneye Container bei bei Netzwerk, welcher Port angegeben ist. Ich habe bei der Installation selber Ports festgelegt und über die Firewall freigegeben. Meines Wissens wird für Motioneye der Port 8765 fest vergeben. Bin mir aber nicht sicher.
-
Schau mal in Docker in deinem Motioneye Container bei bei Netzwerk, welcher Port angegeben ist. Ich habe bei der Installation selber Ports festgelegt und über die Firewall freigegeben. Meines Wissens wird für Motioneye der Port 8765 fest vergeben. Bin mir aber nicht sicher.
Hi,
Hab motioneye auf einem rock64 mit 4GB laufen. Die letzten Tage hatte ich das Problem, das die Cpu Last von motion immer bei über 90% ist und der Rock damit heiß wird. Das ganze bei nur einer Kamera.Auflösung war 800×600, Qualität 75%
Hattet ihr das Problem auch schonmal?
Dachte da motioneye auch auf einem Pi läuft würde der Rock nicht mal zucken. -
Hallo,
ich möchte über meine Erfahrungen mit motioneyeOS berichten.
Nach einigen Monaten/Jahren mit XEOMA, zuletzt auf einem Odroid XU4, bin ich gestern auf motioneyeOS umgestiegen. Ich finde Xeoma schon eine gute Software, aber für meine Zwecke nicht geeignet (umständliche Einrichtung wegen Lizenzen zB nach Restore, Ressoucen hungrig, proprietäres Videoformat). Die kosten liegen bei 25€ für 4 Kameras für 2 oder 3 Jahre gratis Updates der Server/Clientsoftware. Hervorzuheben ist der ausgesprochen fachkundige und schnelle Support der Xeoma-Mitarbeiter (nur englisch und russisch). Wer einen größeren Server zu Hause hat oder ggf. kommerzielle Einrichtungen überwacht, sollte sich das mal ansehen (es gibt neben Webhooks und HTTP-Schaltern noch Besucherzähler, Kennzeichenerkennung, Raucherkennung, etc…)
Nach einem weiteren Absturz meines Odroids bin ich wegen Zeitmangels an der Neuinstallation gescheitert und habe mich deshalb an motioneye in der "Fertigvariante" als Image "motioneyeOS" gewagt. Ich war sofort angetan von der einfachen Installation und Einrichtung. Der Odroid soll auch keine anderen Aufgaben übernehmen, weshalb ich gern das fertige Image verwende. Mir war allerdings der zuschaltbare SSH-Zugang wichtig, da ich keine Eingabegeräte und keinen Bildschirm am Rechner angeschlossen habe (headless).
Ich nutze das Szenario: zwei IP-Kameras im Heimnetzwerk und den Odroid mit motioneye als Server. Evtl. werde ich noch einen Raspi+USB-Webcam einbinden.
Die Einrichtung der IP-Kameras war die größte Hürde. Man muss den URL des MJPEG- oder des RTSP-Streams herausfinden. Bei der Edimax ging das https://www.ispyconnect.com/man.aspx?n=Edimax, die andere Kamera ist ein chinesisches Billigteil mit ganz schlimmer Firmware. Ich habe der Kamera im Router den Zugang ins Internet verboten (man weiß ja nie). Den rtsp-Stream konnte ich schließlich https://mediola.answerbase.com/2338771/Floureon-bzw-PTZ-IP-Kamera-einbinden Tipp herausfinden. Die Einbindung des motioneye-Streams in VIS ist unproblematisch. Es werden sogar die bunten Rechtecke angezeigt, die motion um erkannte Bewegungen malt (auf Wunsch).
Über die Webhook-Funktion von motioneye ist die Auslösung von Aktionen in ioBroker möglich. Motioneye kann bei Events (zB Bewegung) einen URL aufrufen. Ich verwende GET, um über die SimpleAPI-Schnittstelle des Web-Adapters States in ioBroker zu setzen.
http://192.IP-IOBROKER:8082/set/javascript.0.Kamera.2.MOTION?value=true&prettyPrintEin ioBroker-Javascript setzt nach 10s mit setStateDelayed den State wieder auf false.
Aber nicht nur bei Bewegung sind Webhooks möglich. Mir haben es die https://github.com/ccrisan/motioneyeos/wiki/Action-Buttons angetan:

Eine https://github.com/ccrisan/motioneye/wiki/Action-Buttons#available-actions ist festgelegt. So kann man (leider etwas umständlich in der Einrichtung, läuft über bash-Skripte und curl-Aufrufe) zB durch einen Klick auf ein Logo im Kamerabild das Licht ein/ausschalten oder die Kamera ggf. schwenken.Ich lasse zB das Licht im jeweiligen Raum über eine Szene einschalten (Webhook > SimpleAPI > Szenenadapter). Ausserdem kann ich bis jetzt eine der Kameras schwenken oder auf eine Preset Position schicken. Dazu wird in einem Javascript der State überwacht, der vom Webbhook aus motioneye befüllt wird. Bei "up", "down", "left", "right" wird entsprechend wieder über request() im Skript ein Befehl an die Kamera geschickt.
Leider sind die Action in VIS nicht erreichbar/sichtbar, nur in der Bedienoberfläche von motioneye.
Die Testphase läuft noch, vielleicht mag der eine oder andere auch nochmal einen Blick auf die Software werfen. Ich finde gerade, wenn man mehrere Kameras verschiedener Hersteller hat, kann man so die Bedienung vereinheitlichen und vor allem irgendwelche P2P/Portfreigabe-Aktionen umgehen. Ich bin überzeugte VPNer. :D
Gruß
Pix
@pix kannst du mal deine bash-datei zeigen für die action buttons? Buttons habe ich, aber funktionieren nicht. Sieht bei mir so aus für "down_1-button":
#!/bin/bash URL="http://user:passwort@192.168.178.31/cgi-bin/hi3510/ptzdown.cgi" METHOD="GET" TIMEOUT="5" curl -X $METHOD --connect-timeout $TIMEOUT "$URL" > /dev/null -
Hi,
Hab motioneye auf einem rock64 mit 4GB laufen. Die letzten Tage hatte ich das Problem, das die Cpu Last von motion immer bei über 90% ist und der Rock damit heiß wird. Das ganze bei nur einer Kamera.Auflösung war 800×600, Qualität 75%
Hattet ihr das Problem auch schonmal?
Dachte da motioneye auch auf einem Pi läuft würde der Rock nicht mal zucken.@martinschm der Rock macht nichts anderes? Ich habe auch keine beseondere Hardware, aber einige VM laufen, darunter eine für motioneye mit 3 Cameras. Motioneye alleine zieht 15% CPU bei mir. Wieviele frame rates hast du? Ich habe nur 3 frames pro Sekunde.
-
@pix kannst du mal deine bash-datei zeigen für die action buttons? Buttons habe ich, aber funktionieren nicht. Sieht bei mir so aus für "down_1-button":
#!/bin/bash URL="http://user:passwort@192.168.178.31/cgi-bin/hi3510/ptzdown.cgi" METHOD="GET" TIMEOUT="5" curl -X $METHOD --connect-timeout $TIMEOUT "$URL" > /dev/null@lobomau Hallo,
habe mal versehentlich motioneyeOS per Weboberfläche upgedatet und damit zerschossen. Darf man nicht machen, nur über CLI. Deshalb habe ich alles neu aufsetzen müssen und dabei die Action Buttons nicht neu erstellt. Sie sind ja in VIS nicht sichtbar und daher doch eher uninteressant.
https://forum.iobroker.net/post/152954
Gruß
Pix -
@lobomau Hallo,
habe mal versehentlich motioneyeOS per Weboberfläche upgedatet und damit zerschossen. Darf man nicht machen, nur über CLI. Deshalb habe ich alles neu aufsetzen müssen und dabei die Action Buttons nicht neu erstellt. Sie sind ja in VIS nicht sichtbar und daher doch eher uninteressant.
https://forum.iobroker.net/post/152954
Gruß
Pix -
@martinschm der Rock macht nichts anderes? Ich habe auch keine beseondere Hardware, aber einige VM laufen, darunter eine für motioneye mit 3 Cameras. Motioneye alleine zieht 15% CPU bei mir. Wieviele frame rates hast du? Ich habe nur 3 frames pro Sekunde.
@lobomau hab glaub ich 5 oder 7 frames.
Kannst du mal die anderen Werte posten die du so hast. Also wie kommt der Stream von deiner Kamera und was hast du in motioneye bezüglich Auflösung, Frames, Qualität eingestellt ?
-
@lobomau hab glaub ich 5 oder 7 frames.
Kannst du mal die anderen Werte posten die du so hast. Also wie kommt der Stream von deiner Kamera und was hast du in motioneye bezüglich Auflösung, Frames, Qualität eingestellt ?
CPU Belastung für motioneye < 20%:

-
CPU Belastung für motioneye < 20%:

@lobomau Vielen Dank.
Was für ein Format streamen denn deine Kameras?
Ich streame grade via rstp im Videoformat VBR. Bitrate habe ich 2000 Kbits eingestellt und Frames aktuell 10 pro Sekunde. Videogröße ist 1270x720.
-
@lobomau Vielen Dank.
Was für ein Format streamen denn deine Kameras?
Ich streame grade via rstp im Videoformat VBR. Bitrate habe ich 2000 Kbits eingestellt und Frames aktuell 10 pro Sekunde. Videogröße ist 1270x720.
@martinschm muss ich mal genau schauen. Ich glaube meistens habe ich 10 frames in den cameras eingestellt. Die wansview ist über rtsp, die anderen beiden über http.
-
@martinschm muss ich mal genau schauen. Ich glaube meistens habe ich 10 frames in den cameras eingestellt. Die wansview ist über rtsp, die anderen beiden über http.
@lobomau wäre super, wenn du mal schauen könntest. Hatte irgendwo was gelesen, das motioneye den Stream decodiert und wieder codiert, das erzeugt dann wohl auch Last
-
@lobomau wäre super, wenn du mal schauen könntest. Hatte irgendwo was gelesen, das motioneye den Stream decodiert und wieder codiert, das erzeugt dann wohl auch Last
@martinschm also bei meinen cameras steht:
FDT 720p: http, 1280 x 720, bitrate: 4096 kbps, 10 frames, bitcontrol: VBR,
wansview w2: rtsp, 1920 x 1080, bitrate: 2048 kbps, 10 frames, bitcontrol: VBR,
Edimax: http, 1280 x 960, 20 frames -
@martinschm also bei meinen cameras steht:
FDT 720p: http, 1280 x 720, bitrate: 4096 kbps, 10 frames, bitcontrol: VBR,
wansview w2: rtsp, 1920 x 1080, bitrate: 2048 kbps, 10 frames, bitcontrol: VBR,
Edimax: http, 1280 x 960, 20 frames@lobomau bei mir sieht es in htop so aus mit zwei Kameras und Bewegungsüberwachung
Beide via rstp 7 frames bei 2000 kbps mit VBR und 960x540 Auflösung. Da hat jeder motion process über 25% CPU oder lese ich das falsch?


-
@lobomau bei mir sieht es in htop so aus mit zwei Kameras und Bewegungsüberwachung
Beide via rstp 7 frames bei 2000 kbps mit VBR und 960x540 Auflösung. Da hat jeder motion process über 25% CPU oder lese ich das falsch?


@martinschm ich kenne mich damit nicht aus. Bei mir zeigt "top" wenn ich im server einlogge 50-70% für motion an. Und manchmal >200% kvm. Für motioneye hab ich aber einen eigenen Container laufen. Eigentlich dachte ich dass ich keinen motion process sehen würde beim Server.

-
Ok. Super. Fangen wir mal an.
Grundvoraussetzung um den iobroker Motion Adapter zu nutzen ist natürlich ein funktionierender motion daemon. Dieser Dienst muss nicht zwangsweise auf dem gleichen System laufen wie iobroker, da der Adapter mit diesem via Netzwerk spricht.
Da Motion rtsp nativ erst in einer neueren Version unterstützt (ich benutze 4.0.1) ergeben sich zwei unterschiedliche Möglichkeiten. Beide haben vor und Nachteile.
1.) Man nutzt eine aktuelle Version von Motion.
2.) Man benutzt eine ältere Version von Motion und macht rtsp und decodierung des h264 streams extern.
Die Vorteile von Variante 1 liegen auf der Hand. Weniger Komplexität und daher vermeintlich höhere Stabilität.
Die Nachteile von Variante 1: H264 decodierung in Software (daher höhere cpu last)
Die Vorteile von Variante 2: Höhere Flexibilität bei Quelle und Decodierung. Alles was gstreamer kann, kann auch mit motion verwendet werden. (inkl. omxdecode auf der rpi gpu)
Die Nachteile von Variante 2: Höhere Komplexität. Vor dem Motion dameon muss noch ein loopback modul geladen werden und eine gstreamer pipeline muss eingerichtet werden. Das sind alles Dinge die abspacken können.
Vorschlag:
Wenn motion auf einer Kiste läuft, die wenig CPU aber die Möglichkeit von GPU Decoding hat (vaapi, omx usw.) wie z.b. der rpi dann empfehle ich Variante 2.
Wenn man keine Möglichkeit des GPU Decodings hat, oder genug cpu power dann empfehle ich Variante 1.
Wenn das alles läuft, können wir uns um den Adapter kümmern.
@ruhigundrelaxed sag mal, ist das Thema mit dem GPU decoden immer nur noch in der "alten" Version von Motioneye und mit Loopback möglich oder hat sich da in den letzten Monaten was getan? Habe eine VM mit GPU erstellt und würde Motioneye hier möglichst CPU-Ressourcensparend laufen lassen => GPU soll die möglichen Aufgaben übernehmen... Wie kann ich das einstellen und vor allem am System sehen / testen?
-
Das Thema ist zwar schon ein paar Tage alt, aber vielleicht hat der eine oder andere MotionEye Nutzer einen Tip für mich.
Bei mir laufen 5 Kameras über einen RPI 3B+. Ich nutze den rtsp Stream Link um die Kamera Bilder in ioB anzuzeigen.
Dabei ist mir schon vor einiger Zeit aufgefallen, das die Bilder die über MotionEyeOS ruaskommen, teilweise mehrere MINUTEN gegenüber dem Livebild der Kamera verzögert sind.
Hat jemand eine Idee woran das liegen kann? An der Menge der Kameras liegt es nicht, denn das Phänomen tritt auch im "Ein Kamera Modus" auf.
-
Das Thema ist zwar schon ein paar Tage alt, aber vielleicht hat der eine oder andere MotionEye Nutzer einen Tip für mich.
Bei mir laufen 5 Kameras über einen RPI 3B+. Ich nutze den rtsp Stream Link um die Kamera Bilder in ioB anzuzeigen.
Dabei ist mir schon vor einiger Zeit aufgefallen, das die Bilder die über MotionEyeOS ruaskommen, teilweise mehrere MINUTEN gegenüber dem Livebild der Kamera verzögert sind.
Hat jemand eine Idee woran das liegen kann? An der Menge der Kameras liegt es nicht, denn das Phänomen tritt auch im "Ein Kamera Modus" auf.
Internetleitung ausgelastet?
Zuviele Geräte?
Hab ne 50er Leitung und die ist arg strapaziert mit knapp 35 Geräten.



