IP-Symcon mit VoIP/SIP Support

Moin,
ich habe ein Problem mit VOIP. Ich wollte mich anrufen wenn ein Rauchmelder Rauch meldet. Das ist der Code:


$id = VoIP_Connect(42383, "0176xxxxxxxx");
 
for($i = 0; $i <= 10; $i++) {
        IPS_Sleep(1000);
        $c = VoIP_GetConnection(42383, $id);
        if (GetValue(40785)) IPS_LogMessage("VoIP test", "ConnectionID ist: " . $id);
        if($c['Connected']) {
            IPS_Sleep(8000);
            if (GetValue(40785)) IPS_LogMessage("VoIP test", "Connected");
            if (GetValue(40785)) IPS_LogMessage("VoIP test", "Wave Pfad: " . IPS_GetKernelDir() . "/media/voip/rauch_flur_oben.wav");
            VoIP_PlayWave(42383, $id, IPS_GetKernelDir() . "media/voip/rauch_flur_oben.wav");
            VoIP_Disconnect(42383, $id);
            return;
        }
}
VoIP_Disconnect(42383, $id);

Ich werde auch angerufen aber die WAV-Datei (Mono, 16Bit, 8KHz) wird nicht abgespielt bzw. ich höre am Telefon nichts. Ich habe es auf mein Handy und Büroapparat probiert. In meinem Log steht:


06.11.2020 10:14:22 | 00000 | CUSTOM  | VOIP                 | VoIP
06.11.2020 10:14:22 | 00000 | CUSTOM  | VOIP                 | Sender VOIP
06.11.2020 10:14:22 | 00000 | CUSTOM  | VoIP test            | ConnectionID ist: 9
06.11.2020 10:14:30 | 00000 | CUSTOM  | VoIP test            | Connected
06.11.2020 10:14:30 | 00000 | CUSTOM  | VoIP test            | Wave Pfad: /var/lib/symcon//media/voip/rauch_flur_oben.wav
06.11.2020 10:14:30 | 00000 | CUSTOM  | VOIP                 | VoIP
06.11.2020 10:14:30 | 00000 | CUSTOM  | VOIP                 | Sender VOIP

Also wird die Verbindung erkannt und es muss zum PlayWave kommen.

Wenn mich nicht anrufen lasse sondern aktiv mein Symcon anrufe und was WAV abspielen lasse klappt es.

Wo könnte mein Fehler liegen?

Ralf

Wie hast du die WAV generiert? Am wahrscheinlichsten ist, dass das Format nicht stimmt.

Ich würde empfehlen mein TTS AWS Polly Modul zu nutzen. Das nimmt dir die ganzen Kopfschmerzen mit dem Format ab :slight_smile:

paresy

Moin Paresi,
mit Audicity 8Khz, Mono, 16Bit. Wegen dem Format hatte ich ja geschrieben das die Datei abgespielt wird wenn ich IPS aktiv anrufe aber nicht wenn IPS mich anruft.

Ralf

Ah, das hatte ich übersehen. Ich schaue mal, ob ich das nachstellen kann.

paresy

Hi,
danke dafür. Anbei noch die WAVs damit es möglichst genau nachgestellt werden kann.

Ralf

wavs.zip (74.4 KB)

Hat das jemand mal getestet ich bin erst von Ubuntu VM auf Docker umgezogen, jetzt wollte ich das VoIP Modul nutzen…
Ich vermute MacVLAN ist hier das Stichwort für den Bridge Modus. Bevor ich jetzt aber dieses umstelle würde ich gerne verstehen ob das schon mal jemand probiert hat…

Danke Gruss Marco

Guten Abend,

ich habe eine Anfängerfrage, was VOIP angeht.

In der Fritzbox habe ich einen Account gemäß Anleitungeingerichtet, dann in IPS das Rufannahme-Script aus der Anleitung kopiert (copy & paste aus dem Browser) und versuche nun, die VOIP-Instanz aktiv zu schalten.

Es kommt eine Meldung in den IPS-Meldungen: „Registrierung fehlgeschlagen! Grund: Bad file descriptor“

Hat jemand eine Idee, was ich falsch mache?

Viele Grüße
Volker

Nachtrag: Wenn ich die VOIP-Registrierung testweise auf einem IP-Telefon eintrage funktioniert es dort. Der Teil ist also funktionsfähig, nur die Nutzung in IPS funktioniert noch nicht.

Hallo Volker,
funktioniert die IP Auflösung korrekt? Testweise mal die IP der Fritzbox anstatt den DNS Namen eintragen?
Ich kenne mich mit der Fritzbox nicht aus, aber bist du dir sicher, dass der Username IP-Symcon ist? Und nicht etwas wie **620 ?

Gruß
Tobias

Hi,
**620 ist eine interne Rufnummer und kein Benutzername.

Die Einstellungen, bis auf vielleicht die Adresse, sehen OK aus wenn man oben auch Aktiv setzt sieht es wie bei mir aus.

Ralf

@volkerm: Du willst den VoIPInterface Spezialschalter einstellen.

paresy

Hier? Was musst dort rein bzw. wo kann ich das finden?

Edit: Meinst du den Satz in der Anleitung:
Wenn der Rechner mehrere Netzwerkkarten oder -interfaces hat (z.B. auch virtuelle Adapter wie VPN, Docker, Hyper-V) kann es erforderlich sein die IP-Adresse über die die VoIP Verbindung aufgebaut wird zu definieren. Dazu gibt es den passenden Spezialschalter „VoIPInterface“

