Wifi Fetap mit Sip

Es ist vollbracht. Eine lange Zeit hatte ich mein altes Wählscheiben-Telefon, einfach an der FritzBox hängen und mit dieser nur Telefonate entgegengenommen. Die Impulswahl war jedoch nicht möglich, da die FritzBox diese nicht mehr unterstützt. Lange dachte ich daran, dies mit einer alten FritzBox zu lösen, jedoch funktionierte dies nicht so, wie ich es wollte. In der Zwischenzeit hatte ich mich, aus anderen Gründen, mit SIP Clients auseinandergesetzt und einige getestet. Linphone zum Beispiel kann via CLI gesteuert werden, was mir zusagte und auf eine Idee brachte. Ich wollte einem Wählscheiben Telefon SIP beibringen, um dieses Telefon auf dem Congress zu betreiben.

Also bestellte ich mir noch ein FeTap, um zu lernen, wie die alten Telefone funktionieren. Ich schraubte das erste Telefon auseinander und untersuchte die Bauteile. Ich schaute mir die Wählscheibe an, um zu verstehen, wie der Impuls entsteht und wie ich diesen abgreifen kann.

Dies war einfacher als gedacht. Beim Rotieren der Scheibe entstehen an zwei stellen ein Kontakt. Einmal beim Anziehen der Scheibe und einmal beim zurück rotieren in die Standard Position. Mit einem Multimeter habe ich mir ein Signal durchgeben lassen, damit ich den Kontaktaufbau hören kann. Somit war mir sofort klar, dass die Wählscheibe beim Schließen des Kreislaufes gezählt werden kann, in dem ich die Kontakte der Wählscheibe an die GPIOs eines Raspberry Pis anschließe. Leider halfen mir meine Bash Script Kenntnisse nur bedingt und ich stoß an Grenzen, weswegen ich das ganze dann in Python realisiert habe. Ich habe zuvor noch nie was mit Python gemacht. Also lerne ich wie ein Wählscheiben Telefon funktioniert und lerne etwas zu Python. Nachdem ich erfolgreich die Impulse zählen konnte, habe ich Linphone entsprechend konfiguriert und dem Telefonhörer via USB Soundkarte an den Pi angeschlossen. Beim ersten Testlauf hat mein Python Script nach Abschluss der Nummernwahl, die gewählte Nummer in eine Datei geschrieben, den Python Script beendet und dann ein Bash Script aufgerufen, welcher den Rufaufbau via Linphone durchführte. Quasi tut mein Skript dies aktuell immer noch, nur nicht mehr via Bash, sondern das Python Script selber tätig die Übergabe an Linphone weiter.

 

Nun da Telefonhörer und Wählscheibe für sich separat funktionieren, sollten diese zusammengefasst werden, damit auch tatsächliche ausgehende Telefonate zustande kommen. Somit ließen sich die ersten Telefonate aufbauen. Der nächste Schritt war es die Rufnummernwahl automatisch abzuschließen, in dem ein Countdown abläuft und den Anrufaufbau via Linphone angestoßen wird.

Nun da die Wählscheibe, so wie der Hörer funktionierten, musste die Telefongabel mit dem Raspberry Pi verbunden werden. In der ersten Fassung, wurden die Kontakte der Platine mit Zustand der Gabel durch einen Multimeter gemessen, damit ich weiß welche Kontakte an den Raspberry Pi gehen müssen. Da im FeTap Gehäuse nicht viel Platz war, entschied ich mich die Gabel ab zulöten, damit die Platine entfernt werden konnte. Mein Python Skript wurde daraufhin um die Zeilen erweitert, welche den Zustand der Gabel liest und entsprechend erkennt, ob ein eingehender Anruf vorhanden ist oder ein ausgehender Anruf getätigt werden soll. Entsprechend soll beim Aufheben des Hörers gelesen werden, ob ein Anruf angenommen werden soll, oder eine Interaktion mit der Wählscheibe stattfindet.

