FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Pille90 am 21 Januar 2021, 10:42:47

Titel: Änderungsdatum einer Datei über http überwachen:
Beitrag von: Pille90 am 21 Januar 2021, 10:42:47
Hallo Zusammen,

ich bin momentan dabei mir einen Auslöser zu basteln welche mir sagt, dass jemand vor meiner Kamera steht.

=> Leider bietet die Ctronics sowas scheinbar nicht so schön an wie beispielsweise meine anderen Foscams sodass ich eine umgehungslösung suche.
=> Auch in der Kameralog ist keine Eintrag einer Bewegungserkennung.
=> Andere spezifischere KameraForen haben auch keine Lösung

Folgende Überlegung habe ich jetzt angestellt:

In meiner Kamera wird bei Auslösung eine Datei aktualisert:

http://Kamera:Port/log/spap.jpg?usr=admin&pwd=admin

Diesen snap kann ich ja ohne Probleme in FHEM einbinden. Meine Frage kann ich mir hier auch den LAST CHANGE einbinden und daraus einen Trigger machen?

Vielen Dank.

Florian
Titel: Antw:Änderungsdatum einer Datei über http überwachen:
Beitrag von: MadMax-FHEM am 21 Januar 2021, 10:57:17
Es gibt ein Modul iNode-Irgendwas.

"help inotify" in FhemWeb-cmd...

Das überwacht lokale Dateisysteme und gibt dann entsprechende Events von sich darauf dann notify/DOIF etc.

Gruß, Joachim
Titel: Antw:Änderungsdatum einer Datei über http überwachen:
Beitrag von: Wernieman am 21 Januar 2021, 11:06:30
Dazu müsste er aber das http-Dateisystem "einbinden". Geht zwar .... aber ....

@Pille
Welche "Auflösung" brauchst Du denn? Du könntest z.B. jede Minute pollen, würde aber im WorsCase bedeuten, das Du eine Bewegung erst eine Minute später mitkriegst.

Kann Deine Cam wirklich keine Aktion (außer Dateischreiben) machen, wenn ausgelöst wird? FTP/Mail oder andere Aktionen könntest Du anderweitig Abgraben und einen Event generieren lassen ....
Titel: Antw:Änderungsdatum einer Datei über http überwachen:
Beitrag von: MadMax-FHEM am 21 Januar 2021, 11:10:07
Zitat von: Wernieman am 21 Januar 2021, 11:06:30
Dazu müsste er aber das http-Dateisystem "einbinden". Geht zwar .... aber ....

Ja darüber bin ich auch erst gestolpert...
...habe aber das dann so interpretiert als ginge das/wäre schon geschehen ;)

Zitat
Diesen snap kann ich ja ohne Probleme in FHEM einbinden. Meine Frage kann ich mir hier auch den LAST CHANGE einbinden und daraus einen Trigger machen?

Jep. Die Anmerkung, bzgl. z.B. per FTP was ablegen hatte ich auch schon auf der Zunge... ;)
Wäre für Kameras die ich so angesehen habe meine "Notlösung" gewesen...

Gruß, Joachim
Titel: Antw:Änderungsdatum einer Datei über http überwachen:
Beitrag von: Wernieman am 21 Januar 2021, 11:13:00
Ich habe es hier mit einem Gerät, das eine nur eMail generiert .... schnell eine eigene Domain (intern) mit "Mailserver" aufsetzen und dort eMail (geht in Linux supereinfach) verarbeiten lassen ....
Dieses dann in FHEM reinpusten war nur noch eine Fingerübung ...

Mit anderen "Diensten" ist es meistens ebenso, solange das Gerät überhaupt irgendetwas "Trickert" oder "Pushed". Sonst bleibt nur pollen übrig ...
Titel: Antw:Änderungsdatum einer Datei über http überwachen:
Beitrag von: Pille90 am 21 Januar 2021, 11:27:07
Danke für die schnellen Antworten. Ja das Teil kann die nomalen Auslöser FTP, Mail, etc. Ich dachte nur mit dem Snap wäre die einfachste.

Ich lasse mir bei jeder Auslösung ein Bild auf den FTP-Server speichern. Die Cam macht für jeden Tag einen neuen Ordner. Wie könnte ich hier abgrabben das eine neue Datei gkommen ist.

Verwenden wir folgendes Beispiel.

Mutterverzeichnis ftp://192.168.178.666/Kamera/
Tagesverzeichnis ftp://192.168.178.666/Kamera/20200121

Was muss ich dann in FHEM genau machen, damit im gesamten Mutterverzeichnis als auch in den Unterverzeichnissen auf neue Dateien überwacht wird?

Zur Info FTP und FHEM sind auf verschiedenen Systemen

Danke nochmal
Titel: Antw:Änderungsdatum einer Datei über http überwachen:
Beitrag von: Christoph Morrison am 21 Januar 2021, 11:47:22
Was sagt denn z.B. (mit deinen Daten)

curl -I http://Kamera:Port/log/spap.jpg?usr=admin&pwd=admin

?
Titel: Antw:Änderungsdatum einer Datei über http überwachen:
Beitrag von: Wernieman am 21 Januar 2021, 12:03:16
Ich würde auf dem Server ein Scrip ablegen, was es prüft ...

z.B. so: (Auf die Schnelle, Ohne Verabreitung etc.)
#!/bin/bash
while true; do
  inotifywait -qr -e create "./testdir"
  find "./testdir" -cmin -1
done


Wie gut ist Dein Linux?
Titel: Antw:Änderungsdatum einer Datei über http überwachen:
Beitrag von: Pille90 am 21 Januar 2021, 12:44:01
Mein Linux ist jetzt nicht so ausgeprägt, nur Einsteigerlevel ;)

