Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Wemos Sketch: brauche Spezialist

    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

    Wemos Sketch: brauche Spezialist

    This topic has been deleted. Only users with topic management privileges can see it.
    • bahnuhr
      bahnuhr Forum Testing Most Active last edited by

      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

      Lenny.CB 1 Reply Last reply Reply Quote 0
      • Lenny.CB
        Lenny.CB Most Active @bahnuhr last edited by

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

        1 Reply Last reply Reply Quote 0
        • bahnuhr
          bahnuhr Forum Testing Most Active last edited by bahnuhr

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

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

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

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

            OliverIO 1 Reply Last reply Reply Quote 0
            • bahnuhr
              bahnuhr Forum Testing Most Active last edited by

              erstmal im pc browser (chrome).

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

              OliverIO 1 Reply Last reply Reply Quote 0
              • OliverIO
                OliverIO @OliverIO last edited by

                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.

                1 Reply Last reply Reply Quote 0
                • OliverIO
                  OliverIO @bahnuhr last edited by OliverIO

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

                  und direkt aus dem browser, dann einfach tippen 🙂

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

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

                    bahnuhr 1 Reply Last reply Reply Quote 0
                    • OliverIO
                      OliverIO last edited by OliverIO

                      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

                      bahnuhr 1 Reply Last reply Reply Quote 0
                      • bahnuhr
                        bahnuhr Forum Testing Most Active @OliverIO last edited by

                        @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;
                               }
                        
                             }
                           }
                           
                        
                        OliverIO 1 Reply Last reply Reply Quote 0
                        • bahnuhr
                          bahnuhr Forum Testing Most Active @OliverIO last edited by

                          @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.

                          OliverIO 1 Reply Last reply Reply Quote 0
                          • bahnuhr
                            bahnuhr Forum Testing Most Active last edited by bahnuhr

                            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

                            1 Reply Last reply Reply Quote 0
                            • OliverIO
                              OliverIO @bahnuhr last edited by

                              @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.

                              1 Reply Last reply Reply Quote 0
                              • OliverIO
                                OliverIO @bahnuhr last edited by

                                @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.

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

                                Support us

                                ioBroker
                                Community Adapters
                                Donate

                                752
                                Online

                                31.8k
                                Users

                                79.9k
                                Topics

                                1.3m
                                Posts

                                javascript
                                3
                                14
                                390
                                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