NEWS

  • Forum Testing Most Active

    Hallo,
    ich habe mir ein Wemos Sketch geschrieben.
    Lese damit Ultraschall Sensor sowie BME 280 aus.
    Beides wird per mqtt korrekt an iobroker (Adapter mqtt) übertragen.
    Weiterhin habe ich mit 8266webserver einen Webserver installiert. Hiermit bekomme per Browser-IP Daten vom Wemos am PC angezeigt.

    Das alles klappt soweit.

    Nun möchte ich aber per Browser-Befehl, z.B. die Altitude ändern.

    Befehl wäre z.B. (zumindest würde ich mir dies vorstellen):
    192.168.243.175/alti=300

    Mit den 300 will ich dann im Sketch weiter arbeiten.

    versucht habe ich schon:
    server.on("/alti", HTTP_GET, handlealti);

    Das Sketch reagiert darauf; aber nur auf "alti".
    wenn ich "=300" dran hänge, klappt dies nicht.
    Ich habe ich dann rumgespielt mit
    hasarg() oder auch server.arg.

    Aber irgendwie bekomme ich dies nicht hin.

    Also ganz konkret:
    Wie bekomme ich die Zahl (z.B. 300) übertragen ins Sketch damit ich damit weiterarbeiten kann.

    Danke im Voraus.

    mfg
    Dieter


  • @bahnuhr bin mir nicht sicher... muss da nicht wo ein "?" rein?
    Etwa so: 192.168.243.175?alti=300

  • Forum Testing Most Active

    mein server.on sieht so aus:
    server.on("/alti", HTTP_GET, handlealti);

    Bei: 192.168.243.175/alti
    wird korrekt zu "handlealti" verzweigt.

  • Starter

    von wo aus möchtest du den befehl senden?
    Aus einer Visualisierung heraus oder über ein skript im javascripot-adapter von iobroker?

  • Forum Testing Most Active

    erstmal im pc browser (chrome).

    Später evtl. über javascript als request Befehl.

  • Starter

    Wenn du es aus dem javascript adapter versenden möchtest, dann schaue mal hier
    https://www.twilio.com/blog/2017/08/http-requests-in-node-js.html
    Das erste Beispiel

    und hier die API bei NODE zum https objekt, da dürfte das Beispiel bei
    https.get(url[, options][, callback])[s
    interessant sein.

  • Starter

    @bahnuhr ok wenn dann aus einer visualisierung, dann
    https://api.jquery.com/jquery.get/

    und direkt aus dem browser, dann einfach tippen 🙂

  • Starter

    sorry hab mir den post nochmal durchgelesen.
    dann wäre korrekt, was lenny geschrieben hat

  • Starter

    falls du das programmieren eines webservers auf der wemos seite meinst (sorry so deutlich hast du dich da nicht ausgedrückt), dann schau mal hier

    https://randomnerdtutorials.com/esp8266-web-server/

    da ist ein beispiel drin mit Übertragung von parameter

  • Forum Testing Most Active

    @OliverIO sagte in Wemos Sketch: brauche Spezialist:

    sorry so deutlich hast du dich da nicht ausgedrückt

    bin noch am üben 😉

    Dein Link hatte ich schon gesehen. Klappt aber nicht.
    Weil der loop den Ablauf blockiert.
    (schwierig ausgedrückt).

    Bin aber ein bißchen weiter.

    Habe folgenden Schnipsel gefunden.
    Damit klappt es bisher ganz gut, muss aber noch daran rumfeilen.

      while (client.connected()) {
         if (client.available()) {
           char c = client.read();
           if (readString.length() < 100) { readString = readString + c; }
    
           if (c == '\n' ) {
             if(readString.indexOf("alti") > -1){
                int DP = (readString.indexOf("="));   //Zeichen '=' suchen
                String su;
                su = readString.substring(DP+1,readString.length());
                alti = su.toInt();
                //alti ((int(readString.charAt(DP+1))-48)*10) + (int(readString.charAt(DP+2))-48); // die 2 Zeichen nach dem '=' in Zahl wandeln
             }
              Serial.println ("----------------------------");
              Serial.print("Alti= "); Serial.println (alti/5);
              Serial.println ("----------------------------");
              break;
           }
    
         }
       }
       
    
  • Forum Testing Most Active

    @OliverIO sagte in Wemos Sketch: brauche Spezialist:

    dann wäre korrekt, was lenny geschrieben hat

    meinst du das?
    "muss da nicht wo ein "?" rein?"

    Das klappt bei mir nicht.

  • Forum Testing Most Active

    Ich sende euch mal mein Probierscript.

    Damit empfange ich nun zuverlässig Werte per sketch.

    #include <ESP8266WiFi.h>
     
    const char* ssid = "Mueller-7390";
    const char* password = "abcde";
     
    long zahl = 0;
    int alti;
    String readString;
    WiFiServer server(80);
     
    void setup() {
      Serial.begin(9600);
      delay(10);
     
      // Connect to WiFi network
      Serial.println();
      Serial.println();
      Serial.print("Connecting to ");
      Serial.println(ssid);
     
      WiFi.begin(ssid, password);
     
      while (WiFi.status() != WL_CONNECTED) {
        delay(500);
        Serial.print(".");
      }
      Serial.println("");
      Serial.println("WiFi connected");
     
      // Start the server
      server.begin();
      Serial.println("Server started");
     
      // Print the IP address
      Serial.print("Use this URL : ");
      Serial.print("http://");
      Serial.print(WiFi.localIP());
      Serial.println("/");
     
    }
     
    void loop() {
      // Check if a client has connected
      WiFiClient client = server.available();
     
      if (client) {
       boolean currentLineIsBlank = true;
       while (client.connected()) {
         if (client.available()) {
           char c = client.read();
           if (readString.length() < 100) { readString = readString + c; }
    
           if (c == '\n' ) {
             if(readString.indexOf("alti") > -1){
                int DP = (readString.indexOf("="));   //Zeichen '=' suchen
                String su;
                su = readString.substring(DP+1,readString.length());
                alti = su.toInt();
                //alti ((int(readString.charAt(DP+1))-48)*10) + (int(readString.charAt(DP+2))-48); // die 2 Zeichen nach dem '=' in Zahl wandeln
             }
              Serial.println ("----------------------------");
              Serial.print("Alti= "); Serial.println (alti/5);
              Serial.println ("----------------------------");
              break;
           }
    
         }
       }
       
       readString="";
     
       // give the web browser time to receive the data
       delay(1);
       // close the connection:
       client.stop();
       //Serial.println("client disonnected");
     }
    
     
      delay(1000);
      zahl = zahl +1;
      Serial.println(zahl);
      //Serial.println("");
     
    }
    

    URL ist z.B.: http://192.168.243.87/alti=2800

    und per Monitor wird dann ausgegeben:
    ae9fef08-65eb-4915-a24b-e3112b02b7c5-image.png

  • Starter

    @bahnuhr said in Wemos Sketch: brauche Spezialist:

      while (client.connected()) {
         if (client.available()) {
           char c = client.read();
           if (readString.length() < 100) { readString = readString + c; }
    
           if (c == '\n' ) {
             if(readString.indexOf("alti") > -1){
                int DP = (readString.indexOf("="));   //Zeichen '=' suchen
                String su;
                su = readString.substring(DP+1,readString.length());
                alti = su.toInt();
                //alti ((int(readString.charAt(DP+1))-48)*10) + (int(readString.charAt(DP+2))-48); // die 2 Zeichen nach dem '=' in Zahl wandeln
             }
              Serial.println ("----------------------------");
              Serial.print("Alti= "); Serial.println (alti/5);
              Serial.println ("----------------------------");
              break;
           }
    
         }
       }
       
    

    das sieht schon mal ganz gut aus. du bist auf dem richtigen weg
    muss ich manchmal auch mich langsam ran tasten.

  • Starter

    @bahnuhr said in Wemos Sketch: brauche Spezialist:

    @OliverIO sagte in Wemos Sketch: brauche Spezialist:

    dann wäre korrekt, was lenny geschrieben hat

    meinst du das?
    "muss da nicht wo ein "?" rein?"

    Das klappt bei mir nicht.

    da das auf dem wemos eigentlich kein webserver ist, sondern nur ne netzein/ausgabeschnittstelle 🙂
    die so tut als ob es ein webserver ist, kannst du das ignorieren.
    Das Fragezeichen kommt von diversen standards. Da du sender und empfänger selber programmierst, kannst du machen was du willst.
    du hättest es ggfs. beachten müssen, falls das wemos teil wirklich ein paar webserverstandards eingebaut hätte.

Suggested Topics

1.6k
Online

35.1k
Users

41.1k
Topics

564.8k
Posts