Ankündigung

Einklappen
Keine Ankündigung bisher.

AVM Plugin

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • gama
    antwortet
    Cool, funktioniert nun auch bei mir... mit aktueller Fritz!OS. Macht es Sinn die set_call_origin() um eine Abfrage und Syntaxprüfung zu ergänzen?

    Einen Kommentar schreiben:


  • psilo
    antwortet
    So jetzt bin ich wirklich schlauer:

    Erlaubte Strings für den Parameter von set_call_origin kriegt ihr via:
    Code:
    curl --anyauth -u <user>:<password> "https://fritz.box:49443/upnp/control/x_voip" -H "Content-Type: text/xml; charset="utf-8"" -H "SoapAction:urn:dslforum-org:service:X_VoIP:1#X_AVM-DE_GetPhonePort" -d "<?xml version='1.0' encoding='utf-8'?><s:Envelope s:encodingStyle='http://schemas.xmlsoap.org/soap/encoding/' xmlns:s='http://schemas.xmlsoap.org/soap/envelope/'><s:Body><u:X_AVM-DE_GetPhonePort xmlns:u='urn:dslforum-org:service:X_VoIP:1'><s:NewIndex>1</s:NewIndex></u:X_AVM-DE_GetPhonePort></s:Body></s:Envelope>" -s -k
    dabei <s:NewIndex>1</s:NewIndex> von 1 hochzählen.

    Ich habe mit einem der Werte jetzt set_call_origin aufgerufen und es wird korrekt gesetzt.

    Abfrage via:
    Code:
    curl --anyauth -u <user>:<password> "https://fritz.box:49443/upnp/control/x_voip" -H "Content-Type: text/xml; charset="utf-8"" -H "SoapAction:urn:dslforum-org:service:X_VoIP:1#X_AVM-DE_DialGetConfig" -d "<?xml version='1.0' encoding='utf-8'?><s:Envelope s:encodingStyle='http://schemas.xmlsoap.org/soap/encoding/' xmlns:s='http://schemas.xmlsoap.org/soap/envelope/'><s:Body><u:X_AVM-DE_DialGetConfig xmlns:u='urn:dslforum-org:service:X_VoIP:1' /></s:Body></s:Envelope>" -s -k
    Wenn jemand eine Idee hat, wie ich die Werte exakt so auch via GUI kriege, bitte mir mitteilen. Ansonsten werde ich im Plugin die Abfragefunktion mit Index als Parameter ergänzen.

    Einen Kommentar schreiben:


  • psilo
    antwortet
    mich wundert der "Content-Type: text/xutf-8"" bei mir geht es nur mit "Content-Type: text/xml; charset="utf-8"", bei letzterem macht auch das "" Sinn

    und weiter bin ich:

    Code:
    curl --anyauth -u <user>:<password> "https://fritz.box:49443/upnp/control/x_voip" -H "Content-Type: text/xml; charset="utf-8"" -H "SoapAction:urn:dslforum-org:service:X_VoIP:1#X_AVM-DE_DialGetConfig" -d "<?xml version='1.0' encoding='utf-8'?><s:Envelope s:encodingStyle='http://schemas.xmlsoap.org/soap/encoding/' xmlns:s='http://schemas.xmlsoap.org/soap/envelope/'><s:Body><u:X_AVM-DE_DialGetConfig xmlns:u='urn:dslforum-org:service:X_VoIP:1' /></s:Body></s:Envelope>" -s -k
    
    <?xml version="1.0"?>
    <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
    <s:Body>
    <u:X_AVM-DE_DialGetConfigResponse xmlns:u="urn:dslforum-org:service:X_VoIP:1">
    <NewX_AVM-DE_PhoneName>FON1: ALARM</NewX_AVM-DE_PhoneName>
    </u:X_AVM-DE_DialGetConfigResponse>
    </s:Body>
    </s:Envelope>a
    Was ich jetzt nicht raffe ist, warum ich da nicht einfach meine DECT Telefone oder meine 3 VOIP Rufnummern habe... Ideen?

    Ich bin doof.. das gibt nur das konfigurierte zurück... Liste via:
    Code:
    curl --anyauth -u <user>:<password> "https://fritz.box:49443/upnp/control/x_voip" -H "Content-Type: text/xml; charset="utf-8"" -H "SoapAction:urn:dslforum-org:service:X_VoIP:1#X_AVM-DE_GetClients" -d "<?xml version='1.0' encoding='utf-8'?><s:Envelope s:encodingStyle='http://schemas.xmlsoap.org/soap/encoding/' xmlns:s='http://schemas.xmlsoap.org/soap/envelope/'><s:Body><u:X_AVM-DE_GetClients xmlns:u='urn:dslforum-org:service:X_VoIP:1' /></s:Body></s:Envelope>" -s -k
    Offenbar will er also das, was unter Telefonie -> Telefoniegeräte -> Bezeichnung steht, als Parameter für die setConfig.. Ich passe das README noch an bzw. teste das nochmal.

    Update: das hier ist recht spannend zum Thema, was als Parameter der X_AVM-DE_DialSetConfig zulässig ist: https://forum.fhem.de/index.php?topic=49262.0
    Zuletzt geändert von psilo; 04.11.2016, 07:35.

    Einen Kommentar schreiben:


  • psilo
    antwortet
    Im ersten ist hier ein " zu viel:
    "Content-Type: text/xutf-8""
    Und ich kriege ein sh: syntax error near unexpected token `<'

    So, " korrigiert und ich habe auch einen internal server error. mir fehlen aber schon mal die credentials

    der 2te gibt bei mir auch einen 500er, genausol wie der erste.. muss das aber tiefer ansehen.. erstmal essen
    Zuletzt geändert von psilo; 03.11.2016, 18:18.

    Einen Kommentar schreiben:


  • gama
    antwortet
    Hi,

    also folgender "RAW" Zugriff funktioniert und gibt die IP aus:


    Code:
    curl "https://192.168.1.1:49443/igdupnp/control/WANIPConn1" -H "Content-Type: text/xutf-8"" -H "SoapAction:urn:schemas-upnp-org:service:WANIPConnection:1#GetExternalIPAddress" -d "<?xml version='1.0' encoding='utf-8'?> <s:Envelope s:encodingStyle='http://schemas.xmlsoap.org/soap/encoding/' xmlns:s='http://schemas.xmlsoap.org/soap/envelope/'> <s:Body> <u:GetExternalIPAddress xmlns:u='urn:schemas-upnp-org:service:WANIPConnection:1' /> </s:Body> </s:Envelope>" -s -k | grep -Eo '\<[[:digit:]]{1,3}(\.[[:digit:]]{1,3}){3}\>'
    der Zugriff (auf DialGetConfig) erzeugt eine Fehlermeldung - Syntax sollte eigentlich stimmen, oder siehst Du den Fehler?


    Code:
    curl "https://192.168.1.1:49443/upnp/control/x_voip" -H "Content-Type: text/xutf-8" -H "SoapAction:urn:dslforum-org:service:X_VoIP:1#X_AVM-DE_DialGetConfig" -d "<?xml version='1.0' encoding='utf-8'?> <s:Envelope s:encodingStyle='http://schemas.xmlsoap.org/soap/encoding/' xmlns:s='http://schemas.xmlsoap.org/soap/envelope/'> <s:Body> <u:X_AVM-DE_DialGetConfig xmlns:u='urn:dslforum-org:service:X_VoIP:1' /> </s:Body> </s:Envelope>" -s -k
    Antwort:
    HTML-Code:
    <HTML><HEAD><TITLE>500 Internal Server Error (ERR_INVALID_REQ)</TITLE></HEAD><BODY><H1>500 Internal Server Error</H1><BR>ERR_INVALID_REQ<HR><B>Webserver</B> Thu, 03 Nov 2016 13:18:06 GMT</BODY></HTML>

    Einen Kommentar schreiben:


  • gama
    antwortet
    Du hast recht, für eine Alarmierung reicht es völlig aus, auch wenn die Möglichkeiten mit SIP noch etwas mehr sind... aber ich bin erst einmal froh, wenn ein Telefon klingelt

    Einen Kommentar schreiben:


  • psilo
    antwortet
    gama keine Ahnung sorry. Habe da auch nichts gemacht. Bei mir tut es aktuell das was soll, dafür war die set_call_origin auch unerheblich. Es lag irgendwie noch an der Wählhilfe dass es ging... Auf jdn. Fall kommen meine Alarmanrufe an, mehr brauche ich bisher auch nicht, für remote Infos nutze ich Mail und Pushbullet... Kenne jetzt auch Dein konkretes Szenario nicht.

    Einen Kommentar schreiben:


  • gama
    antwortet
    Ich muss da noch einmal in Ruhe ran...
    Mir ist gestern noch was eingefallen: es wäre doch auch möglich den Anruf über das SIP Protocol zu triggern, oder? Hast Du das schon eimal in Erwägung gezogen oder gibt es bereits eine Implementierung?

    Einen Kommentar schreiben:


  • psilo
    antwortet
    Urx, ich sehe gerade dass in der set_call_orgin offenbar die falsche action steht (X_AVM-DE_DialSetConfig ist wohl richtig laut https://avm.de/fileadmin/user_upload...x_voipSCPD.pdf).. ich pushe das gleich mal in den dev. mglw geht es aber trotzdem, da es bei mir ja funzt

    Einen Kommentar schreiben:


  • psilo
    antwortet
    Ich nutze es bei mir so, und das geht:

    sh.fritzbox_7490.set_call_origin("**610")
    sh.fritzbox_7490.start_call('**9')

    Einen Kommentar schreiben:


  • gama
    antwortet
    War gerade in der set_call_origin(self, phone_name):
    Hier soll der "phone_name" übergeben werden der auch per "NewX_AVM-DE_PhoneName" Attribut an die FB übergeben wird.
    In der AVM Spezifikation ist als Beispiel:
    Code:
    <X_AVM-DE_PhoneName>My Iphone SIP Client</X_AVM-DE_PhoneName>
    angeführt.
    Vielleicht hat es was damit zu tun? Aber es läuft ja bereits mit '**610' IDs, oder?

    Einen Kommentar schreiben:


  • psilo
    antwortet
    also siehe in der start_call das soap_data und die url.. und dagegen dann mit dem soap_data als payload curlen:

    Code:
            soap_data = self._assemble_soap_data(action, self._urn_map['X_VoIP'],
                                                 {'NewX_AVM-DE_PhoneNumber': phone_number.strip()})
            try:
                self._session.post(url, data=soap_data, timeout=self._timeout, headers=headers,
                                   auth=HTTPDigestAuth(self._fritz_device.get_user(), self._fritz_device.get_password()),
                                   verify=self._verify)
            except Exception as e:
                self.logger.error("Exception when sending POST request: %s" % str(e))
                return

    Einen Kommentar schreiben:


  • psilo
    antwortet
    Nein glaube nicht. Man könnte den Service auf der Fritzbox über CURL direkt anfragen, das zu erstellen würde mich jetzt aber auch einige Zeit kosten. mhmm

    Du kannst Dir mal den REQUEST String einfach rausloggen. Findest Du die Stelle? und das dann via CURL mit User und Passwort hinschieben

    Einen Kommentar schreiben:


  • gama
    antwortet
    oder gibt es irgendein "curl ..." kommando, welches auf die voip Funktionen zugreift und ich zum debuggen nehmen kann?

    Einen Kommentar schreiben:


  • gama
    antwortet
    Danke für das schnelle Feedback.
    Die Einstellung habe ich überprüft, und ist so wie Du geschrieben hast: die interne Telefonie ist freigegeben.
    Ebenso hatte ich bereits meine Handynumer zum Test eingetragen, aber das ändert nichts an den Fehlermeldungen.
    Der Zugang sollte funktionieren, sonnst könnte ich ja auch keinen anderen Daten abfragen, oder? Der Haken bei den Benutzerberechtiungen "Sprachnachrichten, ... " ist auch gesetzt.
    Kann man irgendwo das logging der Fritzbox hochstellen?

    Einen Kommentar schreiben:

Lädt...
X