Also dort IP des Rechners eintragen, wo IPS läuft? Oder die IP der Fritzbox? Ich teste das!

Ok, es muß die eigene IP des Rechners rein, wo IPS läuft. Damit funktioniert es.

Kleines Hindernis zwischendurch: IPS hatte sich beim Beenden des Dienstes minutenlang Zeit gelassen und den Spezialschalter-Eintrag nicht in die Konfiguration gesichert, so daß er nach dem Neustart fehlte. Also alles nochmal und IPS vor dem Neustart ein paar Minuten laufen lassen bis die Konfiguration gespeichert ist. Dann war der eingetragenen Wert auch nach dem Neustart vorhanden und die VOIP-Registrierung funktionierte.

Danke für die Hilfe!

Was mir bei diesen Spezialschaltern noch nicht so ganz klar ist. Typischerweise (aber natürlich nicht immer) gibt es ausgewählt durch das Routing genau EIN Interface, welches in der Lage ist die Gegenstelle zu erreichen. Woran hapert es, dies automatisch auszuwählen?

Andere Frage: Nehmen wir an, mein IP-Symcon soll sich an zwei VoIP Servern registrieren (z.B. über VPN in der 2. Wohnung und direkt bei „Sipgate“). Sipgate erreiche ich über Netzwerkkarte A und VPN über Netzwerkkarte B. Wie mache ich das aktuell? Wäre es nicht passender, die Rückadresse in der VoIP Instanz einzutragen anstatt global?

Ich habe mich noch nicht sehr mit dem VOIP beschäftigt, aber gibt es auch die Möglichkeit nur eingehende Anrufe zu monitoren? Sprich Nachricht an mich bei Anruf in Abwesenheit auf Festnetz? Oder geht das Modul immer ran?

Du kannst in der Instanz wählen, was die Aktion ist. Du kannst dort auch einstellen, dass nichts passieren soll - und somit kannst du auch einen Anrufmonitor bauen :slight_smile:

paresy

Super, danke!
Das nächste WE wird daran gebastelt [emoji1]

Frage:

Voraus, ich kenne mich nicht mit SIP aus.

Frage: Könnte man mit dem Modul eine SIP Videotürstation ins Webfront einbinden?
Also Videogegensprechen bei Klingen und Türöffnen?

z.B. Divus Circle ?

[ul]
[li]Voice communication over SIP/VoIP IP[/li][li]cam video streaming via RTSP (H.264)[/li][li]Callee selection over touch screen[/li][li]Optional: RFID reader (opens door over card / badge)[/li][li]Door opening over key code on touch screen[/li][li]Access scheduling[/li][li]Day / night profiles[/li][li]Customizable user interface and logo[/li][li]RGB LED light ring for illumination and function signalling[/li][/ul]

lg

Gibt es eine Möglichkeit, zu erkennen, welche Nummer angerufen wurde?
Hintergrund ist, ich habe ja von der Telekom mehrere Nummern.
Für meine Hauptnummer möchte ich gerne einen Anruf-Monitor bauen und bei Abwesenheit mir eine Push Nachricht senden.
Für die Zweitnummer soll IP Symcon rangehen und „Butler“ sein.

EDIT: Konnte es selbst lösen - Pro SIP Nummer einfach eine eigenen Account in der Fritz!Box zuordnen und eine VOIP Instanz in Symcon anlegen. Fertig :slight_smile:

Hallo Symcon Gemeinde,
in letzter Zeit habe ich mich mit VOIP beschäftigt. Die vorhandenen Funktionen laufen problemlos. Als Erweiterung der Funktionen wäre aus meiner sich sehr sinnvoll, wenn man z.B. Gespräche vermitteln könnte. Dazu müßte man ja im VOIP Protokoll die R-Taste (Call Hold) senden können und anschließend die Nummer… ist sowas angedacht?

Ich könnte mir z.B. vorstellen, dass man einen Anruf annimmt und nach entsprechender individueller Ansage das Gespäch auf den FirtzBox Anrufbeantworter leitet um eine Nachricht aufzuzeichnen, oder ans Handy weiterleiten…

Was mein ihr dazu? Oder gibt es dazu schon andere Ansätze?

Vielen Dank für eure Gedanken und schöne Weihnachten
Helmut

Hallo Zusammen,
das folgende Beispielscript läuft bei mir leider nicht so ganz:

if($_IPS['SENDER'] == "Execute") {
    $id = VoIP_Connect(12345, "0451305005xx");
 
    //Maximal 10 Sekunden warten, dass einer abnimmt
    for($i = 0; $i < 10; $i++) {
        IPS_Sleep(1000);
        $c = VoIP_GetConnection(12345, $id);
        if($c['Connected']) {
            // VoIP_Playwave() unterstützt ausschließlich WAV im Format: 16 Bit, 8000 Hz, Mono.
            VoIP_PlayWave(12345, $id, TTSAWSPOLLY_GenerateFile(23456, "IP-Symcon wünscht einen wunderbaren Tag"));
            return;
        }
    }
 
    //Auflegen, falls keiner abnimmt
    VoIP_Disconnect(12345, $id);
}

Der Anruf wird aufgebaut - die Sounddatei wird auch auf der Festplatte abgelegt (kann ich mit VLC anhören). Am Telefon wird die Datei jedoch nicht abgespielt. Das Debug sagt dazu quasi zeitgleich Playing und Aborted - siehe Screenshot. Hat dazu jemand eine Idee?

Gruß