Sip2Feldtelefon

Aus Chaostreff Chemnitz
Version vom 25. Mai 2014, 02:57 Uhr von Txt.file (Diskussion | Beiträge) (+Idee für spätere Version)

Da unsere Klingel und unser SIP-Telefon sehr unzuverlässig funktionieren gibt es die Idee die Feldtelefon an das SIP-Netzwerk anzuschließen um eingehende Gespräche auf den Feldtelefonen entgegen nehmen zu können.

Um das Projekt umzusetzen wird aktuell ein Programmierer benötigt.

In einer späteren Version könnte man auch ein Telefon mit Tasten anschließen, Nummern wählen und Gespräche initiieren.

benötigte Hardware

  • Computer (cubieboard, raspberry Pi, …)
  • Feldtelefon (oder anderes Telefon, welches mit zwei Drähten funktioniert)
  • usbb2k
    • wahrscheinlich noch einen powered USB-Hub

benötigte Software

Funktionsweise

Die usbb2k-Box meldet sich unter Linux als normale USB-Soundkarte. Damit kann man schon recht stressfrei Audio auf den Telefonen abspielen.

usbb2k

an Box senden:

  • SWITCH USB
  • RING 1

von Box empfangen:

  • HANDSET ON
  • HANDSET OFF
  • KEY 01
  • KEY 02
  • KEY 09
  • KEY 0b (*)
  • KEY 00
  • KEY 0c (#)

SIP

Man benötigt einen SIP-Client, den man entsprechend erweitern kann. Aktuell ist die Idee das mit linphone zu machen. Dies ist ein in C geschriebener SIP-Client unter GPLv2.

Zusammenspiel

Zuerst stellt man den usbb2k-API-Server und den usbb2k-API-Client. Mit dem Client schaltet man die usbb2k-Box in den USB-Modus. Dann startet man den SIP-Client und gibt diesem die USB-Soundkarte des usbb2k als Audiogerät für Ein- & Ausgabe.

Wenn ein Anruf ankommt, dann sendet man mit dem usbb2k-API-Client, ein Klingelsignal an die Feldtelefone. Darauf hin klingeln alle angeschlossenen Telefone bis auf einem der Telefone abgenommen wird. Wenn dies passiert erhält der usbb2k-Client ein PICKUP-Signal. Empfängt man dieses, kann man dem SIP-Client sagen, dass abgenommen wurde.

Will man auflegen, so erhält die usbb2k-API erst einen HANGUP, wenn das letzte SIP-Telefon aufgelegt wurde. Empfängt man diesen, kann man dem SIP-Client sagen, dass aufgelegt wurde und das Gespräch beenden.