Http Server läuft in timeout

  • Ich wollte mal was mit dem HTTPServertesten. Ein minimaler Ansatz:

    Code
    function watch() {
      print('test');
    }
     
     HTTPServer.registerEndpoint('test', watch);

    Der, wie ich finde, umständliche Aufruf über die Script id

    <ip>/script/6/test

    führt im Browser zu:

    Timed out while waiting for response from handler

    Die function wird zwar getriggert, aber, wie kann ich den etwas Sinnvolles zurückgeben? Wenn ich das von einem anderen Shelly aufrufe, wartet der dann unsinniger weise bis zum Timeout.

    Besser sollte man doch einen HTTP Status 200 (OK) oder evt. 204 (No content) zurück geben.

    @De kat hat hier mal etwas erwähnt, was mich hoffen lässt, dass du da mehr weißt ;)

    oder Seven of Nine hat eine Idee?

    Kommentare zum elektrischen Anschluss meinerseits sind grundsätzlich zur Weitergabe an Fachpersonal gedacht und stellen eine theoretische Diskussionsgrundlage dar.

    Gruß aus Ostfriesland

    Michael

    5 Mal editiert, zuletzt von ostfriese (15. Juni 2023 um 22:13)

  • ostfriese 15. Juni 2023 um 22:12

    Hat den Titel des Themas von „Webhook läuft in timeout“ zu „Http Server läuft in timeout“ geändert.
  • Ich muss mir das auch noch genauer ansehen, ich weiß zwar grob, wie man das benutzt und dass es da ist, aber solange es keine Möglichkeit gibt, das Ganze mit einem eingestellten Shelly PW zu benutzen, werde ich mich nicht großartig weiter damit beschäftigen.

    Ein direkter Return wird wohl über vordefinierte Parameter möglich sein zumindest steht das so in der Doku. Alternativ ist immer eine indirekte Rückmeldung über einen separaten HTTP-Call innerhalb der Triggerfunktion möglich.

    Hier mal eine Vermutung von mir, bedenke jedoch bitte es ist schon ziemlich späht und ich hab das das ganze bislang 0 getestet oder damit rumgespielt.


    Hoffe das hilft dir weiter.

    7 Mal editiert, zuletzt von _[Deleted]_ (16. Juni 2023 um 00:37)

  • Habs gerade kurz ausprobiert, funktioniert bei mir, bekomme nun im Browser 'Beispiel' heraus.

    Code
    function watch(request, response) {
        response.code = 200;
        response.body = 'Beispiel';
        response.send(); //Sendet deine Antwort an den Server zurück.
        print('Im Callback');
    }
    
    print('Dein HTTP_Endpoint Link lautet: ', Shelly.getComponentStatus('wifi').sta_ip, HTTPServer.registerEndpoint('test', watch));

    Das lässt sich aber leider immer noch nur ohne eingestellten PW nutzen, deswegen für mich noch uninteressant. Hoffe das mit dem PW im Link klappt in der Stable 1.0 oder sie bauen eine Ver / Entschlüsselung Funktion ein.


    Update: Einmal ist mir der Shelly schon abgestürzt beim spielen, da gibt es wohl einige Regeln zu beachten und tatsächlich im Kleingedruckten auf der API Seite stehen einige extra Infos:

    pasted-from-clipboard.png

    Mir ist nicht ganz klar was mit max 5 transactions gemeint ist fällt dir dazu etwas ein?

    3 Mal editiert, zuletzt von _[Deleted]_ (16. Juni 2023 um 13:15)

  • Super, vielen Dank.

    Das mit dem query hatte ich schon aufgedröselt.

    Bei der Antwort hatte ich:

    Code
    print(JSON.stringify(response)); //-->{}
    response = {"code":200,"body":"Test"}; 
    response.send(); // -->Fehler, da send ja nicht mehr im Objekt

    Manchmal sieht man den Wald vor lauter Bäumen nicht.

    Jetzt ist mir klar, dass ich das VORHANDENE Objekt durch überschreiben zerstört habe.

    Danke noch einmal, sehr hilfreich.

    Gruß von der sonnigen Nordsee

    Michael

    Kommentare zum elektrischen Anschluss meinerseits sind grundsätzlich zur Weitergabe an Fachpersonal gedacht und stellen eine theoretische Diskussionsgrundlage dar.

    Gruß aus Ostfriesland

    Michael

  • Ok die max. 5 Transactions beziehen sich wohl auf max. 5 Übertragungen innerhalb des 10 Sekunden Zeitfensters, bevor man send nutzt, zumindest verstehe ich das so und bislang konnte ich das ganze noch nicht manuell Triggern. Wie ist deine Meinung dazu?

    Wäre klasse wenn du deine Test Ergebnisse / Erfahrungen damit später mit uns teilen könntest, ich mach jetzt erstmal Schluss damit, da ich manuell über den Browser wohl nicht weiter komme.

  • Dieses Thema enthält einen weiteren Beitrag, der nur für registrierte Benutzer sichtbar ist, bitte registrieren Sie sich oder melden Sie sich an um diesen lesen zu können.