Damit ist quasi das Telefon funktionsfähig und die eingehenden Anrufe werden durch den Lautsprecher im Hörer signalisiert. Jedoch ist dies etwas zu leise, als das ich über einen eingehenden Anruf in Kenntnis gesetzt werden kann. Da im FeTap ein  Wecker verbaut ist, war mein Gedanke hierzu diesen auch zu benutzen. Da mir mitgeteilt wurde, dass ein Raspberry Pi Zero nicht die benötigte Leistung erbringen kann, um den Wecker zum Klingeln zu bringen, war ich vorerst enttäuscht und wollte die Idee werfen. Aber als ich bemerkte, dass der Wecker mit einer 9 Volt Batterie reagierte, auch wenn nur schwach, sah ich mir den Wecker erneut an. Ich merkte, dass die Metallschalen nicht genau mittig sitzen und diese näher zum Hammer gedreht werden können. Des Weiteren befindet sich an der Spule ein metallischer Widerstand, welcher den Hammer in die Ursprungsposition versetzt. Diesen Widerstand habe ich durch minimales biegen gelockert, damit die 9 Volt Batterie ausreichend Energie aufwänden kann, um ein Klang zu verursachen. Nachdem ich die Batterie einfach mit den zwei Pole verband, entstand ein klarer lauter Klang. Die Schalen und der Hammer wurden nochmals fein justiert, damit genau der Klang entstand, welchen ich erwartet habe.

Nun war mein Gedanke, wie ich es löse, dass der Raspberry Pi den Wecker steuern kann. Da mir das technische Wissen fehlt und ich bei den ersten Versuchen zwei Raspberry Pis gegrillt habe, entschied ich mich für ein Relais Modul, welcher den Kreislauf schließt und öffnet, wenn ein Signal vom Raspberry Pi kommt.

Da der Wecker, die Wählscheibe, der Hörer und Gabel nun jede für sich Ordnungsgemäß funktioniert, konnte ich alles in mein Skript zusammenfassen. Jedoch kann Linphone nur Audio Dateien als Klingelton wählen, nicht jedoch ein Script ausführen. Also musste ich mein Script darum erweitern, dass es durchgehend prüft, ob ein eingehender Anruf besteht und wenn dem so ist, soll eine Funktion aufgerufen werden, welche den Wecker zum Klingen bringt. Damit ist das Projekt im Ganzen abgeschlossen. Ich habe ein FeTap Telefon, welches SIP beherrscht und auch mit einer Powerbank betrieben werden kann. Aufgezeichnet sieht es so aus:

Damit habe ich endlich das Projekt FeTap + SIP abgeschlossen. Dieses FeTap wird mit einer Telefonnummer von Eventphone betrieben. Dadurch konnte ich auch die auf dem Congress vorliegende Situation testen. Es besteht kein Zwang, dass die Bauteile in das Gehäuse des Telefons verbaut werden müssen. Den Raspberry Pi kann man auch extern betreiben und alle Kabel aus dem Gehäuse nach außen ziehen. Ich gehe davon aus, dass der Pi Zero Probleme mit dem Wlan auf dem Congress haben wird, weswegen ich dasselbe nochmals mit einem Raspberry Pi 1 oder 2 bauen werde und dieses Telefon via LAN verbinden werde.

Das ganze Projekt wurde hier dokumentiert: https://git.elektrollart.org/Elektroll/fetapi
In der Ursprungsfassung hieß das Projekt PyTap (Python Tischappart). Da es aber eine Pytap Library gibt, entschied ich mich für FeTapi (Fernsprech-Tischappart + Raspberry Pi).

Zum Schluss noch die einzelnen Bauelemente, welche miteinander verbunden wurden.

CC0 1.0 Soweit dies durch das Gesetz möglich ist, hat der Schöpfer auf das Copyright und ähnliche oder Leistungsschutzrechte zu seinem Werk verzichtet.