Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. IOBroker - HTTP Post/GET ESP8266 und HTML_WEbFronted

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    IOBroker - HTTP Post/GET ESP8266 und HTML_WEbFronted

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

      Hallo Zusammen

      ich habe folgenden Use Case. Ich habe auf meinen Rasberry IoBroker laufen und ich bin damit sehr zufrieden. Die meisten meiner Aktoren sind Homematic. Ich habe jetzt das Problem, dass ich gerne in meinen Rasenmähroboter einen ESP8266 im Wlan verbauen möchte, um ihn mittels dem IoBroker und VIS zusteuern.

      Derzeit kann ich auch Befehle über das HTML WebFront an den ESP absenden und es funktioniert.

      Gemäss dem Entwickler ist es auch möglich direkt Befehle an den ESP über einen Programmcode (zum Beispiel: JavaScript, Pearl, C) zu senden mittels WebSocket und über einen speziellen Port.

      Hat jemand mit sowas Erfahrung wie man einen HTPP Post mit Get und Post im IoBroker aufbauen könnte?

      Gruss, Markus

      1 Reply Last reply Reply Quote 0
      • S
        stimezo Forum Testing last edited by

        Hallo,

        ich sende mit folgendem HTTP request Daten an meine ESPs:

                require("request")('http://192.168.0.6/state1').on("error", function (e) {console.error(e);});
        

        Hier sendet er den Befehl state1, der vom ESP ausgewertet/ausgeführt wird.

        Viele Grüße
        Christian

        1 Reply Last reply Reply Quote 0
        • liv-in-sky
          liv-in-sky last edited by

          ich sende besondere tasmota befehle an die sonoffs auf diese art (dabei wird curl genutzt):

          exec('curl "http://sonoff11/cm?cmnd=power2 off"');

          man muss nur den http eintrag ändern. geht auch mit blockly

          Image 1.png

          1 Reply Last reply Reply Quote 0
          • Schmeckm
            Schmeckm last edited by Schmeckm

            Ja danke für Eure Hilfe. Guter Schritt voran.

            Was ich nur nicht ganz verstehe wie man rausfinden kann, welche Parameter man mit in der Url mitgeben muss.
            Wenn ich mir den Code hinter der HTML Seite ansehe (siehe Bilde und unten den Code), der den ESP mit einem Formular ansteuert, dann sehe ich folgenden JavaScript Code im Header hinterlegt:

            u.a. auch die Befehle für Post "req.open('POST', 'con?' + rfc.toString(), true); der das Event an den ESP abfeuert.

            Heisst es dann ich muss in der Url folgenden Code angeben Christian:

            http://192.168.178.20/con?

            Im Prinzip muss es ja trivial sein, wenn man einfach die Formfunktionen simulieren könnte.

            Gruss, Markus

            Bildschirmfoto 2019-04-22 um 20.56.33.png


            <html><head><title>dihav SerialPort over WiFi - HTML Interface</title></head><body style="background-color:#1C2128;text-align:center;line-height:250%"><br><div style="width:500;padding:10;margin:auto;box-shadow:0 0 6 2 rgba(0,0,0,0.2);border-radius:10;background-color:#8EA9CC"><style>input{width:100%} select{width:100%} .b2{width:50%} .b4{width:25%} </style><script language=javascript>
            var art, rfc = 0;
            function con() {
            var s='bdrt=' + frm.bdrt.value + '&dbt=' + frm.dbt.value + '&sbt=' + frm.sbt.value + '&prty=' + frm.prty.value;
            var req = new XMLHttpRequest();
            req.onload = function(e) {
            if (req.status == 200) if (req.responseText == 'OK') {
            frm.disbtn.disabled = false;
            frm.conbtn.disabled = true;
            if (frm.ars.value != 0) art = setInterval(rec, frm.ars.value);
            }
            }
            req.open('POST', 'con?' + rfc.toString(), true);
            rfc++;
            req.send(s);
            }
            function dis() {
            var req = new XMLHttpRequest();
            req.onload = function(e) {
            if (req.status == 200) if (req.responseText == 'OK') {
            frm.disbtn.disabled = true;
            frm.conbtn.disabled = false;
            clearTimeout(art);
            }
            }
            req.open('GET', 'dis?' + rfc.toString(), true);
            rfc++;
            req.send(null);
            }
            function arschng() {
            if (frm.disbtn.disabled) return;
            clearTimeout(art);
            if (frm.ars.value != 0) art = setInterval(rec, frm.ars.value);
            }
            function rec() {
            if (frm.disbtn.disabled) return;
            var req = new XMLHttpRequest();
            req.onload = function(e) {
            if (req.status == 200) if (req.responseText.startsWith('OK')) {
            frm.recvd.innerHTML += dt2txt(req.responseText.substr(2), frm.rectp.value);
            }
            }
            req.open('GET', 'rec?' + rfc.toString(), true);
            rfc++;
            req.send(null);
            }
            function send(data) {
            if (frm.disbtn.disabled) return;
            var req = new XMLHttpRequest();
            req.onload = function(e) {
            if (req.status == 200) if (req.responseText == 'OK') {
            frm.sndhst.innerHTML += dt2txt(data, frm.dttp.value);
            }
            }
            req.open('POST', 'snd?' + rfc.toString(), true);
            rfc++;
            req.send(data);
            }
            function snddt() {
            var d = '', v = frm.snd.value, t = frm.dttp.value, p = '', i;
            if (t != 0) v += ' ';
            for (var k = 0; k < v.length; k++)
            if (t == 0) {
            d += v.charCodeAt(k).toString(16);
            } else if (v.charAt(k) == ' ') {
            if ((p != '') && (t == 1)) i = parseInt(p, 16);
            if ((p != '') && (t == 2)) i = parseInt(p);
            if (!isNaN(i)) {
            if (i < 0) i = 0;
            if (i > 255) i = 255;
            if (i < 16) d += '0';
            d += i.toString(16);
            }
            p = '';
            } else
            p += v.charAt(k);
            if (frm.apnd.value == 1) d += '0d';
            if (frm.apnd.value == 2) d += '0a';
            if (frm.apnd.value == 3) d += '0d0a';
            send(d);
            }
            function dt2txt(data, typ) {
            var r = '', i;
            for (var k = 0; k < data.length; k += 2) {
            i = parseInt(data.substr(k, 2), 16);
            if (typ == 0) r += String.fromCharCode(i);
            if ((typ == 1) && (i < 16)) r += '0';
            if (typ == 1) r += i.toString(16) + ' ';
            if (typ == 2) r += i.toString() + ' ';
            }
            return(r);
            }
            </script><b>Gardena_Maehroboter</b><br><form name=frm><table style="width:100%"><tr><td colspan=2 align=right><u><br>Connection</u></td></tr><tr><td style="width:20%">Baud rate:</td><td style="width:80%"><select size=1 name=bdrt><option>600</option><option>1200</option><option>2400</option><option>4800</option><option>9600</option><option>14400</option><option>19200</option><option>28800</option><option>38400</option><option>56000</option><option>57600</option><option selected>115200</option><option>128000</option><option>256000</option></select></td></tr><tr><td>Data bits:</td><td><select size=1 name=dbt><option>5</option><option>6</option><option>7</option><option selected>8</option></select></td></tr><tr><td>Stop bits:</td><td><select size=1 name=sbt><option selected>1</option><option>2</option></select></td></tr><tr><td>Parity:</td><td><select size=1 name=prty><option value=0 selected>None</option><option value=1>Odd</option><option value=2>Even</option></select></td></tr><tr><td></td><td><input type=button class=b2 value=Connect name=conbtn onclick="con();"><input type=button class=b2 value=Disonnect name=disbtn disabled onclick="dis();"></td></tr><tr><td colspan=2 align=right><u><br>Transmitter</u></td></tr><tr><td>Data:</td><td><input name=snd></td></tr><tr><td>Append data:</td><td><select name=apnd size=1><option value=0>None</option><option value=1>CR</option><option value=2>LF</option><option selected value=3>CR+LF</option></select></td></tr><tr><td>Data type:</td><td><select name=dttp size=1><option value=0 selected>ASCII</option><option value=1>HEX (example: 21 f3 1a)</option><option value=2>Decimal (example: 5 241 94 123)</option></select></td></tr><tr><td></td><td><input type=button class=b4 value=Send onclick="snddt();"><input type=button class=b4 value="Send CR" onclick="send('0d');"><input type=button class=b4 value="Send LF" onclick="send('0a');"><input type=button class=b4 value="Send CR+LF" onclick="send('0d0a');"></td></tr><tr><td>History:</td><td><textarea name=sndhst style="width:100%" rows=5></textarea></td></tr><tr><td colspan=2 align=right><u><br>Receiver</u></td></tr><tr><td>Display type:</td><td><select name=rectp size=1><option selected value=0>ASCII</option><option value=1>HEX</option><option value=2>Decimal</option></select></td></tr><tr><td>Refresh every:</td><td><select name=ars size=1 onchange="arschng();"><option value=0 selected>None</option><option value=5000>5 second</option><option value=10000>10 seconds</option></select></td></tr><tr><td></td><td><input type=button value="Receive Now" onclick="rec();"></td></tr><tr><td>Received data:</td><td><textarea name=recvd style="width:100%" rows=5></textarea></td></tr></table></form><a href=set>Settings</a></div><a href=http://www.dihav.com/ style="text-decoration:none;color:#8EA9CC;font-size:0.6em">www.dihav.com</a></body></html>

            S 1 Reply Last reply Reply Quote 0
            • Schubi
              Schubi last edited by

              @Schmeckm :
              Mich würde das Thema auch brennend interessieren- kannst du vielleicht einen Link auf den Code oder weitere Infos zu der ESP- Anbindung schicken. Robonect ist mir eindeutig zu teuer - das könnte eine Alternative darstellen.
              LG Schubi

              1 Reply Last reply Reply Quote 0
              • S
                stimezo Forum Testing @Schmeckm last edited by

                @Schmeckm sagte in IOBroker - HTTP Post/GET ESP8266 und HTML_WEbFronted:

                Heisst es dann ich muss in der Url folgenden Code angeben Christian:
                http://192.168.178.20/con?

                Da fehlt noch der Parameter: rfc.toString(), true
                den musst Du noch rausfinden und anhängen.

                Gruß
                Christian

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

                Support us

                ioBroker
                Community Adapters
                Donate

                899
                Online

                31.8k
                Users

                79.9k
                Topics

                1.3m
                Posts

                javascript
                4
                6
                938
                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