-
Notifications
You must be signed in to change notification settings - Fork 85
[DE] Konfigurationsdatei
Beim Start von DoorPi ist der Parameter --configfile erforderlich und muss mit absoluten Pfad auf eine Konfigurationsdatei verweisen. Wenn dieser Parameter fehlt, oder die Konfigurationsdatei nicht lesbar ist, wird DoorPi mit entsprechender Fehlermeldung beendet.
DoorPi wird über eine Konfigurationsdatei nach dem Schema einer Windows-INI-Datei konfigurtiert. Es gibt Sektionen und Parametern. Sektionen sind von [ und ] eingeschlossen. Parameter bestehen aus einem Schlüssel und einem Wert, getrennt von einem Gleichheitszeichen "=" Beispiel:
[Sektionsname]
Schlüssel1 = Wert1
Schlüssel2 = Wert2
[Sektion2]
Schlüssel = Wert mit Sonderzeichen (; - . +) und [ sowie ]
Die Konfigurationsdatei besteht aus den optionalen und erforderlichen Abschnitten und manche Abschnitte können optionale Schlüssel enthalten. Alle optionalen Sektionen und Schlüssel werde ich in diesem Wiki kursiv markieren.
Sektionen werden in der Überschrift h2 (Beispiel) und Schlüssel in h3 (Beispiel) dargestellt.
In der Konfigurationsdatei wird (neben der Grundkonfiguration) festgelegt, wie (= Aktionen) auf Ereignisse (= Events) reagiert werden soll.
####Übersicht der erforderlichen Sektionen
- DoorPi** (Grundkonfiguration DoorPi selbst)
- InputPins (Eingangskanäle, z.B. Klingeltaster)
- SIP-Phone (VoIP Kommunikationskanal zu den Telefonen)
####Übersicht der optionalen Sektionen
- OutputPins (Ausgangskanäle, z.B. Türöffner)
- AdminNumbers (Telefonnummern die als Admin interpretiert werden = vertrauenswürdige Telefonnummern)
- DTMF (DTMF = Mehrfrequenzwahlverfahren = Telefontaste drücken um Aktionen auszulösen, z.B. Türöffner betätigen wenn # gedrückt wird)
- SMTP (SMTP = Simple Mail Transfer Protocol = Konfiguration, wenn E-Mail-Versand genutzt werden soll, z.B. Aktion mailto:)
####Sektionen für Events (immer optional) Es gibt innerhalb von DoorPi verschiedene Events, auf die reagiert werden kann. Um ein Event zu nutzen und Aktionen zu hinterlegen reicht es aus, eine Sektion mit dem Namen des Events einzutragen. Die dazugehörigen Schlüssel dienen der Sortierung beim Ausführen und die Werte enthalten Aktionen, die seriell abgearbeitet werden. Beispiel für das Event OnCallIncomming:
[OnCallIncomming]
10 = mailto:[email protected],Incoming call from !remote_uri!,DoorPi wurde von der Nummer !remote_uri! angerufen.
20 = sleep:1
Das Event OnCallIncomming ruft also 2 Aktionen nacheinander auf. Zuerst wird eine Mail an [email protected] versendet und danach wird 1 Sekunde gewartet.
- OnStartup (DoorPi wird gestartet, reagiert aber noch nicht auf InputPins)
- BeforeKeyPressed (es wurde ein Signal von einem InputPin erkannt aber noch keine dafür definierte Aktion ausgeführt)
- AfterKeyPressed (es wurde ein Signal von einem InputPin erkannt und alle dafür definierten Aktion ausgeführt)
- OnShutdown (DoorPi wird gestoppt, reagiert schon nicht mehr auf InputPins)
- OnCallMediaStateChange (MediaState von pjsua hat sich während eines Telefonats geändert - wird vermutlich nicht benötigt)
- OnCallStateChange (der Status eines Telefonats hat sich geändert, z.B. calling zu connected)
- OnCallStateConnect
- AfterCallStateConnect
- OnCallStateDisconnect
- AfterCallStateDisconnect
- OnDTMFAction
- BeforeCallIncoming
- OnCallReconnect
- AfterCallReconnect
- AfterCallBusy
- OnCallIncomming
- AfterCallIncomming
- OnCallReject
- AfterCallReject
Einstellung die den SIP-Server beschreiben. Das kann entweder ein lokaler (z.B. Asterisk) oder ein entfernter (z.B. FritzBox) sein. Wie eine Fritzbox dafür genutzt werden kann findet man hier: http://avm.de/nc/service/fritzbox/fritzbox-7490/wissensdatenbank/publication/show/42_IP-Telefon-an-FRITZ-Box-anmelden-und-einrichten/
Es können folgende Sektionen und Parameter vorhanden sein (kursiv = optional):
Aktuell baut DoorPi nur auf dem Modul pjsua auf und somit ist "pjsua" auch der einzige mögliche Parameter. Zukünftig können hier weitere Auswahlmöglichkeiten kommen. Mehr Infos zu pjsua gibt es hier: http://www.pjsip.org/pjsua.htm
Der SIP-Server (idealerweise die IP-Adresse)
Der Benutzername um sich am SIP-Server anzumelden.
Das Passwort für die Anmeldung am SIP-Server.
Der Domänenname des SIP-Servers.
Mit Hilfe von DTMF (Mehrfrequenzwahlverfahren) ist es möglich, während eines Gespräches Aktionen auszulösen. Beispiel: An der Türsprechanlage drückt jemand den Klingelknopf. Darauf hin klingelt das Telefon und beim Abheben wird eine Gesprächsverbindung zwischen Türsprechanlage und Telefon hergestellt. Wenn jetzt am Telefon die Taste # gedrückt wird, soll der automatische Türöffner betätigt werden. Das Drücken der Taste # wird mittels DTMF realisiert und von DoorPi ausgewertet.
Ein Parameter sollte nicht in anderen Parametern vorkommen. Wenn z.B. # zum Öffnen der Tür genutzt wird, sollten die anderen Parameter keine # enthalten (z.B. *#01# wird dann zweimal den Türöffner betätigen).
Es gibt folgende Konfigurationsmöglichkeiten:
Starte den Dienst DoorPi neu ('sudo /etc/init.d/doorpi restart'). Beispiel *7378278 steht für T9-Schreibweise von *restart
Starte den Server neu ('sudo reboot') Beispiel *732668 steht für T9-Schreibweise von *reboot
Die letzte Konfigurationsmöglichkeit ist z.B. für den Türöffner geeignet. Mit der Zeile: "#" = out:6,1,0,3 wird folgendes erreicht: Warte auf DTMF # und steuere Output-Pin 6 von Wert 1 auf Wert 0 und warte dazwischen 3 Sekunden. Es wird also der elektrische Türöffner für 3 Sekunden betätigt.
Welche Tasten gibt es und welche Funktion haben diese. Die Inputpins werden beim Start von DoorPi geprüft. Wenn eine Abfrage des Status nicht möglich ist (z.B. Fehlkonfiguration von GPIO oder außerhalb des Bereiches bei PiFace) wird DoorPi mit einer Fehlermeldung beendet. Für PiFace gibt es InputPins 0 bis 7. Für GPIO müssen die Pins eingetragen werden, z.B. Pin 11 ist GPIO 17. Also muss auch die 11 eingetragen werden. Es gibt als Parameter:
Stoppt DoorPi (egal ob als Anwendung oder als Dienst)
Rufe die angegebene Nummer an. Dabei muss es sich um eine Nummer handeln, die der SIP-Server erreichen kann. Somit können unter Umständen auch die internen Telefonnummern angerufen werden (z.B. **610 bei FritzBox).
Welche Ausgänge gibt es und welche Funktion haben diese. Die Outputpins werden beim Start von DoorPi geprüft. Wenn eine Abfrage des Status nicht möglich ist (z.B. Fehlkonfiguration von GPIO oder außerhalb des Bereiches bei PiFace) wird DoorPi mit einer Fehlermeldung beendet.
Die Vergabe eines Namens ist optional und kann frei gestaltet werden. Der Name dies Outputpins wird in der Logdatei ausgegeben, wenn der Ausgang angesteuert wird und kann so zur Nachverfolgung im Fehlerfall oder zur Auswertung genutzt werden.
DoorPi ist (noch) eine Sammlung von Konfigurationsparametern, die ich keinem anderen Bereich zuordnen konnte. Parameter sind:
Bestimmt einen Ausgang (der auch bei Outputpins definiert sein muss) der im Sekundentakt blinkt und somit anzeigt, dass DoorPi noch aktiv ist.
Ein optionaler Wählton, der an der Türstation gespielt wird, nachdem ein Klingelknopf gedrückt wurde und während das Telefon noch klingelt. Das Abspielen Wird sofort beendet, wenn ein Gespräch zu Stande kommt.
Leer lassen damit kein Ton abgespielt wird. Beliebigen gültigen Pfad zu einer Datei eintragen, die als Wählton genutzt wird. Wenn diese Datei nicht existiert, wird eine Wählton-Datei erzeugt und genutzt.
Ein optionaler Parameter zu einem gültigen Dateinamen, unter dem die Gespräche aufgezeichnet werden. Wenn der Parameter leer ist, werden keine Gespräche aufgezeichnet. Der Parameter wird zur Erstellung der Record-Datei mit strftime geparst und kann somit z.B. folgende Platzhalter enthalten:
- %Y - Jahr vierstellig
- %m - Monat zweistellig
- %d - Tag zweistellig
- %H - Stunde im 24-Stundenformat
- %M - Minute zweistellig
- %S - Sekunde zweistellig
Zusätzlich gibt es den Platzhalter %LastKey%, der durch die Pin-Nummer ersetzt wird, die gedrückt wurde. So lässt sich erkennen, wann wo geklingt wurde. Zusätzlich sind diese Angaben natürlich auch in der Log-Datei zu finden.
Mehr Platzhalter unter: https://docs.python.org/2/library/datetime.html#strftime-strptime-behavior
Ein optionaler Parameter der true oder false annehmen kann. Bei true wird die Aufnahme von records bereits mit dem Drücken der Klingeltaste gestartet. Bei False wird erst begonnen, wenn das Gespräch hergestellt wurde. Beides natürlich nur, wenn records überhaupt gesetzt ist.
Unter AdminNumbers sind Telefonnummern ausgeführt, die den DoorPi anrufen können. DoorPi kann im SIP-Server eine Telefonnummer zugewiesen werden, die entweder von intern oder von extern angerufen werden kann. Nur Telefonnummern, die hier aufgelistet sind und den Wert "activ" haben, werden auch wirklich durchgestellt. Alle anderen Nummern werden abgewiesen. Somit kann ich z.B. vom Handy aus die Türsprechanlage anrufen und "hören" was da los ist. An der Türsprechanlage wird keine separate Benachrichtigung ausgegeben, die anzeigt, dass eine Verbindung hergestellt wurde. Es ist also eine Art Bybyphone-Modus.
Ein immer aktuelles Beispiel ist hier zu finden: https://github.com/motom001/DoorPi/blob/master/conf/doorpi.cfg