NEWS
Bewegungserkennung mit Motioneye, Lösung komplett in Blockly
-
@haselchen sagte in Bewegungserkennung mit Motioneye, Lösung komplett in Blockly:
Die richtigen Settings muss jeder selber herausfinden.
... deswegen schreibe ich ja z.B. auch "hat bei mir zu viele Fehlauslösungen provoziert" und nicht "provoziert generell zu viele Fehlauslösungen" ...
Auf jeden Fall hat das Christkind keine Chance, dieses Jahr unerkannt zu bleiben! -
Nimm das bitte nicht als Kritik sondern als Anregung.
Ich habe Monate verbracht die "richtigen" Einstellungen zu finden.
Vergebens.
Ich behelfe mir jetzt zusätzlich mit Bewegungsmeldern.
Das klappt wunderbar.
Motion Eye selber nutze ich als Streamserver.
Schön kleiner TV an der Wand und alle Kameras drauf abgebildet, wie im Science Fiction Filmen -
@fu_zhou
Moin,
grossartig, vielen Dank dafür.Ich habe ein leicht anderes Setup, Motioneye läuft in einem Docker Container, auf dem gleichen Raspi wie auch der ioBroker.
Ich bekomme beim Versuch den Motioneye Snapshot zu erstellen immer die Fehlermeldung "Failed to connect to <IP Adresse> port 7999: Verbindungsaufbau abgelehnt"
Ich habe die Ports 7999, 8081 und 8765 im Container frei gegeben (der ioBroker läuft auf Port 7777, also kein Konflikt)
Der Eintrag motion_control_localhost false ist auch gesetzt (und motioneye auch neu gestartet)Ansonsten kann ich problemlos auf den Videostream in VIS zugreifen, in Motioneye werden Bilder / Videos gespeichert, alles fein.
Manuell kommt auch ein Bild in Telegram an.Ich nehme an, es hängt mit der Netzwerkconfiguration des Containers zusammen, als wenn die Verbindungen nur aus dem Container heraus gehen, nicht jedoch hinein.
Kann jemand helfen?
Grinface
Edit:
Nach diversen Neustarts, Änderung an den Berechtigungen funktioniert es jetzt.
Ich habe weitere Scripte erstellt, die die Bewegungserkennung steuern, je nachdem, ob jemand zu Hause ist oder nicht.
Dazu gibt es laut Motion die Actions
{IP}:{port}/{camid}/detection/start Start or resume motion detection.
{IP}:{port}/{camid}/detection/pause Pause the motion detection.Quelle: https://motion-project.github.io/motion_config.html#Signals_Sent
Wenn ich das Pause Kommando absetze ist alles fein, die Erkennung läuft nicht mehr.
Leider funktioniert das Start Kommando nicht. Gehe ich über die GUI, kann ich die Erkennung wieder starten, wenngleich dort der pausierte Status nicht angezeigt wird.Hat jemand eine Idee wie die Start Action funktioniert?
-
@fu_zhou eine sehr schöne / Gute Anleitung von dir!
vielleicht kannst du mir aber etwas auf die Sprünge Helfen.
Ich hänge an den Punkt, das wenn ich ein Objekt Trigger, das EventStart ausgeführt werden sollte.
Das passiert bei mir aber scheinbar nicht, es wird keine Video / Datei gespeichert.Ich habe das soweit nun auch nachgebaut. Die Position wäre dann wohl für mich Interessant:
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.curl <192.168.178.53>:8081/set/javascript.0.motioneye.getEventStart?value=true
curl <192.168.178.53>:8081/set/javascript.0.motioneye.getEventStop?value=true
oder so habe ich es auch versucht:
curl 192.168.178.53:8082/set/javascript.0.motioneye.getEventStart?value=true
curl 192.168.178.53:8082/set/javascript.0.motioneye.getEventStop?value=true
Über das Objekt/Trigger ( Live_Bild_Hof_2_Trigger) sollte nun die Aufnahme gestartet werden
Müsste das Blocky nicht etwas anderes aussehen?
Ich würde es mehr verstehen wen der Externe Trigger das Event start oder stop ausführen würde.
Oder ich habe noch wo ein anderen Fehler drin?LG mit den Besten Grüßen
-
@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=true
Definiere 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 Danke für deine Antwort,
Ich habe die Camera nun wieder zurückgeschickt und werde mein System nochmal neu Aufsetzten.
Warte Aktuell auf die Lieferung vom neuen Raspi 4.Der Plan ist dann Iobroker + Motioneye auf einen Raspi zu bringen.
Ich hatte noch Probleme das mein Raspi 3 wo mein Vis aufruf im Firefox Browser lief (Monitor Ansicht) 1 mal am Tag "hängen" geblieben ist.
Hier schein ein Problem zu sein bei der Verwendung von 2 Raspis.In den Objekten unter javascript.0 sind die Datenpunkte angelegt?
- Ja hatte ich.
Ist curl installiert?
- Nein
Werde dann später mal deine Schritt Anleitung durchführen.
-
@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 Done
Bei 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 ...
-
@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? -
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.
-
@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 -
@fu_zhou Hat sich erledigt. Habe es mit "/detection/pause" gelöst
-
@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/start
bzw.
curl http://IPIOBROKER:7999/1/detection/pause
Die 1 im Link steht für Kamera 1...also anpassen.
Den Status kannst du mit
http://IPIOBROKER:7999/1/detection/status
abfragen.
Bei mir hatte es erst nicht geklappt, bis ich in der motion.conf auf
webcontrol_localhost off
geä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?
-
@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.