Montag, 24. August 2020

Fritz!Box - Anrufe per Python mit TR-064 und fritzconnection

Mit Hilfe von fritzconnection lassen sich Anrufe per TR-064 initiieren als auch beenden. Siehe auch https://avm.de/service/schnittstellen bzw. "AVM TR-064 – First Steps". Mit wenigen Zeilen Python-Quellcode kann man so z.B. auf Ereignisse bei einem Raspberry Pi reagieren.


Vorbereitung: Ein FRITZ!Box-Benutzerkonto erstellen

Siehe auch https://service.avm.de/help/de/FRITZ-Box-7590/018/hilfe_system_user_konzept.


Installation von fritzconnection (unter Python3)

Hinweis: Die hier gezeigte Lösung funktioniert nur mit Python3!
 
Package installer for Python (pip), wenn noch nicht vorhanden:
sudo apt-get install python3-pip

Damit die Python .whl files installiert werden können, müssen folgenden Packete vorhanden sein:
sudo apt-get install libxml2-dev libxslt-dev python-dev
Error: Please make sure the libxml2 and libxslt development packages are installed.

Installation von fritzconnection package via pip
sudo pip3 install fritzconnection
Hinweis: Da die Python .whl files (wheels) installiert werden müssen, dauert die Installation ca. 5-10min.

Script 

#!/usr/bin/python
from time import sleep
from fritzconnection import FritzConnection

fc = FritzConnection(
        address='192.168.1.1',
        user="ring",
        password="123456",
        )

print(fc)  # print router model informations
#fc.reconnect()  # get a new external ip from the provider

# call_action takes two required arguments: the service- and the action-name
# https://avm.de/fileadmin/user_upload/Global/Service/Schnittstellen/x_voip-avm.pdf
fc.call_action("X_VoIP1","X_AVM-DE_DialNumber",
                arguments={"NewX_AVM-DE_PhoneNumber ": "**9"})
# **9 (Rundruf) Alle angeschlossenen Telefone klingeln
sleep(5)
# Disconnect the dialling process.
fc.call_action("X_VoIP1","X_AVM-DE_DialHangup")


Fehler die auftreten können:

fritzconnection.core.exceptions.FritzActionFailedError: UPnPError:
errorCode: 501
errorDescription: Action Failed


=> Bei der FRITZ!Box muss unter 'Telefonie/Telefonbuch/Wählhilfe' der Punkt 'Wählhilfe verwenden' ausgewählt werden. ErrorCode 501 erscheint beim Fehlen der Wählhilfe. 

fritzconnection.core.exceptions.FritzSecurityError: UPnPError:
errorCode: 606
errorDescription: Action Not Authorized

=> Der Benutzer der FRITZ!Box hat nicht die notwendigen Rechte einen Anruf zu tätigen.



Keine Kommentare:

Kommentar posten