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

Mit ** gekennzeichne Links auf dieser Seite sind Affiliatelinks.

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.

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
FHEM-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'

Newsletter

Trage Dich jetzt in den Newsletter ein und genieße dadurch viele Vorteile:

  • 5€-Gutschein als Dankeschön
  • Zugang zu exklusiven Inhalten
  • Rabattaktionen für Kurse
  • Angebote für Produkte

* Durch Angabe meiner E-Mail-Adresse erkläre ich mich damit einverstanden, dass mir regelmäßig Informationen und Produktempfehlungen aus dem Fachgebiet Smart Home zugesendet werden. Mit dem Eintrag akzeptieren Sie unsere Datenschutzbestimmungen. Meine Einwilligung kann ich jederzeit widerrufen.

Matthias Kleine

Matthias Kleine

Großer Fan und Anhänger von OpenSource-Projekten und erweiterbaren Haus-Automatisierungskomponenten. Je offener und flexibler das System, desto besser. Ich lege mich ungern auf einzelne Protokolle oder Standards fest, sondern probiere aus allen Welten das Beste zu verheiraten. Unterwegs als Softwareentwickler, Trainer und Blogger im Bereich Smart Home.

Auf YouTube und hier im Blog gibt es bereits unzählige kostenlose Videos, Informationen und Tutorials. Wenn Dir das noch nicht reicht, ist ein Training genau das richtige für Dich! Die folgenden Trainings haben den Vorteil, dass immer von Anfang an gestartet wird und Du ohne Vorwissen teilnehmen kannst.