NEWS
Bewegungserkennung mit Motioneye, Lösung komplett in Blockly
-
@yoda die Kommandos in motioneye sind ohne <> vor und nach der IP, also
curl 192.168.0.50:8082/set/javascript.0.motioneye.getEventStart?value=trueDefiniere auch mal den Typ "Bool" unter "Common":

Ansonsten sehen die Blocklys in Ordnung aus.
In den Objekten unter javascript.0 sind die Datenpunkte angelegt?
Ist curl installiert?
hast du schon einmal probiert, den curl Befehl in einem Terminal auszuführen und geschaut, ob der Datenpunkt in iobroker gesetzt wird?@fu_zhou
Ich habe mir nun einen neuen Raspi aufgesetzt. Die Anleitung bin ich soweit durch.- Ich würde als erstes gerne zum testen per Vis Objekt Schalter bei True ein Bild an Telegramm schicken.
- später dann noch Per Trigger True ein Video auf dem Raspi speichern, bei False dann die Aufnahme beenden.
Aber schon beim versuch die curl Befehle über die Konsole, klappt es nicht.
192.168.178.118:7999/1 = IP vom Raspi + CamID 1
Mein Raspi selbst hat den port 8081
Motioneye + Iobroker laufen auf den gleichen Raspi.Wäre klasse wenn du / jemand meinen Fehler finden könnte.
Das ist sind die Antworten wen ich es auf die Konsole eingebe:
pi@raspberrypi:~ $ curl 192.168.178.118:7999/1/action/snapshot curl: (7) Failed to connect to 192.168.178.118 port 7999: Verbindungsaufbau abgelehnt pi@raspberrypi:~ $ curl 192.168.178.118:8081/set/javascript.0.motioneye.getEventStart?value=true <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>Error</title> </head> <body> <pre>Cannot GET /set/javascript.0.motioneye.getEventStart</pre> </body> </html> pi@raspberrypi:~ $Datenpunkte sind Angelegt:

In Motioney wurden die curl Befehle eingefügt:


Diese Blockys habe ich erstellt.
Das Objekt "Live_Bild_Hof_2_Trigger" ist dabei der einfache Schalten der bei True das Bild an Telegramm senden soll.

