Send camera picture with KNX

This articel describes how to send a picture of a camera triggerd by a KNX sensor.

Prerequisite

The following environment should be fully setup:

  • KNX bus system
    • programmed sensor
    • group adress including the mentionend sensor above (e.g. presence true/false)
  • SmarthomeNG version 1.7.2 (Debian)
  • Zoneminder verion 1.34.26 (Debian)
  • SMTP server hosted by an ISP with authentication

This network access is requiered:

  • SmarthomeNG needs access to Zoneminder on port 6802
  • Zoneminder need to communicate through port 587 with the SMTP server

Configuration

FIXME **This page is not fully translated, yet.

Die Konfiguration startet mit Zoneminder, da dies etwas mehr Aufwand erfordert. Dieser Blogeintrag wurde als Basis verwendet und es werden einige Informationen daraus für diesen Artikel abgeleitet.

Zoneminder

Dieser Abschnitt beschreibt die Konfiguration innerhalb von Zoneminder, damit via Telnet ein Kamerabild aufgenommen und via E-Mail verschickt wird.

Folgende Schritte müssen in Zoneminder durchgeführt werden:

  • Versand von E-Mails konfigurieren
  • Filter anlegen
  • Trigger-Funktion aktivieren

Versand der E-Mail

Zunächst msmtp installieren:

sudo apt install msmtp

msmtp erwartet eine Konfigurationsdatei. Die Datei /etc/msmtprc erstellen und Dateirechte sudo chmod 744 /etc/msmtprc setzen.

Die Konfigurationsdatei muss mit Inhalt gefüllt werden. Die Parameter für die Konfigurationsdatei sind hier zu finden.

Getestet kann die Konfig mit diesem Befehl: echo „Subject: sendmail test“ | msmtp -v dein@mailadresse.tld

Zoneminder verwendet den Befehl „sendmail“. Wenn der Befehl in die Konsole eingegeben wird und es erscheint eine Fehlermeldung und nicht die Versionsinfo von msmtp, muss noch ein entsprechend Symlink erstellt werden.

Mit dem Befehl $PATH die Umgebungsvariablen ausgeben lassen. Ausgabe:

-bash: /usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games: No such file or directory

Symlink mit sudo ln -s /usr/bin/msmtp /usr/bin/sendmail setzen.

Erneut testen: echo „Subject: sendmail test“ | sendmail -v dein@mailadresse.tld

Unter Optionen im Abschnitt E-Mail müssen folgende Einstellungen getroffen werden: Hacken bei NEW_MAIL_MODULES setzen, alles weitere ausfüllen. SSMTP_MAIL aktivieren und SSMTP_PATH folgendes eintragen: /usr/bin/msmtp

Filter anlegen

In Zoneminder Navigationspunkt Filter öffnen und einen neuen Filter anlegen. Ein Beispiel mit den wichtigsten Einstellungen in Rot markiert:

ZMTrigger aktivieren

Die Aktivierung von ZMTrigger wird auch in diesem Wiki Eintrag bei Zoneminder beschrieben.

Optionen, System und OPT_TRIGGERS aktivieren. Dienst neu starten.

Kontrolle wie im Wiki-Beitrag beschrieben: sudo lsof -i -P -n | grep LISTEN

Ausgabe (gekürzt): zmtrigger 433 www-data 4u IPv4 1388292233 0t0 TCP *:6802 (LISTEN)

Kontrolle ob der Filter auslöst mit Telnet: telnet kamerasystem.tld 6802

Befehl in der Telnet Session: 3|on+3|10|ZMTEST|Text|Text

Bei richtiger Konfiguration, wird jetzt die Mail versendet.

SmarthomeNG

In SmartHomeNG eine neue Logik erstellen.

Code

Folgenden Python kann als Grundlage verwendet werden.

  1. #!/usr/bin/env python3
  2. # beispiel.py
  3.  
  4. #logic.logger.info("Logik Präsenz start")
  5. if sh.Voller.Pfad.zum.Item():
  6. import telnetlib
  7. HOST = "kamerasystem.tld"
  8. PORT = 6802
  9. # B<id>|B<action>|B<score>|B<cause>|B<text>|B<showtext>
  10. tn = telnetlib.Telnet(HOST,PORT)
  11. tn.write(b"3|on+3|10|ZMTEST|Präsenz|Präsenz\n")
  12. tn.write(b"ls\n")
  13. tn.write(b"exit\n")
  14. exit
Paramater

In den Parameter müssen noch die beobachtenten Items (Watch Item(s)) gesetzt werden und ggf. knx_listen.

Nachdem die Logik aktiv geschaltet wurde, wird das Kamerabild verschickt, sobald das Item auslöst.