FHEM Tutorial-Reihe - Part 11: Benachrichtigung mit Bild bei Bewegung

Mit ** gekennzeichnete Links auf dieser Seite sind Affiliatelinks.

FHEM Tutorial-Reihe - Part 11: Benachrichtigung mit Bild bei Bewegung
FHEM Tutorial-Reihe - Part 11: Benachrichtigung mit Bild bei Bewegung
  • Matthias Kleine
  • 14.07.2016
  • Hardware
  • Integration
  • Benachrichtigung

Weiter geht es mit einer IP-Kamera. Diese legt auf dem neu installierten FTP-Server auf dem Raspberry Pi Daten ab. Sobald ein neues Bild gespeichert wurde, wird dieses von einem Daemon erkannt und an FHEM gesendet. In FHEM haben wir dann alle Möglichkeiten. Wir entscheiden uns für eine Push-Notification mit einem Link zum Bild auf dem Apache-Server.

Achtung: Dieser Inhalt wurde vor mehreren Jahren aufgenommen und ist nicht mehr aktuell! Es ist nicht empfohlen nach dieser Anleitung vorzugehen.

Was genau wird alles gelernt?

  • wie man einen FTP-Server auf dem Raspberry Pi installiert und konfiguriert
  • wie man die Datei- und Verzeichnisrechte mit ACLs verwaltet
  • wie man einen Daemon einrichtet, welcher auf neue Dateien reagiert
  • wie per curl readings in FHEM mit den Datei-Informationen gesetzt werden können
  • wie man auf diese Änderung reagiert und eine Push-Nachricht versendet
Hausbau-Kurs

Folgende Befehle braucht ihr:

sudo apt-get install proftpd-basic
sudo vi /etc/proftpd/proftpd.conf

UseIPv6                         off
ServerName                  "FHEM"
sudo vi /etc/proftpd/conf.d/proftp-custom.conf

# Ftp user doesn't need a valid shell
<Global>
    RequireValidShell off
</Global>

# Default directory is ftpusers home
DefaultRoot ~ ftpuser

# Limit login to the ftpuser group
<Limit LOGIN>
    DenyGroup !ftpuser
</Limit>
sudo adduser ftpuser --shell /bin/false --home /var/www/upload
  • Passwort vergeben 2x
  • Die anderen Werte ruhig leer lassen
sudo service proftpd restart
cd /var/www/upload/
sudo mkdir camera
sudo chown ftpuser:ftpuser camera/
sudo setfacl -dm g:pi:rwx /var/www/upload/camera/
sudo setfacl -dm u:fhem:rwx /var/www/upload/camera/
sudo setfacl -Rm g:pi:rwx /var/www/upload/camera/
sudo setfacl -Rm u:fhem:rwx /var/www/upload/camera/
getfacl .
define OUT.Bewegung dummy
attr OUT.Bewegung event-on-change-reading current_file
curl http://localhost:8083/fhem?cmd=setreading%20OUT.Bewegung%20current_file%20test
sudo apt-get install inotify-tools
cd /opt/fhem/
sudo vi camerawatch.sh
#!/bin/bash

cd /var/www/upload/camera

mypidfile=/opt/fhem/camerawatch.sh.pid
trap "rm -f '$mypidfile’" 2
echo $$ > "$mypidfile"

inotifywait -m -e create /var/www/upload/camera |
while true; do
    while read $T path action file; do
        rm -f `ls -td -1 /var/www/upload/camera/** | awk 'NR>50'`
        echo "The file '$file' appeared in directory '$path' via '$action'"
        curl "http://localhost:8083/fhem?cmd=setreading%20OUT.Bewegung%20current_file%20$file"
    done
done
sudo chown fhem:dialout camerawatch.sh
sudo apt-get install inotify-tools
sh camerawatch.sh
cd /etc/init.d/
sudo vi camerawatch
#!/bin/sh
### BEGIN INIT INFO
# Provides: camerawatch
# Required-Start: $network $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start daemon at boot time for camerawatch
# Description: Enable service provided by daemon.
### END INIT INFO
export PATH=$PATH:/usr/local/bin
PID=`cat /opt/fhem/camerawatch.sh.pid 2>/dev/null`
case "$1" in
start)
if ps -p $PID > /dev/null 2>&1; then
    echo "Camerawatch is already running"
else
    su - "fhem" -c "sh /opt/fhem/camerawatch.sh > /dev/null 2>&1 &"
    echo "Camerawatch starting"
    sleep 2
    $0 status
fi
;;
stop)
if ! ps -p $PID > /dev/null 2>&1; then
    echo "Camerawatch is not running"
else
    kill $PID
    echo "Camerawatch closed"
fi
;;
restart)
if ! ps -p $PID > /dev/null 2>&1; then
    $0 start
else
    $0 stop
    $0 start
fi
;;
status)
if ps -p $PID > /dev/null 2>&1; then
    echo "Camerawatch is running PID $PID"
else
    echo "Camerawatch is not running"
fi
;;
*)
echo "Usage: $0 {start|stop|status|restart}"
exit 1
;;
esac
exit 0
sudo chmod 755 /etc/init.d/camerawatch
sudo update-rc.d camerawatch defaults
sudo service camerawatch start
sudo vi /etc/passwd
fhem:x:999:20::/opt/fhem:/bin/bash
define n_Bewegung notify OUT.Bewegung set Pushover_Client msg 'Bewegung vor der Tür' '$EVENT'
cd /var/www/html
sudo ln -s ../upload/camera/ camera
sudo chown -h www-data:www-data camera
define n_Bewegung notify OUT.Bewegung set Pushover_Client msg 'Bewegung bemerkt' 'Es bewegt sich etwas draußen' '' 2 'siren' 30 3600 'Jetzt ansehen' 'http://192.168.178.21/camera/$EVTPART1'
Du willst mehr?

Smart-Home-Trainings von A-Z

Steig noch tiefer in die Themen ein und meistere Deine Projekte! Über 13.000 Teilnehmer konnten sich schon von der Qualität der Online-Kurse überzeugen.

ioBroker-Master-Kurs

ioBroker-Master-Kurs

Mehr Infos
Hausbau-Kurs

Hausbau mit KNX

Mehr Infos
Lox-Kurs

Lox-Kurs

Mehr Infos
Node-RED-Master-Kurs

Node-RED-Master-Kurs

Mehr Infos