<xml xmlns="https://developers.google.com/blockly/xml"> <block type="create" id="Dr!Fx~Beoz0vD-u,=b,/" x="-1137" y="-762"> <field name="NAME">motioneye.getEventStart</field> <value name="VALUE"> <block type="logic_boolean" id="Wy?;T+5.gri54{%BRoya"> <field name="BOOL">FALSE</field> </block> </value> <value name="COMMON"> <block type="text" id="}PVYZ$ApfE[JT./zl9YQ"> <field name="TEXT">{"type":"boolean"}</field> </block> </value> <next> <block type="create" id="bLTZ|UzK$d7XZMob_k%D"> <field name="NAME">motioneye.getEventStop</field> <value name="VALUE"> <block type="logic_boolean" id="%.syN]|jrZG9f7D6+)zh"> <field name="BOOL">FALSE</field> </block> </value> <value name="COMMON"> <block type="text" id="|M`,^Y_#h}E_B_m!`,lx"> <field name="TEXT">{"type":"boolean"}</field> </block> </value> </block> </next> </block> <block type="on" id="mjP?5E~a[.nxfq92+x03" x="-562" y="-762"> <field name="OID">javascript.0.motioneye.getEventStart</field> <field name="CONDITION">true</field> <field name="ACK_CONDITION"></field> <statement name="STATEMENT"> <block type="control" id="Irj+AdQe](/s{qwwY9.*"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">kamera.0.Live_Bild_Hof_2_Trigger</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="#LR7R{hJpO8gK-7^_G0T"> <field name="BOOL">TRUE</field> </block> </value> </block> </statement> <next> <block type="on" id="L{?ik@,9~9LVA1E4T58$"> <field name="OID">javascript.0.motioneye.getEventStop</field> <field name="CONDITION">true</field> <field name="ACK_CONDITION"></field> <statement name="STATEMENT"> <block type="control" id="lQ=/_:?F.0wx,,$]yam?"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">kamera.0.Live_Bild_Hof_2_Trigger</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="xE%8._#@P2Zo@:v5;=gD"> <field name="BOOL">FALSE</field> </block> </value> <next> <block type="control" id="q(s^_W@O`za#6xyWCRAt"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">javascript.0.motioneye.getEventStart</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="#P;mKyGsx;lWF4@El%;l"> <field name="BOOL">FALSE</field> </block> </value> <next> <block type="control" id="MUmVEx!MA)NpV^jmSbU9"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">javascript.0.motioneye.getEventStop</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="j6bL:Ydvc])|`e]!;;0E"> <field name="BOOL">FALSE</field> </block> </value> </block> </next> </block> </next> </block> </statement> </block> </next> </block> <block type="create" id="RkQbX[_+})vJ?5UekXGS" x="-1137" y="-312"> <field name="NAME">motioneye.getLastPic</field> <value name="VALUE"> <block type="logic_boolean" id="P6=?$BEKQNHr20:N{Y/t"> <field name="BOOL">FALSE</field> </block> </value> <value name="COMMON"> <block type="text" id="l]060%Q7?l)-dFwh!;1x"> <field name="TEXT">{"type":"boolean"}</field> </block> </value> <next> <block type="create" id="5%dh/|_UT[|9zy-`Ow;!"> <field name="NAME">motioneye.takeSnapshot</field> <value name="VALUE"> <block type="logic_boolean" id="6O+eV`T?YupBPAzQWO=0"> <field name="BOOL">FALSE</field> </block> </value> <value name="COMMON"> <block type="text" id="-!FR!~a21vuCPCLJppg/"> <field name="TEXT">{"type":"boolean"}</field> </block> </value> </block> </next> </block> <block type="on" id="wfa-Dpk:nkUhIb{RU%uh" x="-562" y="-312"> <field name="OID">javascript.0.motioneye.takeSnapshot</field> <field name="CONDITION">true</field> <field name="ACK_CONDITION"></field> <statement name="STATEMENT"> <block type="exec" id="]/8s/`J^W;XQ{qftY}Db"> <mutation xmlns="http://www.w3.org/1999/xhtml" with_statement="false"></mutation> <field name="WITH_STATEMENT">FALSE</field> <field name="LOG">log</field> <value name="COMMAND"> <shadow type="text" id="(K$1|n(y2}Vo)e[F`t$["> <field name="TEXT">curl 192.168.178.118:7999/1/action/snapshot</field> </shadow> </value> <next> <block type="control" id="upr-7(fur`]75F6uEFcD"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">javascript.0.motioneye.takeSnapshot</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id=".AqlQids|W*gXLc^`/M8"> <field name="BOOL">FALSE</field> </block> </value> </block> </next> </block> </statement> <next> <block type="on" id="i$|PYR#c.Qc3*,lk?O*`"> <field name="OID">javascript.0.motioneye.getLastPic</field> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <statement name="STATEMENT"> <block type="telegram" id="WC]o9!Q[E=rY6~s#U[0q"> <field name="INSTANCE">.0</field> <field name="LOG"></field> <field name="SILENT">FALSE</field> <field name="PARSEMODE">default</field> <value name="MESSAGE"> <shadow type="text" id="@rpRAn.t]M40U2v,qZ%2"> <field name="TEXT">curl 192.168.178.118:7999/1/action/snapshot</field> </shadow> <block type="get_value" id="G2%KCoV,9q)w;P-cWe8F"> <field name="ATTR">val</field> <field name="OID">javascript.0.motioneye.getLastPic</field> </block> </value> <value name="USERNAME"> <block type="text" id=".b;[`=6Wv:j9?Oe_z4ZK"> <field name="TEXT">Yoda</field> </block> </value> </block> </statement> </block> </next> </block> </xml> -
@fu_zhou
Ich habe mir nun einen neuen Raspi aufgesetzt. Die Anleitung bin ich soweit durch.- Ich würde als erstes gerne zum testen per Vis Objekt Schalter bei True ein Bild an Telegramm schicken.
- später dann noch Per Trigger True ein Video auf dem Raspi speichern, bei False dann die Aufnahme beenden.
Aber schon beim versuch die curl Befehle über die Konsole, klappt es nicht.
192.168.178.118:7999/1 = IP vom Raspi + CamID 1
Mein Raspi selbst hat den port 8081
Motioneye + Iobroker laufen auf den gleichen Raspi.Wäre klasse wenn du / jemand meinen Fehler finden könnte.
Das ist sind die Antworten wen ich es auf die Konsole eingebe:
pi@raspberrypi:~ $ curl 192.168.178.118:7999/1/action/snapshot curl: (7) Failed to connect to 192.168.178.118 port 7999: Verbindungsaufbau abgelehnt pi@raspberrypi:~ $ curl 192.168.178.118:8081/set/javascript.0.motioneye.getEventStart?value=true <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>Error</title> </head> <body> <pre>Cannot GET /set/javascript.0.motioneye.getEventStart</pre> </body> </html> pi@raspberrypi:~ $Datenpunkte sind Angelegt:

In Motioney wurden die curl Befehle eingefügt:


Diese Blockys habe ich erstellt.
Das Objekt "Live_Bild_Hof_2_Trigger" ist dabei der einfache Schalten der bei True das Bild an Telegramm senden soll.

