Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. AXIOS Fehler auf Produktionssystem, dev-server geht

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    AXIOS Fehler auf Produktionssystem, dev-server geht

    This topic has been deleted. Only users with topic management privileges can see it.
    • drb-germany
      drb-germany last edited by

      Hallo,

      ich arbeite seit einigen Tagen an einem Adapter für die Ansteuerung der SMA Wallbox (SMA EV Charger 7.4 / 22) über das Web-Interface der Box. Dazu verwende ich mit AXIOS POST, GET und PUT Anfragen. In meiner Entwicklungsumgebung (dev-server) funktioniert die Abfrage eines Authorization Tokens (über POST) ohne Probleme. Auf dem Produktivsystem (gleiches Netzwerk, Ubuntu, meine "echte" ioBroker Installation) bekomme ich mit dem gleichen Adapter einen Status 500 Fehler ("AxiosError: Request failed with status code 500"). Wenn ich den dev-server auf dem gleichen System wie dem Produktivsystem teste, dann funktioniert es auch. Leider gibt es bis auf die Fehlermeldung AxiosError (siehe oben) keine weiteren Informationen. Hat jemand eine Idee, warum es auf dem dev-server funktioniert, auf der "echten" ioBroker Installation dann aber nicht?

      Repository:
      https://github.com/drb-germany/ioBroker.smaevcharger

      An das Moderatorenteam: Post bitte in Entwicklung verschieben, dort konnte ich keinen Beitrag erstellen (keine Rechte?).

      Danke.

      OliverIO 1 Reply Last reply Reply Quote 0
      • OliverIO
        OliverIO @drb-germany last edited by OliverIO

        @drb-germany

        du könntest versuchen mit curl auf der shell den request mal nachzustellen.
        bei curl kann man eine detaillierten debug ausgabe einstellen (option --verbose, vgl auch https://curl.se/docs/manpage.html).
        bei einem 500er Fehler ist aber eher die Wallbox der Verursacher. Irgendwas schmeckt dem dann noch nicht, auch wenn es auf einem anderen weg geht (kann mir adhoc da zwar auch nix vorstellen, aber deswegen der weg mit curl)
        kannst du in der wallbox in ein log schauen? da müsste etwas genaueres drin stehen. aber verstehe auch, das das bei geschlossenen anwendungen manchmal schwierig ist.

        du sendest die request aus einem adapter heraus und nicht vom browser aus? dann scheidet cors auch aus.
        hast du schon mal in error.response.data geschaut?
        evtl steht da was detaillierteres drin wie in error
        https://axios-http.com/docs/handling_errors

        ich hab mal in den code geschaut, verursacht zwar kein Problem aber

        headers: {
           accept: 'application/json, text/plain, */*',
        },
        

        da reicht nur application/json, da dein Programm ja sonst kein anderes Format erwartet oder verarbeiten kann. eigentlich kannst accept auch weglassen. idealerweise sollte der content-type ausreichen

        drb-germany 1 Reply Last reply Reply Quote 0
        • drb-germany
          drb-germany @OliverIO last edited by

          Danke für die schnelle Antwort, @oliverio.

          Mit curl funktioniert der Request, es geht ja auch mit dem dev-server auf dem Ubuntu Server wo es unter der finalen ioBroker Instanz nicht funktioniert. Ich kann mir das eigentlich nur mit unterschiedlichen Versionen von AXIOS erklären, weil sonst ist ja alles gleich ist.

          Der Request geht vom Adapter aus raus. Error.response.data habe ich probiert, das gibt eine Exception, da es das Objekt nicht gibt.

          Ich werde versuchen/prüfen ob die Versionen gleich sind und ggf. mal ein anderes Paket nutzen. Die Installation über den GitHub-Link ist aber der richtige Weg das im Produktivsystem zu testen, oder? Das macht es halt immer etwas aufwändig, da man einen recht langen Weg hat...

          drb-germany OliverIO 2 Replies Last reply Reply Quote 0
          • drb-germany
            drb-germany @drb-germany last edited by

            Habe es jetzt hinbekommen, indem ich für den Token-Post von AXIOS auf node-fetch gewechselt habe.

            Werde das jetzt noch etwas testen und dann einheitlich machen. Ist mir trotzdem ein Rätsel, warum AXIOS hier nicht funktioniert hat.

            1 Reply Last reply Reply Quote 0
            • OliverIO
              OliverIO @drb-germany last edited by

              @drb-germany sagte in AXIOS Fehler auf Produktionssystem, dev-server geht:

              Error.response.data

              es wäre ein kleines error.respone.data und nicht Error.reponse.data gewesen.
              Gemäß doku muss es das geben.
              Schaust du da mit einem debugger rein?

              @drb-germany sagte in AXIOS Fehler auf Produktionssystem, dev-server geht:

              Die Installation über den GitHub-Link ist aber der richtige Weg das im Produktivsystem zu testen, oder?

              im Produktiv system ja.

              drb-germany 1 Reply Last reply Reply Quote 0
              • drb-germany
                drb-germany @OliverIO last edited by drb-germany

                @oliverio: Ja, im Code habe ich es richtig drin, das error.response.data Objekt ist dann auf dem Produktivsystem tatsächlich einfach nur leer.

                Code

                .catch((error) => {
                	this.setState('info.connection', false, true);
                	if (error.response) {
                		// The request was made and the server responded with a status code
                		// that falls out of the range of 2xx
                		this.log.error(`Response: ${JSON.stringify(error.response.data)}`);
                		this.log.error(`Status: ${JSON.stringify(error.response.status)}`);
                		this.log.error(`Headers: ${JSON.stringify(error.response.headers)}`);
                	} else if (error.request) {
                		// The request was made but no response was received
                		// `error.request` is an instance of XMLHttpRequest in the browser and an instance of
                		// http.ClientRequest in node.js
                		this.log.error(`Request: ${error.request}`);
                	} else {
                		// Something happened in setting up the request that triggered an Error
                		this.log.error(`Error: ${error.message}`);
                	}
                	this.log.error(`Config: ${JSON.stringify(error.config)}`);
                });
                

                Logs:
                18dbe3c7-cbcf-45c4-86cd-a6c1ca6f6f6c-image.png

                Mit node-fetch läuft es aber jetzt zumindest.

                mcm1957 2 Replies Last reply Reply Quote 0
                • mcm1957
                  mcm1957 @drb-germany last edited by

                  @drb-germany
                  Keine Ahnung ob das was mit deinem Problem zu tun hat. Aber wir hatten im Telegram Developer Channel erst gestern die Diskussion zu await / async /.then. An sich ist die Kombination async und .then von der Sprache her zulässig. ABER die Meinung war weitestgehenst dies nicht zu machen.

                  Also ENTWEDER asynchron mit await zu arbeiten ODER mit Verkettung über .then ...

                  Falls du noch Probleme hast, schau mal im Developer Channel rein und frag dort nochmal.
                  https://t.me/+gsX-e8k4mLtmZjZk
                  https://t.me/ioBroker_development

                  1 Reply Last reply Reply Quote 0
                  • mcm1957
                    mcm1957 @drb-germany last edited by

                    @drb-germany
                    Außerdem scheinst du axios NICHT als dependency eingetragen zu haben (package.json)

                    Check das mal. Ev. hats du schlicht und einfach unterschiedliche Axios Versionen am dev.sever und in prod.

                    1 Reply Last reply Reply Quote 0
                    • First post
                      Last post

                    Support us

                    ioBroker
                    Community Adapters
                    Donate
                    FAQ Cloud / IOT
                    HowTo: Node.js-Update
                    HowTo: Backup/Restore
                    Downloads
                    BLOG

                    461
                    Online

                    32.0k
                    Users

                    80.5k
                    Topics

                    1.3m
                    Posts

                    3
                    8
                    816
                    Loading More Posts
                    • Oldest to Newest
                    • Newest to Oldest
                    • Most Votes
                    Reply
                    • Reply as topic
                    Log in to reply
                    Community
                    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                    The ioBroker Community 2014-2023
                    logo