HTTP Request per JavaSkript und Fetch auswerten

  • Hallo, ich habe versucht, die o.a. Beispiele (nach: Ich hab dir die Energydaten mal in das Beispiel mit eingebaut:) umzusetzen.
    Ich bekomme aber keine Werte zurückgeliefert. Woran kann das liegen?

    Wenn ich das Beispiel aufrufe erscheint das:

    Beim Klick auf "Get State" passiert gar nichts.
    Ich habe versucht mit document.write("Hier"); zu prüfen ob die functions aufgerufen werden, Es wird aber kein "Hier" ausgegeben.

    Ach ja, falls das wichtig ist, ich habs mit firefox und edge probiert...
    Wer kann helfen?

    Vielen Dank!!!

    N'guten Abend!


    Mein Code aus #38 funktioniert so wie er da steht. Was hast Du genau gemacht, wie ist Dein Java Code? Welche Hardware nutzt Du und wenn es Tasmota ist, musst du CORS aktivieren (geht nur wenn Du ein custom bin erzeugst) Schau mal unter meinem Namen die Beiträge durch, dann kommst Du zum Ziel, ist alles darin beschrieben.

    Was mir geholfen hat, F12 bei edge oder Firefox und Du bist im entwickler seite und kannst sehen was auf deiner Webseite passiert, nach Dem Du nen fetch anschiebst.

    Grüße MAT

  • Moin.

    Die html-Seite von HoerMirAuf muss auf einem Webserver liegen

    Die darf auch auf einem Rechner lokal gespeichert sein. Hosten auf nem Server ist nicht nötig.

    Ansonsten wie die Vorredner sagten:

    CORS muss mit einkompiliert sein.

    benzino77 Tasmocompiler

    Gitpod Master Release

    Gitpod Development Release

    Sonoff-Basic / Sonoff-RF / Sonoff-Touch / Sonoff S20 / PowStro Basic / MagicHome / Sonoff-RF-Bridge mit diversen 433MHz RF Sender/Empfänger / Shelly_1 / ESP-WiFi-Dimmer / Gosund SP111 / ESP12E / WEMOS D1 Mini / ESP32Cam

    Sensoren: BME280/BMP280/HC-SR501/HC-SR04/ACS712/INA219/MHZ19B/DS3231

    Alexa Sprachsteuerung

    mosquitto/bash/html/cgi auf Wyse5070

  • Alles klar! Ich habe dieses CORS nicht. Nur die standard Tasmota-DE Software auf Sonoff Basic geflasht. Ich will den Einschaltzustand auswerten, also POWER ON|OFF
    Allerdings habe ich festgestellt, dass man die Daten ja auch mit php und curl auslesen kann. Da werde ich mal weiterforschen...
    Vielen Dank für die schnellen Antworten!!!

  • Cors ( verschiedene Server zulassen ) habe ich auch nicht aktiv und es geht dennoch, da die HTML- Seite zum Start auf dem ufs- Filesystem des auszuwertenden Tasmota liegt

    Stimmt.

    Ebenfalls danke für den Tipp! Wenn man die Seite auf den Tasmota-Device selbst speichert wird Cors nicht benötigt.

    Auch ein gute Lösung. :thumbup:

    benzino77 Tasmocompiler

    Gitpod Master Release

    Gitpod Development Release

    Sonoff-Basic / Sonoff-RF / Sonoff-Touch / Sonoff S20 / PowStro Basic / MagicHome / Sonoff-RF-Bridge mit diversen 433MHz RF Sender/Empfänger / Shelly_1 / ESP-WiFi-Dimmer / Gosund SP111 / ESP12E / WEMOS D1 Mini / ESP32Cam

    Sensoren: BME280/BMP280/HC-SR501/HC-SR04/ACS712/INA219/MHZ19B/DS3231

    Alexa Sprachsteuerung

    mosquitto/bash/html/cgi auf Wyse5070

  • So ist es.... wollte vorher es auch nicht glauben, wenn die Daten örtlich liegen, werden die Anfragen nicht über einen anderen "Server" laufen, erst wenn von einem anderen Server bzw. wo die Webseite liegt die Daten angefragt werden, wird en Riegel davor geschoben und verhindert, dass Daten weitergeleitet werden. Grund: der Server über die Daten weiterleitet könnte ja die Daten minipulieren, abhängig vom Typ der Abfrage (GET,POST,DELETE...)

    Also bei mir ist es so, dass ich einen Webserver habe, auf dem eine Seite läuft und diese sich die Daten von den einzelnen Tasmota Devices holt und da brauche ich halt cors dazu :)

  • Das Problem bei der Lösung von karoCB ist, das das scheinbar nur auf nem ESP32 läuft weil auch noch ein kleiner HTTP Server erzeugt werden muss. Bei nem ESP8266 mit ufs wird das File nur zum download angeboten aber nicht aufgerufen.

    (Falls das doch geht, bitte korrigiert mich)

    Alternativ, könnte man seine Webseite auch ins Tasmota WebUI mit hinein-modden.

    Aber einfacher ist es dann wohl doch mit Cors und man hat die Option es von überall aus aufzurufen.

    benzino77 Tasmocompiler

    Gitpod Master Release

    Gitpod Development Release

    Sonoff-Basic / Sonoff-RF / Sonoff-Touch / Sonoff S20 / PowStro Basic / MagicHome / Sonoff-RF-Bridge mit diversen 433MHz RF Sender/Empfänger / Shelly_1 / ESP-WiFi-Dimmer / Gosund SP111 / ESP12E / WEMOS D1 Mini / ESP32Cam

    Sensoren: BME280/BMP280/HC-SR501/HC-SR04/ACS712/INA219/MHZ19B/DS3231

    Alexa Sprachsteuerung

    mosquitto/bash/html/cgi auf Wyse5070

  • Hiermit Einspruch zum Sachverhalt ESP8266 mit HTML-Start - siehe RE: Tasmota steuern über den Smart-TV hat jetzt Hürden an der Fritzbox

    Anbei das mir letzte verfügbare Release, welches diese Funktion html-Start noch hatte (kommt scheinbar immer weg die Funktion) aber damit geht auch der Javascript zum Fetsh auf dem Tasmota.

  • Ah, Danke!

    Hmmm .... ich glaub, da würde ich tatsächlich lieber ne HTML Seite ins Tasmota WebIF reinmodden.

    Hier schon mal beschreiben:

    HoerMirAuf
    18. Juni 2019 um 13:40

    Dazu im Gitpod Master Release (siehe Signatur) einfach in der Datei:

    xdrv_01_9_webserver.ino ein paar Zeilen ergänzen:

    z.B.:

    Bei Zeile 570:

    { "xx", HTTP_ANY, HandleOwnSide },

    Und dann bei ab Zeile 3216 folendes einfügen:

    Und man hat seine "fetch-Seite" auf Tasmota mit dem Aufruf http://<IP>/xx


    Aber ... macht das Sinn? Wenn ich eh schon auf dem Tasmota Device bin, kann ich die Daten ja auch direkt ablesen .... warum also dann das gefetche? ^^;) und extern geht's eben nur mir CORS

  • War mir nur für die parallele Beistellung der Spieldaten neben Handy auch auf einem TV (für alle Smart-Modelle) eingefallen um das nachfolgend genannte Projekt zu stützen.

    karoCB
    17. März 2024 um 00:01
  • Hallo, ich muss noch mal auf meine Frage zurückkommen:

    Alles klar! Ich habe dieses CORS nicht. Nur die standard Tasmota-DE Software auf Sonoff Basic geflasht. Ich will den Einschaltzustand auswerten, also POWER ON|OFF
    Allerdings habe ich festgestellt, dass man die Daten ja auch mit php und curl auslesen kann. Da werde ich mal weiterforschen...
    Vielen Dank für die schnellen Antworten!!!

    Ich will ja die Werte vom DS18b20 mit html/php darstellen.
    Das funktioniert mit folgender php-function für einfache Abfragen wie z.B. POWER oder ALIVE:

    Code
    function request ($url) { 
    $curl= curl_init();
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_URL, $url);
    $res = curl_exec($curl);
    curl_close($curl);
    $jo = json_decode($res);
    $wwpower = $jo->POWER;
    return $wwpower;
    }

    Nun habe ich aber den DS18b20 Da wird die Temperatur folgendermaßen zurückgegeben:

    Wie kann ich das denn in php abfragen? Hat jemand eine Idee?

  • Gelöst. Ich schreibe es der vollständigkeithalber mal auf. Vielleicht hilft es ja irgendwem weiter:
    Also vom Sonoff Basic werden die Daten in json an php übergeben. php muss die Daten alllso dekodieren.
    Dadurch werden sie in ein stdobject umgewandelt. Um das Objekt in ein array umzuwandeln kann man es einfach noch mal nach json und wieder zurück kodieren:

    Code
    # convert stdobject to array:
    $TT= json_decode(json_encode($jo), true);

    Danach kann die Temperatur mit:

    Code
    $TT["StatusSNS"]["DS18B20"] ["Temperature"]

    aud dem array ausgelesen werden.
    Ich danke allen, die mir weitergeholfen haben!