<xml xmlns="https://developers.google.com/blockly/xml"> <block type="create" id="Dr!Fx~Beoz0vD-u,=b,/" x="-1137" y="-762"> <field name="NAME">motioneye.getEventStart</field> <value name="VALUE"> <block type="logic_boolean" id="Wy?;T+5.gri54{%BRoya"> <field name="BOOL">FALSE</field> </block> </value> <value name="COMMON"> <block type="text" id="}PVYZ$ApfE[JT./zl9YQ"> <field name="TEXT">{"type":"boolean"}</field> </block> </value> <next> <block type="create" id="bLTZ|UzK$d7XZMob_k%D"> <field name="NAME">motioneye.getEventStop</field> <value name="VALUE"> <block type="logic_boolean" id="%.syN]|jrZG9f7D6+)zh"> <field name="BOOL">FALSE</field> </block> </value> <value name="COMMON"> <block type="text" id="|M`,^Y_#h}E_B_m!`,lx"> <field name="TEXT">{"type":"boolean"}</field> </block> </value> </block> </next> </block> <block type="on" id="mjP?5E~a[.nxfq92+x03" x="-562" y="-762"> <field name="OID">javascript.0.motioneye.getEventStart</field> <field name="CONDITION">true</field> <field name="ACK_CONDITION"></field> <statement name="STATEMENT"> <block type="control" id="Irj+AdQe](/s{qwwY9.*"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">kamera.0.Live_Bild_Hof_2_Trigger</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="#LR7R{hJpO8gK-7^_G0T"> <field name="BOOL">TRUE</field> </block> </value> </block> </statement> <next> <block type="on" id="L{?ik@,9~9LVA1E4T58$"> <field name="OID">javascript.0.motioneye.getEventStop</field> <field name="CONDITION">true</field> <field name="ACK_CONDITION"></field> <statement name="STATEMENT"> <block type="control" id="lQ=/_:?F.0wx,,$]yam?"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">kamera.0.Live_Bild_Hof_2_Trigger</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="xE%8._#@P2Zo@:v5;=gD"> <field name="BOOL">FALSE</field> </block> </value> <next> <block type="control" id="q(s^_W@O`za#6xyWCRAt"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">javascript.0.motioneye.getEventStart</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="#P;mKyGsx;lWF4@El%;l"> <field name="BOOL">FALSE</field> </block> </value> <next> <block type="control" id="MUmVEx!MA)NpV^jmSbU9"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">javascript.0.motioneye.getEventStop</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="j6bL:Ydvc])|`e]!;;0E"> <field name="BOOL">FALSE</field> </block> </value> </block> </next> </block> </next> </block> </statement> </block> </next> </block> <block type="create" id="RkQbX[_+})vJ?5UekXGS" x="-1137" y="-312"> <field name="NAME">motioneye.getLastPic</field> <value name="VALUE"> <block type="logic_boolean" id="P6=?$BEKQNHr20:N{Y/t"> <field name="BOOL">FALSE</field> </block> </value> <value name="COMMON"> <block type="text" id="l]060%Q7?l)-dFwh!;1x"> <field name="TEXT">{"type":"boolean"}</field> </block> </value> <next> <block type="create" id="5%dh/|_UT[|9zy-`Ow;!"> <field name="NAME">motioneye.takeSnapshot</field> <value name="VALUE"> <block type="logic_boolean" id="6O+eV`T?YupBPAzQWO=0"> <field name="BOOL">FALSE</field> </block> </value> <value name="COMMON"> <block type="text" id="-!FR!~a21vuCPCLJppg/"> <field name="TEXT">{"type":"boolean"}</field> </block> </value> </block> </next> </block> <block type="on" id="wfa-Dpk:nkUhIb{RU%uh" x="-562" y="-312"> <field name="OID">javascript.0.motioneye.takeSnapshot</field> <field name="CONDITION">true</field> <field name="ACK_CONDITION"></field> <statement name="STATEMENT"> <block type="exec" id="]/8s/`J^W;XQ{qftY}Db"> <mutation xmlns="http://www.w3.org/1999/xhtml" with_statement="false"></mutation> <field name="WITH_STATEMENT">FALSE</field> <field name="LOG">log</field> <value name="COMMAND"> <shadow type="text" id="(K$1|n(y2}Vo)e[F`t$["> <field name="TEXT">curl 192.168.178.118:7999/1/action/snapshot</field> </shadow> </value> <next> <block type="control" id="upr-7(fur`]75F6uEFcD"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">javascript.0.motioneye.takeSnapshot</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id=".AqlQids|W*gXLc^`/M8"> <field name="BOOL">FALSE</field> </block> </value> </block> </next> </block> </statement> <next> <block type="on" id="i$|PYR#c.Qc3*,lk?O*`"> <field name="OID">javascript.0.motioneye.getLastPic</field> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <statement name="STATEMENT"> <block type="telegram" id="WC]o9!Q[E=rY6~s#U[0q"> <field name="INSTANCE">.0</field> <field name="LOG"></field> <field name="SILENT">FALSE</field> <field name="PARSEMODE">default</field> <value name="MESSAGE"> <shadow type="text" id="@rpRAn.t]M40U2v,qZ%2"> <field name="TEXT">curl 192.168.178.118:7999/1/action/snapshot</field> </shadow> <block type="get_value" id="G2%KCoV,9q)w;P-cWe8F"> <field name="ATTR">val</field> <field name="OID">javascript.0.motioneye.getLastPic</field> </block> </value> <value name="USERNAME"> <block type="text" id=".b;[`=6Wv:j9?Oe_z4ZK"> <field name="TEXT">Yoda</field> </block> </value> </block> </statement> </block> </next> </block> </xml>@yoda
Wenn ich ein curl auf mein motioneye loslasse kriege ich folgende Antwort:curl 192.168.0.52:7999/1/action/snapshot Snapshot for camera 1 DoneBei dir kommt "Verbindungsaufbau abgelehnt" ==> da solltest du ansetzen. Ist der Port über die Firewall geblockt, ist in der motioneye config localhost etc. deaktiviert?
-
@yoda
Wenn ich ein curl auf mein motioneye loslasse kriege ich folgende Antwort:curl 192.168.0.52:7999/1/action/snapshot Snapshot for camera 1 DoneBei dir kommt "Verbindungsaufbau abgelehnt" ==> da solltest du ansetzen. Ist der Port über die Firewall geblockt, ist in der motioneye config localhost etc. deaktiviert?
@fu_zhou sagte in Bewegungserkennung mit Motioneye, Lösung komplett in Blockly:
motioneye config localhost etc. deaktiviert?
ja wurde zuvor schon auf false angepasst.
Schon mal gut zu wissen wie deine Antwort auf den curl Befehl aussieht.Habe nun schon versucht diverse Ports mal freizugeben bekomme aber einfach kein connect per curl Befehl hin :-(
Snapshot per Url klappt: http://192.168.178.118:8765/picture/1/current/
Könntest du mir einmal deine Freigabe für die Ports zeigen?
evtl. mache ich da auch etwas Falsch.Motioneye läuft soweit, das bei einer Bewegungserkennung ein Bild gespeichert wird.
Die Bewegungserkennung läuft hier aber noch über die Bewegungserkennung der Kamera.

Werde es weiterversuchen muss doch klappen ...
-
@fu_zhou sagte in Bewegungserkennung mit Motioneye, Lösung komplett in Blockly:
motioneye config localhost etc. deaktiviert?
ja wurde zuvor schon auf false angepasst.
Schon mal gut zu wissen wie deine Antwort auf den curl Befehl aussieht.Habe nun schon versucht diverse Ports mal freizugeben bekomme aber einfach kein connect per curl Befehl hin :-(
Snapshot per Url klappt: http://192.168.178.118:8765/picture/1/current/
Könntest du mir einmal deine Freigabe für die Ports zeigen?
evtl. mache ich da auch etwas Falsch.Motioneye läuft soweit, das bei einer Bewegungserkennung ein Bild gespeichert wird.
Die Bewegungserkennung läuft hier aber noch über die Bewegungserkennung der Kamera.

Werde es weiterversuchen muss doch klappen ...
@yoda Ich habe keine Ports explizit freigeben müssen, war nur so eine Idee... Da du motioneye und iobroker auf dem selben Pi hast, sollte das eigentlich keine Rolle spielen, da habe ich aber nur gefährliches Halbwissen...
Hast du mal von einem anderen PC im Netz versucht per curl auf den Pi zu kommen? -
@fu_zhou sagte in Bewegungserkennung mit Motioneye, Lösung komplett in Blockly:
motioneye config localhost etc. deaktiviert?
ja wurde zuvor schon auf false angepasst.
Schon mal gut zu wissen wie deine Antwort auf den curl Befehl aussieht.Habe nun schon versucht diverse Ports mal freizugeben bekomme aber einfach kein connect per curl Befehl hin :-(
Snapshot per Url klappt: http://192.168.178.118:8765/picture/1/current/
Könntest du mir einmal deine Freigabe für die Ports zeigen?
evtl. mache ich da auch etwas Falsch.Motioneye läuft soweit, das bei einer Bewegungserkennung ein Bild gespeichert wird.
Die Bewegungserkennung läuft hier aber noch über die Bewegungserkennung der Kamera.

Werde es weiterversuchen muss doch klappen ...
-
Du musst zusätzlich noch in /etc/motioneye/motion.conf den Eintrag "webcontrol_localhost on" zu "webcontrol_localhost off" ändern
@saint sagte in Bewegungserkennung mit Motioneye, Lösung komplett in Blockly:
/etc/motioneye/motion.conf den Eintrag "webcontrol_localhost on" zu "webcontrol_localhost off"
Genau das wars - Danke @saint
Habe es geändert und bekomme nun auch das Bild per curl Befehl.
Dann kann es nun weitergehen, das ich das jeweils letzte Bild per Telegramm verschicke.

-
Hallo zusammen, ich habe viel mit dem Thema herumexperimentiert und bin jetzt zu einer für mich schönen Lösung gekommen, die ich hier zur Verfügung stellen möchte.
Ich habe ioBroker in einer virtuellen Maschine im VM Ware Player laufen: Ubuntu 20.04.01 Server. Motioneye läuft in einer zweiten VM, auch Ubuntu 20.04.01 Server. Die motioneye Installation hat zu 100% nach Anleitung funktioniert:
https://github.com/ccrisan/motioneye/wiki/(Install-On-Ubuntu-(20.04-or-Newer)
In beiden VMs ist der selbe shared folder aktiviert:

sudo nano /etc/fstabAm Ende ergänzen:
.host:/ /mnt/hgfs fuse.vmhgfs-fuse defaults,allow_other 0 0Damit steht in beiden VMs (iobroker und motioneye) der Ordner /mnt/hgfs/rack_HDD zur Verfügung. Der Name ist im Player natürlich frei wählbar.
Ich habe beide VMs mit statischen IP-Adressen versehen: iobroker: endet mit .50, motioneye mit .52
Im ioBroker muss in der Web-Adapter-Instanz (bei mir web.0) noch "Eingebautes 'Simple-API'" aktiviert werden. Wenn der Port nicht 8082 ist, muss das in den curl-Anweisungen in motioneye entsprechend geändert werden. Die Vorgehensweise unten bezieht sich auf 8082.

Konfiguration von motioneye:
mit putty einloggensudo nano /etc/motioneye/motioneye.confWir wollen mit iobroker neben dem motioneye webinterface auch auf motion zugreifen, daher den Zugriff nicht auf localhost beschränken (motion_control_localhost false):
# whether motion HTTP control interface listens on # localhost or on all interfaces motion_control_localhost falseNoch kurz den Control-Port überprüfen:
motion_control_port 7999Ich habe bei mir über die Web-Konfiguration der IP-Kamera folgende Werte eingestellt: 1280x720, 15 fps. Damit kriege ich einen ausreichend flüssigen Stream und die CPU-Last der VM (host: i5 3. Generation) liegt bei <20%.
Jetzt kann die Konfiguration von motioneye im Browser geöffnet werden, ich gebe hier noch Werte an, die bei mir ganz gut funktionieren:
<IP-Adresse Motioneye>:8765
ggf. Benutzer wechseln - admin (ohne PW)- Preferences: die beiden Dimmer habe ich auf 100% gestellt, die Grenzen habe ich ja in der Kamera konfiguriert
- Video Device:
Camera Name: ist wohl selbsterklärend, z.B. Garten
Camera Device: bei einer IP-Kamera kommt hier der Link zum Stream rein, z.B. rtsp://... bzw. der Wert aus der Erst-Konfiguration ist eingetragen.
Video Resolution und Framerate: so wie in der Kamera eingestellt, bei mir also 1280x720, 15 fps - File Storage:
Root Directory: hier kommt jetzt der gemeinsam genutzte Ordner rein, z.B. /mnt/hgfs/rack_HDD/motioneye
Run A Command: ON
Command: curl <IP-Adresse von iobroker>:8082/set/javascript.0.motioneye.getLastPic?value=%f
Damit übergeben wir den Namen des letzten gespeicherten Bildes (z.B. bei Bewegung) an ioBroker. - Text Overlay:
Left Text: Camera Name
Right Text: Custom Text: %Y-%m-%d\n%T-%q
Mit -%q wird der Frame mit angezeigt, d.h. bei 15 fps sieht man in einer Sekunde, wie von 0 bis 14 hochgezählt wird. Damit erkennt man die aktuelle Stream-Geschwindigkeit gut.
Text Scale: 3, damit kann man bei der Auflösung von 1280x720 die Schrift gut lesen - Video Streaming:
Streaming Frame Rate: 15 (entspricht der Einstellung der IP-Kamera)
Streaming Quality: 100% (je nach Bedarf kann man auch mit weniger zufrieden sein)
Motion Optimization: ON Damit wird der Stream ohne erkannte Bewegung auf 1 fps reduziert und hochgefahren, wenn Bewegung erkannt wird. Den Effekt sieht man durch -%q dann auch im Bild rechts unten.
Streaming URL: Die Adresse kommt in vis z.B. in das Widget "basic -Image": Quelle. Damit hat man dann in der vis-Runtime den Live-Stream - Still Images:
Image File Name: %Y-%m-%d/%H-%M-%S_%q
Durch %q wird vermieden, dass, sollten mehrere Bilder in einer Sekunde aufgenommen werden, Bilder überschrieben werden. %q hängt die Frame-Nummer an.
Capture Mode: Motion Triggered (One Picture)
Damit wird nur der Frame mit der meisten Bewegung (Anzahl geänderte Pixel) bei erkannter Bewegung (Event) gespeichert und nicht jedes einzelne Bild, was zu einer Bilder-Flut führt. - Movies: habe ich deaktiviert
- Motion Detection:
Frame Change Threshold: 0.4%
Das sind knapp über 3.500 Pixel. die sich ändern müssen, um Bewegung zu erkennen. Habe ich durch (viel) probieren ermittelt und passt bei mir ganz gut
Maximum Change Threshold: 50.000
Damit wird bei mir vermieden, dass Bewegung erkannt wird, wenn z.B. nachts die Scheinwerfer eines Autos Licht in den überwachten Bereich werfen. In Kombination mit Light Switch Detection. Wenn sich die Kamera ziemlich dicht an sich bewegenden Objekten befindet, z.B. direkt über einer Tür, kann 50.000 viel zu niedrig sein. Gilt auch für Light Switch Detection weiter unten. Die Zahl der bewegten Pixel wird weiter unten auch angezeigt, damit bekommt man ein gutes Gefühl für sinnvolle Werte.
Auto Threshold Tuning: off
"On" hat bei mir zu viele Fehlauslösungen provoziert
Auto Noise Detection: off
"On" hat bei mir zu viele Fehlauslösungen provoziert
Noise Level: 12%
Wirkt vor allem nachts/ bei schwarz-weiß Bild der Kamera. Ich habe den Wert durch probieren ermittelt, um Fehlauslösungen zu vermeiden, aber Bewegung trotzdem zu erkennen.
Light Switch Detection: 10%
Der Wert darf nicht zu niedrig sein, eher >10%, Weil sonst echte Bewegung mit entsprechend vielen Pixeln als "Licht" interpretiert und nicht gemeldet wird. Wirkt vor allem, wenn die Kamera sich nachts bei Dunkelheit empfindlich einstellt und dann bei Lichteinfall das ganz Bild "weiß" wird, bis sich die Kamera an die neuen Lichtverhältnisse angepasst hat, was ja innerhalb weniger Sekunden der Fall ist.
Show Frame Changes: ON
Damit wird rechts oben im Bild die Anzahl der geänderten Pixel angezeigt und das bewegte Motiv wird rot umrandet. - Motion Notification:
Run A Command: ON
Command: curl <IP-Adresse von iobroker>:8082/set/javascript.0.motioneye.getEventStart?value=true
Damit übergeben wir erkannte Bewegung an ioBroker
Run An End Command: ON
Command: curl <IP-Adresse von iobroker>:8082/set/javascript.0.motioneye.getEventStop?value=true
Damit übergeben wir beendete Bewegung an ioBroker
Jetzt können wir uns an die Blockly-Skripte machen:
- Telegram
Zuerst müssen die Datenpunkte angelegt werden (übernimmt Blockly):
javascript.0.motioneye.getLastPic
javascript.0.motioneye.takeSnapshot
Dann die Logik:
- Foto unabhängig von Bewegung auslösen (z.B. über Telegram oder ein anderes Objekt):
exec Befehl: muss in der Javascript-Instanz aktiviert sein: Erlaube das Kommando "exec"
curl <IP-Adresse von motioneye>:7999/1/action/snapshot
7999 ist der motion_control_port, den wir ganz oben aus der motioneye.conf geholt haben.
1 ist die Kamera-ID. Bei mehreren Kameras ist hier die entsprechende ID anzugeben. Dann müssen ggf. auch mehrere Skripte mit unterschiedlichen (nummerierten) Datenpunkten
javascript.0.motioneye.getLastPic
javascript.0.motioneye.takeSnapshot
angelegt werden. - aktuellestes Foto an Telegram senden (ausgelöst durch Bewegung oder Telegram bzw. anderes Objekt):
Bildname wird durch curl <IP-Adresse von iobroker>:8082/set/javascript.0.motioneye.getLastPic?value=%f (angegeben in der Motioneye-Konfiguration unter "File Storage" - s.o.) an ioBroker übergeben.

- Aktion bei erkannter Bewegung auslösen, z.B. Licht schalten (=Bewegungsmelder)
Zuerst müssen die Datenpunkte angelegt werden (übernimmt Blockly):
javascript.0.motioneye.getEventStart
javascript.0.motioneye.getEventStop
Auch hier gilt: Bei mehr als einer Kamera ggf. mehrere Skripte mit nummerierten Datenpunkten anlegen.
Dann die Logik:
"Bewegung_erkannt_durch_Kamera_EINGANG" ist aus meinem Datenpunkt-Haushalt, bei euch ist das ein entsprechend anderes Objekt.

Um ein Bild mit Telegram auszulösen noch ein text2command anlegen:
Regel: Schalte irgendetwas an oder aus
Name: Foto

text2command muss in der Telegram-Adapter-Instanz aktiviert sein (=> NACHRICHTEN).
Wenn man jetzt also "Foto" an seinen Bot schickt, wird ein Foto ausgelöst und geschickt.
Das war er soweit auch schon. In der Anleitung steckt ein Haufen Arbeit, also nicht einfach hier rauskopieren und weiterverteilen - danke!
@fu_zhou Hallo, Danke für deinen interessanten Beitrag.
Ist es denn möglich, auch von ioBroker einen Datenpunkt zu setzen, welcher die Bewegungserkennung der Kameras ein und ausschaltet. Ich nutze einen Pi4 und Vis und nun kam mir die Idee, dass die Bewegungserkennung und auch die Funktion "Still Images" nur dann aktiviert werden soll, wenn ich nicht zu Hause bin. Gibts dafür auch eine Lösung?
Danke vorab
Gruß Marcel -
@marc_el_k bin da irgendwie zu blöd für, wie muss denn das blockly aussehen bzw der Befehl, um zu senden?
-
@crunchip Ich bin hier nach gegangen
MotioneyeOS Aktivierung/Deaktivierung Bewegungserkennung
Als Script habe ich den EXEC Befehl ausgeführt mit
curl http://IPIOBROKER:7999/1/detection/startbzw.
curl http://IPIOBROKER:7999/1/detection/pauseDie 1 im Link steht für Kamera 1...also anpassen.
Den Status kannst du mit
http://IPIOBROKER:7999/1/detection/statusabfragen.
Bei mir hatte es erst nicht geklappt, bis ich in der motion.conf auf
webcontrol_localhost offgeändert habe.
Hoffe das hilft dir!
-
@crunchip Ich bin hier nach gegangen
MotioneyeOS Aktivierung/Deaktivierung Bewegungserkennung
Als Script habe ich den EXEC Befehl ausgeführt mit
curl http://IPIOBROKER:7999/1/detection/startbzw.
curl http://IPIOBROKER:7999/1/detection/pauseDie 1 im Link steht für Kamera 1...also anpassen.
Den Status kannst du mit
http://IPIOBROKER:7999/1/detection/statusabfragen.
Bei mir hatte es erst nicht geklappt, bis ich in der motion.conf auf
webcontrol_localhost offgeändert habe.
Hoffe das hilft dir!
@marc_el_k sagte in Bewegungserkennung mit Motioneye, Lösung komplett in Blockly:
ja, so habe ich es auch, klappt aber nicht
@marc_el_k sagte in Bewegungserkennung mit Motioneye, Lösung komplett in Blockly:
webcontrol_localhost off
steht bei mir auf off
Edit:
ich hatte es die ganze Zeit mit Kamera ID 0 probiert, für alle Kamera`sSo issuing a command of {IP}:{port}/0/detection/pause is going to pause all the cameras.geht aber nicht, einzelne funktionieren
-
@fu_zhou sagte in Bewegungserkennung mit Motioneye, Lösung komplett in Blockly:
curl 192.168.0.50:8082/set/javascript.0.motioneye.getEventStart?value=true
Hi allerseits, ich hab mich auch mal an die Sache gewagt und es läuft....fast. Also Bild, curlbefehle etc alles gut, aber wie krieg ich den shared Folder unter Proxmox hin? Iobroker läuft in ner VM, Motioneye in nem unprivilegierten Lxc. Ich krieg auch wunderbar den Pfad zum Image geschickt, nur wie greif ich da jetzt zu?
-
@fu_zhou sagte in Bewegungserkennung mit Motioneye, Lösung komplett in Blockly:
curl 192.168.0.50:8082/set/javascript.0.motioneye.getEventStart?value=true
Hi allerseits, ich hab mich auch mal an die Sache gewagt und es läuft....fast. Also Bild, curlbefehle etc alles gut, aber wie krieg ich den shared Folder unter Proxmox hin? Iobroker läuft in ner VM, Motioneye in nem unprivilegierten Lxc. Ich krieg auch wunderbar den Pfad zum Image geschickt, nur wie greif ich da jetzt zu?
@pittini verstehe nicht genau was du meinst
-
@crunchip In Kurzform, MotionEye legt die Bilder in Ordner X auf der LXC A ab, wie kann ich darauf mit iobroker in VM B zugreifen? Die VM bzw. LXC laufen unter Proxmox und ich beziehe mich auf den Anfang des ersten posts in diesem Thread.
-
@crunchip In Kurzform, MotionEye legt die Bilder in Ordner X auf der LXC A ab, wie kann ich darauf mit iobroker in VM B zugreifen? Die VM bzw. LXC laufen unter Proxmox und ich beziehe mich auf den Anfang des ersten posts in diesem Thread.
@pittini ist
virtuellen Maschine im VM Ware Playernicht etwas anders als Proxmox?
ich habe es auch unter Proxmox laufen
Bild/Stream in Vis anzeigen, mittels URL von Motioneye selbst

Daten werden auf ne separate Platte geschickt, da diese nach 24h aus dem root directory gelöscht werden

Verschicken per blockly , mittels exec

-
@pittini ist
virtuellen Maschine im VM Ware Playernicht etwas anders als Proxmox?
ich habe es auch unter Proxmox laufen
Bild/Stream in Vis anzeigen, mittels URL von Motioneye selbst

Daten werden auf ne separate Platte geschickt, da diese nach 24h aus dem root directory gelöscht werden

Verschicken per blockly , mittels exec

Ich weiss,
der Beitrag hier ist bereits ein bisschen älter. Da ich gesucht... und gefunden habe, möchte ich gern mit Euch meine Erkentniss teilen. Die Lösung von @Marc_el_K war für mich nicht ganz ausreichend, da ich direkt aufzeichnen wollte udn ich bisschen suchen musste. Naja.-.. überlesen hab ich seine Antwort auch ;)Ich habe MotionEye unter Debian direkt installiert. Das ganze läuft in einem LXC-Container.

Da ich an der Tür zum Schuppen sowieso einen Reed-Kontakt installiert habe, möchte ich alles Treiben nach dem öffnen rollierend aufzeichnen und beim schließen der Tür dann wieder ausschalten.
- Datei /etc/motioneye/motion.conf editieren und "webcontrol_localhost off" anpassen
- Neustart
- Kontrolle via Browser, z.B. "http://<motioneye-ip>:7999/<Nummer der Kamera>/detection/status" ergibt dann beispielsweise: "Camera 2 Detection status ACTIVE "
- Anpassen der gewünschten Settings auf "http://motioneye:8765/", beispielsweise wo der Film, Filmtyp oder auch nur die Bilder gespeichert werden sollen und "apply" drücken
- Blockly anpassen.
Also beispielsweise:
curl http://motioneye:7999/2/detection/start (Schaltet Bewegungsmeldung scharf, noch nicht die Bewegung) curl http://motioneye:7999/2/detection/pause (Deaktiviert die Bewegungsmeldung) curl http://motioneye:7999/2/detection/status (Statusanzeige Bewegungsmeldung) curl http://motioneye:7999/2/config/set?emulate_motion=on (simuliert die Bewegung...startet dann die Aktion, beispielsweise die Aufnahme usw.) curl http://motioneye:7999/2/config/set?emulate_motion=off (stoppt die simulierte Bewegung) -
@saint sagte in Bewegungserkennung mit Motioneye, Lösung komplett in Blockly:
/etc/motioneye/motion.conf
Danke für die Anleitung
Ich habe da mal eine Frage zum Senden der Snapshots
Der DP wird mit dem aktuellen Bild gefüllt
das sieht dann so aus/var/lib/motioneye/Camera1/2023-01-22/15-00-37.jpgUnd genau das bekomme ich auch per Telegram zugesendet
Was muss ich anpassen damit das Bild gesendet wirdIch habe Motioneye und den ioB auf verschiedenen VMs laufen
Der eine hat die IP ...102 und der andere ...103Danke im Voraus
Gruß
Marcel -
@saint sagte in Bewegungserkennung mit Motioneye, Lösung komplett in Blockly:
/etc/motioneye/motion.conf
Danke für die Anleitung
Ich habe da mal eine Frage zum Senden der Snapshots
Der DP wird mit dem aktuellen Bild gefüllt
das sieht dann so aus/var/lib/motioneye/Camera1/2023-01-22/15-00-37.jpgUnd genau das bekomme ich auch per Telegram zugesendet
Was muss ich anpassen damit das Bild gesendet wirdIch habe Motioneye und den ioB auf verschiedenen VMs laufen
Der eine hat die IP ...102 und der andere ...103Danke im Voraus
Gruß
Marcel@wszene sagte in Bewegungserkennung mit Motioneye, Lösung komplett in Blockly:
Was muss ich anpassen damit das Bild gesendet wird
zeig mal dein script
-
@wszene sagte in Bewegungserkennung mit Motioneye, Lösung komplett in Blockly:
Was muss ich anpassen damit das Bild gesendet wird
zeig mal dein script
-
@wszene klappt denn die URL im Browser?

