Plugin-Daten
AutorChristian Wörstenfeld
Logo
StatusSTABLE
Version2024.6.24
Min. LB Version1.0
Release Downloadhttps://github.com/Woersty/LoxBerry-Plugin-Text2SIP/archive/refs/tags/2024.06.24.zip
BeschreibungDas Text2SIP Plugin bietet die Möglichkeit, eine Sprachausgabe per Telefon zu realisieren.
Diskussionhttps://www.loxforum.com/forum/projektforen/loxberry/plugins

Text2SIP

Version History…

Änderungshistorie


Aufgabe des Plugins

  • Das Text2SIP Plugin von Christian Wörstenfeld bietet die Möglichkeit, eine Sprachausgabe per Telefon zu realisieren.
  • Hierbei verwendet das Plugin einen Text welcher mit einer synthetischen Stimme am Telefon vorgelesen wird.
  • Parallel können MFV-Ziffern am Telefon gedrückt werden, welche über das Plugin an eine http://-Adresse weitergeleitet werden können.
  • Es können Werte aus dem Miniserver ausgelesen werden, welche in den Text durch die Eingabe von ## einmalig eingefügt werden können.
  • Es ist möglich, durch die Eingabe eines vorher definierten MFV-Codes aufzulegen.

Mögliche Einsatzgebiete

  • Signalisierung bei Betätigung des Klingelknopfes
  • Benachrichtigung bei Alarmen
  • Ansagen von Werten oder Zuständen

Konfigurationsoptionen

  • PLUGIN_USE - Schaltet die Funktion des Plugins ein oder aus.
  • DEBUG_USE - Legt fest, wie ausführlich die Einträge in der Protokolldatei sind.
  • LAST_ID=1 - Merker für die zuletzt vergebene Ansagen-ID. 

