FritzBox CallMonitor - Teil 3: Software

Posted by Tobias on 2015-11-02 at 9:20 pm

Aller guten Dinge sind drei! Mit diesem dritten Teil wird die Serie zum FritzBox CallMonitor Nachbau abgeschlossen. Sämtliche elektronischen Komponenten, die für den CallMonitor nötig sind, wurden bereits in Teil 1 ausführlich behandelt und deren Zusammenstellung u.a. im Video erklärt. Teil 2 beschäftigte sich mit dem Aussehen des CallMonitors. Hier wurde ein Plastik-Gehäuse entsprechend modifiziert.

Was noch fehlt ist die eigentliche Software bzw. der Quellcode, der auf dem Mikrocontroller läuft und sozusagen das Gehirn des Gerätes darstellt.

Ohne Software weiß der Mikrocontroller nicht, was er mit den Daten der FritzBox anfangen soll. Anstatt des reinen Quellcodes erkläre ich an dieser Stelle den Ablauf des Programms und biete weiter unten auf dieser Seite den Download einer .hex Datei zum Upload auf den Mikrocontroller an.

FritzBox CallMonitor Codepath 1

Im Bild oben sind die ersten drei Arbeitsschritte zu sehen, die der CallMonitor abarbeitet, sobald er mit Strom versorgt wird. Im ersten Schritt wird eine DHCP-Anfrage an den lokalen DHCP-Server versendet. In der Regel ist das die FritzBox im eigenen Netzwerk. Die FritzBox bzw. der DHCP-Server vergibt dem CallMonitor eine dynamische IP-Adresse und damit ist der CallMonitor bereits im Netzwerk integriert.

Zur Kommunikation mit anderen Netzwerkgeräten wird eine IP-Adresse des Ziels benötigt. Das Ziel des CallMonitors ist die FritzBox und deren interner Name ist i.d.R "fritz.box". Der CallMonitor löst also zum Programmstart den DNS-Namen "fritz.box" in die dazugehörige IP-Adresse auf. In den Standardeinstellungen dürfte das die 192.168.176.1 sein - kann aber je nach Fritz!OS Version abweichen.

Schritt 3 stellt dann die eigentliche Telnet-Verbindung zur FritzBox auf Port 1012 her. Das ist nicht der reguläre Telnet Port (21) der FritzBox, sondern ein spezieller Port - auch treffend mit dem Namen "CallMonitor". Diese Funktion muss an der FritzBox zunächst aktiviert werden - im Werkszustand ist dieser Port der FritzBox geschlossen.

FritzBox CallMonitor Codepath 2

Es folgt jetzt die eigenliche Haupt-Schleife des Programms. Dieser Ablauf wiederholt sich in einer Endlosschleife, bis der FritzBox CallMonitor wieder vom Stromnetz getrennt wird.

Der FritzBox CallMonitor wartet permanent auf neue Nachrichten, die ihm die FritzBox über den Port 1012 zur Vergügung stellt. Sobald eine neue Nachricht über die "CallMonitor" Schnittstelle empfangen wurde, wird die Nachricht analysiert und in Schritt 2 ausgewertet.

Je nach Nachrichtentyp (eigehender Anruf, ausgehender Anruf, Verbindung beendet, ...) werden entsprechende Aktionen getriggert. Dies kann z.B. die Aktualisierung des Displaytextes oder der LED an der Obserseite sein. Zusätzlich wird auch permenent überprüft, ob der Knopf am CallMonitor gedrückt wurde, um die verpassten Anrufe "als gelesen" zu markieren.

Da es hin und wieder zu Netzwerkunterbrechungen kommen kann (z.B. durch Neustart der FritzBox) überprüft der CallMonitor bei jedem Schleifendurchlauf, ob die Kommunikation zur FritzBox nach wie vor intakt ist. Sollte die Verbindung unterbrochen sein, erscheint eine Info auf dem LC-Display und der CallMonitor baut selbständig wieder eine Verbindung zur FritzBox auf.

Download des Mikrocontroller Quellcodes/Software

Die Software kann hier als vorkompilierte .hex-Datei heruntergeladen werden. Zum Upload auf den Mikrocontroller wird ein Programmer für Atmel AVR Mikrocontroller benötigt - z.B. ein USBasp oder AVR ISP mk II.

Inbetriebnahme/Voraussetzungen

Um den CallMonitor zu starten müssen folgende Voraussetzungen erfüllt sein:

  • Es muss ein DHCP-Server im Netzwerk vorhanden sein (i.d.R. die FritzBox selbst)
  • Es muss ein DNS-Server im Netzwerk aktiv sein, der den Alias „fritz.box“ auf die FritzBox auflöst (i.d.R. die FritzBox selbst)
  • Netzteil für den CallMonitor muss 5V @ 500mA liefern können – oder direkt an den USB An- schluss der FritzBox anschließen
  • CallMonitor-Funktion muss auf der FritzBox aktiviert sein (dazu mit verbundenem DECT- Telefon den folgenden Code nutzen: #96*5*)
  • Ein Telefon muss mit der FritzBox verbunden und die Telefonie-Funktion eingerichtet sein (im Idealfall handelt es sich um ein „Retro-Telefon“ ohne Display, funktioniert aber natürlich auch mit modernen Telefonen)

Nach dem Einstecken des Ethernet- und Stromkabels erscheint ein „Splash-Screen“. Nach kurzer Zeit versucht der CallMonitor eine Verbindung zur FritzBox herzustellen (zu Port 1012). Ist diese erfolgreich hergestellt, so wird das Display gedimmt.

Jetzt ist der CallMonitor einsatzbereit! Viel Spaß beim Nachbau und bei Fragen gerne unten kommentieren.

Electronics
3 comments
Posted by Thomas on 2016-03-07 at 8:13 pm

Hallo Tobias,

kannst Du den Code auch als Sketch für die Arduino-IDE (ino-Datei) zur Verfügung stellen? Danke!!

Posted by Tobias on 2016-04-03 at 5:24 pm

Hallo Thomas,

den Quellcode kannst du hier im Github Repository herunterladen:

https://github.com/ranger81/fritzbox-callmonitor

Grüße Tobi

Posted by Thomas on 2016-04-03 at 7:21 pm

Hallo Tobias,

super, vielen Dank!

Gruß

Thomas

Comment on This Post