Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. IOBroker - HTTP Post/GET ESP8266 und HTML_WEbFronted

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    14
    1
    246

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    584

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    1.8k

IOBroker - HTTP Post/GET ESP8266 und HTML_WEbFronted

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
javascript
6 Beiträge 4 Kommentatoren 1.1k Aufrufe 1 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • SchmeckmS Offline
    SchmeckmS Offline
    Schmeckm
    schrieb am zuletzt editiert von
    #1

    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 Antwort Letzte Antwort
    0
    • S Offline
      S Offline
      stimezo
      Forum Testing
      schrieb am zuletzt editiert von
      #2

      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 Antwort Letzte Antwort
      0
      • liv-in-skyL Offline
        liv-in-skyL Offline
        liv-in-sky
        schrieb am zuletzt editiert von
        #3

        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

        nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

        1 Antwort Letzte Antwort
        0
        • SchmeckmS Offline
          SchmeckmS Offline
          Schmeckm
          schrieb am zuletzt editiert von Schmeckm
          #4

          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 Antwort Letzte Antwort
          0
          • SchubiS Offline
            SchubiS Offline
            Schubi
            schrieb am zuletzt editiert von
            #5

            @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

            / Synology DS716+ / Logitech Harmony Ultimate / Netatmo / ESP8266 / RPi 3 / 4* Möller Easy 820 / Lupusec XT2 Plus /

            1 Antwort Letzte Antwort
            0
            • SchmeckmS 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 Offline
              S Offline
              stimezo
              Forum Testing
              schrieb am zuletzt editiert von
              #6

              @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 Antwort Letzte Antwort
              0
              Antworten
              • In einem neuen Thema antworten
              Anmelden zum Antworten
              • Älteste zuerst
              • Neuste zuerst
              • Meiste Stimmen


              Support us

              ioBroker
              Community Adapters
              Donate

              949

              Online

              32.5k

              Benutzer

              81.9k

              Themen

              1.3m

              Beiträge
              Community
              Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
              ioBroker Community 2014-2025
              logo
              • Anmelden

              • Du hast noch kein Konto? Registrieren

              • Anmelden oder registrieren, um zu suchen
              • Erster Beitrag
                Letzter Beitrag
              0
              • Home
              • Aktuell
              • Tags
              • Ungelesen 0
              • Kategorien
              • Unreplied
              • Beliebt
              • GitHub
              • Docu
              • Hilfe