Das Script anlegen und dann im Hintergrund laufen lassen oder? (Sprich mit dem "Autostart" wie auch immer der bei LInux gleich wieder heißt) starten lassen

Denkst du dass das auf den Rapi laufen würde oder dass eine Permanente Überwachung vom Raspi auf den FTP die Performance frisst?

Titel: Antw:Änderungsdatum einer Datei über http überwachen:
Beitrag von: Wernieman am 21 Januar 2021, 12:50:30
durch inotifywait wird das Script nur getrickert, wenn eine Änderung im Verzeichnis (oder darunter) eintrifft. In diesem Falle sogar "nur" ein CREATTE. Gibt auch andere Events. Auch der Speicherverbraucht sollte "minimal" sein.

Ist jetzt nur die Frage, wie "genau" Du die Info brauchst. Also wie genau Du gegen "Fehlalarme" abgesichert sein willst, da ein "das Verzeichnis anlegen" ein create auslöst.

ist Dein FHEM per telnet oder nur per http erreichbar?

Titel: Antw:Änderungsdatum einer Datei über http überwachen:
Beitrag von: Pille90 am 21 Januar 2021, 12:59:20
Also in dem Verzeichnis aus meinem Beispiel passiert nichts anderas als Speicherungen von der Kamera, dass heißt selbst wenn alle Creates getriggert werden würde das passen, da ja maximal einer mehr pro Tag kommet, nämlich wenn der Tagesordner erstellt wird, oder?!

FHEM ist sowohl per http als auf telnet erreichbar.

Ziel des Spieles soll halt am Schluss sein, dass ich in FHEM einen Dummy habe, welcher mir  entweder das Datum der letzten Änderung (Create) gibt oder auch nur den Wert "Neu" aktualisiert. Aus diesem Dummy würde ich dann immer bei Statusänderung/Aktualisierung eine Aktion auslösen lassen wollen (Bild per Telegrambot an mich senden)
Titel: Antw:Änderungsdatum einer Datei über http überwachen:
Beitrag von: Wernieman am 21 Januar 2021, 13:18:13
Mal auf die schnelle, die systemd Einrichtung kann ich Dir aktuell nicht sagen:
#!/bin/bash
while true; do
  message=$(inotifywait -qr -e create "./testdir")
  #find "./testdir" -cmin -1
  #echo $message
  if [ ! -z "$message" ] && $(echo "$message" | grep -q -v ISDIR)
  then
    datei=$(echo "$message" | sed "s/^.* //g")
    echo $datei   
    echo -en "set <Dummy> <Tricker>\nquit\n" | nc -w 5 <FHEM-server> 7072 >/dev/null    # <- Hier jetzt die FHEM Benachrichtigung, bitte anpassen!
  fi
done


Habe aber jetzt kein Fehlercode, Fehlerbehandlung eingebaut. Ist erstmal "Quick and Dirty"

Nur mal am Rande und weil ich es vor mir habe, ein Shell-Programm zur Info von FHEM über telnet würde z.B. lauten
#!/bin/bash
# Programme
nc="/bin/nc"
echo="/bin/echo"
log="/var/log/fhem/schalte_fhem"
server="<FHEM-Server>"
debug=0

if [ $# -lt 2 ];
then
  echo "Zuwenig Parameter!"
  echo "1. Was"
  echo "2. Wie (on,off)"
  exit 1
fi

if [ "$debug" -ne 0 ]
then
  echo "`date` : Debug: Schalte Fhem mit \"$0 $@\"" >>$log
fi

$echo -en "set ${1} ${2}\nquit\n" | $nc -w 5 ${server} 7072 >/dev/null
error=$?
if [ "$error" -ne 0 ]
then
  echo "`date` : Fehler $error beim Aufruf \"$0 $@\"" >>$log
  exit 1
fi


Wenn Du ein Passwort für Telbet hast, kann dieses mit eingebaut werden:
#!/bin/bash
# Programme
nc="/bin/nc"
echo="/bin/echo"
log="/var/log/fhem/schalte_fhem"
server="<FHEM-Server>"
passwd="<Passwort>"
debug=0

if [ $# -lt 2 ];
then
  echo "Zuwenig Parameter!"
  echo "1. Was"
  echo "2. Wie (on,off)"
  exit 1
fi

if [ "$debug" -ne 0 ]
then
  echo "`date` : Debug: Schalte Fhem mit \"$0 $@\"" >>$log
fi

$echo -en "${passwd}\nset ${1} ${2}\nquit\n" | $nc -w 5 ${server} 7072 >/dev/null
error=$?
if [ "$error" -ne 0 ]
then
  echo "`date` : Fehler $error beim Aufruf \"$0 $@\"" >>$log
  exit 1
fi

Titel: Antw:Änderungsdatum einer Datei über http überwachen:
Beitrag von: frank am 21 Januar 2021, 13:23:21
oder mit einer mail plus modul mailcheck trigger generieren.
Titel: Antw:Änderungsdatum einer Datei über http überwachen:
Beitrag von: Wernieman am 21 Januar 2021, 13:25:42
Zitatmodul mailcheck
Meines Wissens "pollt" das aber ... oder?
Titel: Antw:Änderungsdatum einer Datei über http überwachen:
Beitrag von: frank am 21 Januar 2021, 13:34:42
Zitat von: Wernieman am 21 Januar 2021, 13:25:42
Meines Wissens "pollt" das aber ... oder?
wenn man ein imap mailkonto hat, wird auch gepusht.
eventuell auch providerabhängig, ob das imap protokoll "kompatibel" genug ist.