Die Nummern zählen immer hoch und sind nach Löschen einer Ansage nicht mehr fortlaufend, damit jede Ansagen-ID unverwechselbar bleibt.

  • P2W_langX - Sprache für die Aussprache der Ansage X
  • P2W_TextX - Zu sprechender Text der Ansage X
  • SIPCMD_CALLING_USER_NAMEX - Name für Displayanzeige bei Internanrufen 
  • SIPCMD_CALLING_USER_NUMBER- Rufnummer des zu benutzenden Teilnehmers im SIP-Proxy (z.B. der Fritz!Box)
  • SIPCMD_CALLING_USER_PASSWORD- Paßwort des zu benutzenden Teilnehmers für die Anmeldung am SIP-Proxy 
  • SIPCMD_SIP_PROXYX - IP Adresse oder Hostname des SIP-Proxy (z.B. fritz.box)
  • SIPCMD_CALLED_USERX - Rufnummer welche angerufen werden soll. (z.B. intern **611 oder 03055151230 für eine Nummer in Berlin)
  • SIPCMD_CALL_PAUSE_BEFORE_GUIDEX - Pause nach Abheben in Millisekunden, bevor die Ansage abgespielt wird.
  • SIPCMD_CALL_PAUSE_AFTER_GUIDE- Wartezeit nach der Ansage in Millisekunden (für welche Zeit auf den Bestätigungscode gewartet wird) bevor das Plugin auflegt.
  • SIPCMD_CALL_RESULT_VI- WebAdresse, welche bei MFV-Eingaben aufgerufen wird. (z.B. http://LoxAdmin:loxPass@miniserver:80/dev/sps/io/Text2SIP_X/)

Es kann im Miniserver ein virtueller Eingang mit der Bezeichnung Text2SIP_X für die entsprechende Ansage  angelegt werden.
Wenn Ziffern (MFV) gedrückt werden, werden diese sofort an den Miniserver weitergeleitet. Nach Anrufende wird eine 0 gesendet.   

  • SIPCMD_CALL_TIMEOUTX - Maximale Rufdauer bevor der Anruf abgebrochen wird. Empfehlung: zwischen 30 - 120 Sekunden
  • SIPCMD_MSINFOX - Adresse des Miniserver-Wertes, welcher ausgelesen werden soll. z.B: http://Loxberry:pass@miniserver:80/dev/sps/io/KGI2.4.8/state
  • SIPCMD_CONFIRMATION_DIGITX - MFV Zeichen zum sofortigen Auflegen (0 bis 9 und * oder #)
  • Alle Optionen werden automatisch vom Webinterface gesetzt.

Download

  • Das alte Plugin für LoxBerry 0.2.3/0.2.4 ist noch hier: Version 0.7a erhältlich.
  • Die Version 2020.7.16 und der Sourcecode sind auf GiHub verfügbar.

Updates

  • Ab Version v2018.2.1 bietet das Plugin automatische Updates bei Änderungen.
  • Die Prüfung erfolgt 1x pro Woche, wenn aktiviert.

Installation

  • Das Plugin wird über die Plugin-Verwaltung des LoxBerry installiert und benötigt einen Neustart nach der Installation.
  • Die Installation dauert einige Minuten - bitte Geduld.

Voraussetzungen

  • Für die Verwendung des Plugins muss ein SIP-Proxy zur Verfügung stehen, an dem sich das Plugin als SIP-User anmelden kann.
  • Beispiel Fritz!Box 7490: 
    • Links im Menü Telefonie und dann Telefoniegeräte anklicken
    • Rechts die Taste Neues Gerät einrichten anklicken
    • Option Telefon (mit und ohne Anrufbeantworter) auswählen und Weiter anklicken
    • Option LAN/WLAN (IP-Telefon) auswählen und bei 3. optional einen Namen - z.B. LoxBerry - eingeben, dann Weiter anklicken
    • Angezeigte Daten für Registrar (Proxy) und Benutzername merken und komplexes Kennwort vergeben + merken und Weiter anklicken

(das Passwort darf aktuell kein Anführungszeichen (") enthalten)

  • Rufnummer für abgehende externe Anrufe auswählen und Weiter anklicken
  • Ankommende Anrufe werden nicht benutzt, also nur Anrufe für folgende Rufnummern annehmen auswählen und alle Haken entfernen, danach Weiter anklicken
  • Jetzt Übernehmen anklicken
  • Anschließend die Daten in das Plugin eintragen.

Einrichtung der Anrufauslösung in der Loxone Config

  • Es wird ein virtueller Ausgang in der Loxone Config erstellt. 
  • Als Adresse wird der LoxBerry angegeben z.B. http://LoxBerry
    • Dann wird ein virtueller Ausgang Befehl in der Loxone Config erstellt. 
    • Als Befehl bei EIN wird das Plugin eingetragen z.B. /plugins/text2sip/?mode=make_call&vg=X wobei X durch die Nummer der Ansage zu ersetzen ist.
    • Ab Version 2020.7.17 gibt es eine neue tss Option beim Aufruf. Es wird dann am Ende noch &tts=Irgend ein vorzulesender Text angehängt,

durch den das Plugin dann das ## in der Ansage ersetzt, wenn das Plugin keine Werte vom Miniserver lesen kann oder im Plugin ganz unten bei
"URL um Wert vom Miniserver einzulesen" nur tts eingetragen ist. Das funktioniert nicht in der Admin-Oberfläche beim Hörer (Test) Icon!

Pausen

  • Um Pausen einzufügen kann man Punkte verwenden.
  • Beispiel: Alarm! . ## bestätigen mit 2 . . Alarm! . ## bestätigen mit 2 . .

Einrichtung der MFV-Auswertung in der Loxone Config (optional)

  • Es wird ein virtueller Eingang in der Loxone Config erstellt.
    • Die Bezeichnung des Eingangs sollte Text2SIP_X lauten, wobei X durch die Nummer der Ansage zu ersetzen ist.
    • Als Digitaleingang verwendennicht anhaken
    • Einheit <v>
    • Anzeige - nur Statusanzeige anhaken.
  • In der Plugin-Adminseite muss bei Aufruf folgender Adresse nach Anruf z.B. folgendes eingetragen werden: http://LoxUser:loxpass@miniserver:80/dev/sps/io/Text2SIP_X/  (Der Schrägstrich am Ende ist wichtig und danach darf kein Zeichen mehr folgen)

Hinweise zu den Optionen MSINFO und CONFIRMATION_DIGIT

  • SIPCMD_MSINFOX - Adresse des Miniserver-Wertes, welcher ausgelesen werden soll.

Beispiele:
http://Loxberry:pass@miniserver:80/dev/sps/io/KGI2.4.8/state
oder
http://Loxberry:pass@miniserver:80/dev/sps/io/Pr%C3%A4senz%20Haus/state

An dieser Stelle kann der Anschlussname z.B. KGI2.4.8 so wie er ist - oder die Bezeichnung z.B. "Präsenz Haus" als URL-codiert eingegeben werden.

Vom Plugin wird dann der Wert bei value benutzt: <LL control="dev/sps/io/Präsenz Haus/state" value="Arbeitszimmer/Büro" Code="200"/>

  • SIPCMD_CONFIRMATION_DIGITX - MFV Zeichen zum sofortigen Auflegen (0 bis 9 und * oder #)

Wenn die Funktion nicht benutzt werden soll, irgendetwas anderes als 0 bis 9 oder * oder # eingeben. z.B. -
Das Zeichen wird an den Miniserver gesendet - wenn konfiguriert - und dann wird sofort aufgelegt.
Bei "-" werden alle MFV Zeichen wie eingegeben an den Miniserver versendet, bis vom Angerufenen aufgelegt wird oder die Zeit SIPCMD_CALL_PAUSE_AFTER_GUIDE abgelaufen ist. 

Funktion des Plugins

  • Das Plugin generiert aus dem auf der Plugin-Adminseite eingegebenen Text eine entsprechende Ansage, ruft die vorgegebene Rufnummer an und spielt die Ansage vor.
  • Wenn z.B. eine Fritz!Box verwendet wird, können auch interne Rufnummern verwendet werden. z.B. **611 
  • Man hat die Möglichkeit, die Ansage mit MFV-Ziffern zu bestätigen oder damit einen Türöffner, Licht oder sonstwas zu schalten.
  • Am Ende des Anrufs wird immer eine 0 an den virtuellen Eingang gesendet. (Wenn die Funktion benutzt wird)

Beispiel für die Alarmierung per Telefon und Quittierung per Ziffer

  • Hier möchte ich ein Anwendungsbeispiel für eine Alarmierung per Telefon vorstellen.
  • Zuerst wird die Konfiguration in der Loxone Config vorgenommen. 

Schritt 1: Anlegen des virtuellen Ausgangs für die LoxBerry Kommunikation.
  -Bei Adresse die IP oder den Namen des LoxBerrys eintragen z.B. http://loxberry
  -Sollte schon ein solcher virtueller Ausgang existieren kann dieser verwendet werden.
Schritt 2: Virtueller Ausgang Befehl anlegen
  -Bei Bezeichnung Alarmgrund eintragen siehe auch Schritt 10!
  -Bei Befehl bei EIN die Ansage des Plugins eintragen z.B. /plugins/text2sip/?mode=make_call&vg=1&tss=Keine Information
  -Als Digitalausgang verwenden nicht aktivieren
Schritt 3: Den Virtuellen Ausgang Befehl mit TQa der Alarmanlage verbinden
Schritt 4: Virtuellen Eingang anlegen
  -Bei Bezeichnung Text2SIP_1 eintragen - siehe auch Schritt 8!
  -Bei Maximaler Wert 9 eintragen
  -Als Digitalausgang verwenden nicht aktivieren
Schritt 5: Statusbaustein einfügen
  - Eingang AI1 mit den Virtuellen Eingang verbinden
  - Ausgang AQ mit dem Eingang C der Alarmanlage verbinden 
  -1. Regel I auf AI1 und V1 auf == und Wert auf die gewünschte Ziffer für die Quittierung z.B. 2 und Statuswert auf 1  
  -2. Regel Statuswert auf 0
 Noch nicht speichern.

  • Jetzt wird das Plugin konfiguriert.

Schritt 6: Ansage anlegen wie auf dieser Seite beschrieben
Schritt 7: Zu lesender Text: Alarm! . ## bestätigenn mit 2 . . Danke
Schritt 8: Bei Aufruf folgender Adresse nach Anruf: http://Loxberry_Benutzer_am_Miniserver:Loxberry_Benutzerpasswort_am_Miniserver@deinminiserver:80/dev/sps/io/Text2SIP_1/ siehe auch Schritt 4
Schritt 9: Bei Bestätigungs-Ziffer z.B. 2 eintragen - siehe auch Schritt 2 und 5.
Schritt 10: Bei URL um Wert vom Miniserver einzulesen: http://Loxberry_Benutzer_am_Miniserver:Loxberry_Benutzerpasswort_am_Miniserver@deinminiserver:80/dev/sps/io/Alarmgrund/state siehe auch Schritt 2

  • Überprüfen der Ansagenummer bei Schritt 2 (vg=<Ansagenummer>)
  • Anzurufene Nummer eingeben - ich habe z.B. mein Handy eingetragen. (Intern im Video nur als Beispiel)
  • Speichern am LoxBerry und Miniserver

Ergebnis:

Fehler melden / Fehlersuche / Troubleshooting

Das Plugin hat eine LogDatei. 

Klingt die Ansage bei internen Anrufen stark verzerrt / übersteuert, bitte prüfen, ob die Einstellung HD-Telefonie deaktiviert ist. (z.B. beim DECT Gerät in der Fritz!Box)

Tritt der Fehler "EndedByNoUser" auf, bitte überprüfen ob die Paßwortlänge passt. Die Anforderungen haben sich geändert.

Das Plugin kann über einen Web-Aufruf angesprochen werden. 

http://LoxBerry/plugins/text2sip/?mode=make_call&vg=1 - Aufruf-Beispiel für Ansage 1

Fehlerberichte bitte direkt im Repository auf GitHub melden.

Fragen bitte im loxforum stellen.

Sonderfall Nexxt Mobile 

Dem Benutzer Datenkrake156 fiel auf, dass bei der Konfiguration des Plugins genau nach Anweisung für eine SIP Rufnummer bei Nexxt Mobile (über Vodafone-Kabelanschluß) eine grüne Meldung von der Warteschleife erschien, in der Fritz-Box aber kein ausgehender Anruf angezeigt wurde.
Ein Test mit einem Anruf auf eine "normale" Festnetznummer war jedoch erfolgreich. Ursache war, dass nach der Wahl der Rufnummer erst eine Ansage mit dem Minutenpreis für diesen Anruf abgespielt und dann erst durchgewählt wird.
Das bringt Probleme mit dem Defaultwert von Pause vor Ansage. Wird dieser Wert auf 5000 ms hochgesetzt, kann dies helfen. 

Bekannte Probleme

Das Plugin wird mit einem vorkompilierten sipcmd Binary ausgeliefert. Dies läuft unter Umständen auf deinem Loxberry nicht. Entweder meldest du das Problem dann auf GitHub und ich kompiliere das Plugin für die letzte Linux Version neu oder du kompilierst es selbst.

Weiterhin funktioniert es standardmäßig nicht in Loxberry-VMs (Virtuellen Maschinen). 

Folgende Schritte sind für eine Neukompilierung nötig:

Recompile Quelle erweitern

apt-get update
apt-get upgrade
apt-get install libopal-dev libpt-dev wget unzip build-essential
 
mkdir /opt/loxberry/sipcmd
cd /opt/loxberry/sipcmd
wget https://github.com/Woersty/sipcmd/archive/master.zip
unzip master.zip
cd sipcmd-master/
make clean # optional, wenn vorher schon mal make gemacht wurde
make
cp /opt/loxberry/sipcmd/sipcmd-master/sipcmd /opt/loxberry/webfrontend/cgi/plugins/text2sip/bin/
chown loxberry:loxberry /opt/loxberry/webfrontend/cgi/plugins/text2sip/bin/sipcmd
chmod 755 /opt/loxberry/webfrontend/cgi/plugins/text2sip/bin/sipcmd
cp libopal.so.3.10.10 /usr/lib/
chmod 644 /usr/lib/libopal.so.3.10.10
cp libpt.so.2.10.11 /usr/lib/
chmod 644 /usr/lib/libpt.so.2.10.11
cp libspeexdsp.so.1 /usr/lib/
chmod 644 /usr/lib/libspeexdsp.so.1
cp libcapi20.so.3 /usr/lib/
chmod 644 /usr/lib/libcapi20.so.3
cp libodbc.so.2 /usr/lib/
chmod 644 /usr/lib/libodbc.so.2
cp libopal.so.3.10.10 /usr/lib/
chmod 644 /usr/lib/libopal.so.3.10.10
cp libpt.so.2.10.11 /usr/lib/
chmod 644 /usr/lib/libpt.so.2.10.11
cp libspeexdsp.so.1 /usr/lib/
chmod 644 /usr/lib/libspeexdsp.so.1
cp libcapi20.so.3 /usr/lib/
chmod 644 /usr/lib/libcapi20.so.3
cp libodbc.so.2 /usr/lib/
chmod 644 /usr/lib/libodbc.so.2
rm /opt/loxberry/config/plugins/text2sip/modify.me
apt-get purge libopal-dev libpt-dev
rm -rf /opt/loxberry/sipcmd

Das Plugin überträgt ggf. die Authentifizierungsdaten für den Miniserver in leserlicher Form im Netzwerk. Wer Zugriff auf das Netzwerk hat, könnte die Daten möglicherweise mitlesen.

Es sollte ein Benutzer mit eingeschränkten Rechten verwendet werden.