Ankündigung

Einklappen

Hinweis

Die Forenregeln wurden überarbeitet (Stand 7.11.22). Sie sind ab sofort verbindlich. Wir bitten um Beachtung.
Mehr anzeigen
Weniger anzeigen

AVM Plugin

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

    Zitat von aschwith Beitrag anzeigen
    Bzgl des Fehlers "POST request error: 500 Server Error" habe ich im develop eine Debugausgabe ergänzt. Könnt ihr das ziehen und das Ergebnis hier posten?
    Der URL /upnp/control/hosts wird im Code an 5 Stellen bzw in 5 Methoden benutzt. Ich habe an diesen Stellen noch einmal den Code im Master/develop mit dem der Version 1.5.12 vergleichen. Inhaltlich identisch. Änderungen beschränken sich auf "Einführung der f-Strings" und "Auslagern des POST requests".

    Aber, der POST Request wurde erweitert:
    ALT:
    Code:
    try:
        response = 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)
        # self.logger.debug(response.content)
        xml = minidom.parseString(response.content)
    except Exception as e:
        if self._fritz_device.is_available():
            self.logger.error("Exception when sending POST request. method _update_host: %s" % str(e))
            self.set_device_availability(False)
        return
    Neu:
    Code:
    try:
        response = self._session.post(url, data=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(f'Exception while sending POST request: {e}')
        if self._fritz_device.is_available():
            self.set_device_availability(False)
        return
    
    else:
        try:
            response.raise_for_status()
        except requests.exceptions.HTTPError as e:
            self.logger.error(f"POST request error: {e}")
            self.set_device_availability(False)
    
        if response.status_code == 200:
            if self.logger.isEnabledFor(logging.DEBUG):
                self.logger.debug("Sending POST request successful")
            if not self._fritz_device.is_available():
                self.set_device_availability(True)
            return response
    D.h. der Fehler 500 kann auch vorher (also in der Version 1.5.12) schon da gewesen sein, aber nicht gemeldet / entdeckt. Interssant wäre zu wissen, welche Methode den Fehler hervorruft? Dafür hat aschwith bereits ein logging eingebaut.
    Kann das etwas zu den User und Passwort zum Einloggen in der FB zu tun haben?

    Kommentar


      Seltsam ist halt, dass ich ihn erst auch hatte und dann nicht mehr ;-) Es kann sein, dass das mit der falschen MAC Adresse des iPhone meiner Frau zusammen gehangen hat, die ich entdeckt habe.

      Kommentar


        Ich habe jetzt mal die neue Dev Version gestartet.
        Das Log:
        Code:
        2022-02-17 19:11:31 ERROR plugins.avm fritzbox_1@: POST request error: 500 Server Error: Internal Server Error for url: https://192.168.112.1:49443/upnp/control/hosts
        2022-02-17 19:11:31 ERROR plugins.avm fritzbox_1@: Debug-PostRequest: url:https://192.168.112.1:49443/upnp/control/hosts, data:<?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:GetSpecificHostEntry xmlns:u="urn:dslforum-org:service:Hosts:1">
        <s:NewMACAddress>60:F4:45:BF:52:90</s:NewMACAddress>
        </u:GetSpecificHostEntry>
        </s:Body>
        </s:Envelope>, headers:{'SOAPACTION': 'urn:dslforum-org:service:Hosts:1#GetSpecificHostEntry', 'CONTENT-TYPE': 'text/xml; charset="utf-8"'}, response:<Response [500]>
        2022-02-17 19:11:31 ERROR plugins.avm fritzbox_1@: POST request error: 500 Server Error: Internal Server Error for url: https://192.168.112.1:49443/upnp/control/hosts
        2022-02-17 19:11:31 ERROR plugins.avm fritzbox_1@: Debug-PostRequest: url:https://192.168.112.1:49443/upnp/control/hosts, data:<?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:GetSpecificHostEntry xmlns:u="urn:dslforum-org:service:Hosts:1">
        <s:NewMACAddress>B4:8B:19:DD:54:16</s:NewMACAddress>
        </u:GetSpecificHostEntry>
        </s:Body>
        </s:Envelope>, headers:{'SOAPACTION': 'urn:dslforum-org:service:Hosts:1#GetSpecificHostEntry', 'CONTENT-TYPE': 'text/xml; charset="utf-8"'}, response:<Response [500]>
        2022-02-17 19:11:31 INFO plugins.avm fritzbox_1@: Debug apriori SID: 0000000000000000, Challenge: 89461b06
        2022-02-17 19:11:32 INFO plugins.avm fritzbox_1@: Debug posterior SID: 3867ba226f7f3576, Challenge: 40c13104
        Jetzt gucke ich noch mal nach den Mac Adressen...

        Kommentar


          ich hatte das bei mir mit postman zum testen nachgebaut

          Kommentar


            Die MAC Adressen der beiden Telefone waren wirklich noch alt.
            Korrigiert, der 500er bleibt aber noch....
            Was mir noch eingefallen ist: Bei mir ist das WLAN in der Fritte abgeschaltet. Könnte das damit zusammen hängen?

            Kommentar


              Nach dem korrigieren der MAC Adressen im Log:

              Code:
              2022-02-17 19:28:00 ERROR plugins.avm fritzbox_1@: POST request error: 500 Server Error: Internal Server Error for url: https://192.168.112.1:49443/upnp/control/hosts
              2022-02-17 19:28:00 ERROR plugins.avm fritzbox_1@: Debug-PostRequest: url:https://192.168.112.1:49443/upnp/control/hosts, data:<?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:GetSpecificHostEntry xmlns:u="urn:dslforum-org:service:Hosts:1">
              <s:NewMACAddress>76:C3:83:2B:4E:B6</s:NewMACAddress>
              </u:GetSpecificHostEntry>
              </s:Body>
              </s:Envelope>, headers:{'SOAPACTION': 'urn:dslforum-org:service:Hosts:1#GetSpecificHostEntry', 'CONTENT-TYPE': 'text/xml; charset="utf-8"'}, response:<Response [500]>
              2022-02-17 19:28:00 INFO plugins.avm fritzbox_1@: Debug apriori SID: 0000000000000000, Challenge: 05c683c1
              2022-02-17 19:28:01 INFO plugins.avm fritzbox_1@: Debug posterior SID: 1979ecbc471875b0, Challenge: 21051f1d

              Kommentar


                glaube ich nicht. kannst es ja in testweise anschalten. sind das ip telefone? wie connecten die dann zur box? kabel?
                ich frage bei mir nur wifi geräte ab

                Kommentar


                  mit falscher mac sollte ein klarer fehler, kein 500er kommen. gerade getestet:

                  1.png

                  Hier noch die Header, falls du es nachbauen willst:
                  2.png

                  Bei "authorization" oben user und passwort noch eintragen. läuft es gegen den router, läuft es durch und gibt ne antwort
                  Zuletzt geändert von psilo; 17.02.2022, 19:37.

                  Kommentar


                    Ich habe jetzt mal die Devices aus der Item.yaml auskommentiert. (Brauche ich ja eh nicht)
                    Siehe da..... der 500 ist weg!
                    Ich würde sagen, es liegt entweder an der MAC Adresse oder am abgeschaltetem WLAN in der Fritte.

                    Kommentar


                      bau es mal mit https://www.postman.com/ so wie ich nach (tool ist free). oben sieht du alles was du brauchst.

                      dann kannst du die szenarien isoliert testen.

                      denk dran: du musst die mac bei jedem fritzdevice anpassen. waren bei mir alle repeater und 2 router. falls es doch das ist.. oder mal alternativ erstmal nur 1 mac reinnehmen. 1 scheint ja zu gehen wenns das ist, da du nur 1x 500 kriegst.

                      Kommentar


                        Zitat von psilo Beitrag anzeigen
                        glaube ich nicht. kannst es ja in testweise anschalten. sind das ip telefone? wie connecten die dann zur box? kabel?
                        ich frage bei mir nur wifi geräte ab
                        Das sind zwei IPhones

                        Kommentar


                          Das sind zwei IPhones
                          jo und ich vermute (weil nur 1x500), dass nur eines die probleme macht. der request wird ja getrennt für jedes durchgeführt. leerzeichen oder sonstwas auch checken!

                          Aber nochmal: wie kann das iphone registriert sein / funktionieren, wenn wlan aus ist?
                          Zuletzt geändert von psilo; 17.02.2022, 19:46.

                          Kommentar


                            Zitat von psilo Beitrag anzeigen

                            jo und ich vermute (weil nur 1x500), dass nur eines die probleme macht. der request wird ja getrennt für jedes durchgeführt. leerzeichen oder sonstwas auch checken!

                            Aber nochmal: wie kann das iphone registriert sein / funktionieren, wenn wlan aus ist?
                            Alles noch mal penible gecheckt.... MAC Adressen sind i.O.

                            Kommentar


                              da ist das postman file, mit verändertem passwort. kannste einfach als json importieren. dann passwort user setzen und den host anpassen an den dus schickst.

                              Code:
                              {
                              "info": {
                              "_postman_id": "d510c724-72f2-4b7f-a209-982ddd841ddc",
                              "name": "Fritzbox 7490",
                              "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
                              },
                              "item": [
                              {
                              "name": "New Request",
                              "request": {
                              "auth": {
                              "type": "basic",
                              "basic": [
                              {
                              "key": "password",
                              "value": "xx",
                              "type": "string"
                              },
                              {
                              "key": "username",
                              "value": "smarthome",
                              "type": "string"
                              }
                              ]
                              },
                              "method": "POST",
                              "header": [
                              {
                              "key": "Content-Type",
                              "value": "text/xml; charset=\"utf-8",
                              "type": "default"
                              },
                              {
                              "key": "SoapAction",
                              "value": "urn:dslforum-org:service:Hosts:1#GetSpecificHostEntry",
                              "type": "default"
                              }
                              ],
                              "body": {
                              "mode": "raw",
                              "raw": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<s:Envelope s:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\"\r\n xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\"><s:Body>\r\n<u:GetSpecificHostEntry xmlns:u=\"urn:dslforum-org:service:Hosts:1\">\r\n<s:NewMACAddress>80:B0:3 D:4B:E9:C2</s:NewMACAddress>\r\n</u:GetSpecificHostEntry>\r\n</s:Body>\r\n</s:Envelope>"
                              },
                              "url": {
                              "raw": "https://192.168.178.4:49443/upnp/control/hosts",
                              "protocol": "https",
                              "host": [
                              "192",
                              "168",
                              "178",
                              "4"
                              ],
                              "port": "49443",
                              "path": [
                              "upnp",
                              "control",
                              "hosts"
                              ]
                              }
                              },
                              "response": []
                              }
                              ]
                              }

                              Kommentar


                                und kommentier einfach mal NUR das iphone raus, dessen mac adresse den 500er auslöst. wenn das andere dann ohne 500er geht, sind wir einen schritt weiter.

                                Kommentar

                                Lädt...
                                X