Kann nicht schalten über Wlan

Hallo,

Habe mein Programm geändert so dass ich jetzt auch alles “Ein” und “Aus” schalten aber es funktioniert nicht.
Arduino IDE gibt kein Fehler bin auch Verbunden über Wlan.

Wemos D1 Verbunden mit  FRITZ!Box 7330
Server gestarte
IP adresse =  192.168.178.51/

Mit diesen auftrag http://192.168.178.51/Re01ON will ich einschalten und für ausschalten http://192.168.178.51/Re01OFF
Aber kein Relais wird geschaltet.

Ich kann kein Fehler finden, brauche eure Hilfe.

//Programm für WEMOS_D1
#include <ESP8266WiFi.h>
const char* ssid = "FRITZ!Box 7330";
const char* pass = "################";
IPAddress ip(192, 168, 178, 51);
IPAddress gateway(192, 168, 178, 10);
IPAddress subnet(255, 255, 255, 0);

 #define Re01 5
 #define Re02 4
 #define Re03 0
 #define Re04 16
 #define Re05 14
 #define Re06 12
 #define Re07 13
 #define Re08 15

boolean reading = false;

String readString;

boolean readInput[6];                 //max-Grösse fuer das Array

int outp = 0;

WiFiServer server(80);
void setup() {
  Serial.begin(115200);
  
   pinMode(Re01, OUTPUT);
   pinMode(Re02, OUTPUT);
   pinMode(Re03, OUTPUT);
   pinMode(Re04, OUTPUT);
   pinMode(Re05, OUTPUT);
   pinMode(Re06, OUTPUT);
   pinMode(Re07, OUTPUT);
   pinMode(Re08, OUTPUT);

   digitalWrite(Re01, LOW);
   digitalWrite(Re02, LOW);
   digitalWrite(Re03, LOW);
   digitalWrite(Re04, LOW);
   digitalWrite(Re05, LOW);
   digitalWrite(Re06, LOW);
   digitalWrite(Re07, LOW);
   digitalWrite(Re08, LOW);
   
  WiFi.config(ip, gateway, subnet);
  Serial.println();
  Serial.println();
  Serial.print("Wemos D1 Verbunden mit  ");
  Serial.println(ssid);
  WiFi.begin(ssid, pass);
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
  }
  // Start the server
  server.begin();
  Serial.println("Server gestarte");
  // Print the IP address
  Serial.print("IP adresse =  ");
  Serial.print(WiFi.localIP());
  Serial.println("/");
}
void loop() {
  WiFiClient client = server.available();
  if (client) {

 //   Serial.println("Neue client");
    while (!client.available()) {
      delay(1);
    }
// ----------------------------------------------------------------------------

   
   if(readString.indexOf("Re01ON") >0)
          {
            digitalWrite(Re01, HIGH); 
          }
   if(readString.indexOf("Re01OFF") >0)
          {
            digitalWrite(Re01, LOW);
          }


// ----------------------------------------------------------------------------

   
   if(readString.indexOf("Re02ON") >0)
          {
            digitalWrite(Re02, HIGH); 
          }
   if(readString.indexOf("Re02OFF") >0)
          {
            digitalWrite(Re02, LOW);
          }


// ----------------------------------------------------------------------------

   
   if(readString.indexOf("Re03ON") >0)
          {
            digitalWrite(Re03, HIGH); 
          }
   if(readString.indexOf("Re03OFF") >0)
          {
           
            digitalWrite(Re03, LOW);
          }


// ----------------------------------------------------------------------------

   
   if(readString.indexOf("Re04ON") >0)
          {
            digitalWrite(Re04, HIGH); 
          }
   if(readString.indexOf("Re04OFF") >0)
          {
            digitalWrite(Re04, LOW);
          }


// ----------------------------------------------------------------------------

   
   if(readString.indexOf("Re05ON") >0)
          {
            digitalWrite(Re05, HIGH); 
          }
   if(readString.indexOf("Re05OFF") >0)
          {
            digitalWrite(Re05, LOW);
          }


// ----------------------------------------------------------------------------

   
   if(readString.indexOf("Re06ON") >0)
          {
            digitalWrite(Re06, HIGH); 
          }
   if(readString.indexOf("Re06OFF") >0)
          {
            digitalWrite(Re06, LOW);
          }


// ----------------------------------------------------------------------------

   
   if(readString.indexOf("Re07ON") >0)
          {
            digitalWrite(Re07, HIGH); 
          }
   if(readString.indexOf("Re07OFF") >0)
          {
            digitalWrite(Re07, LOW);
          }


// ----------------------------------------------------------------------------


   if(readString.indexOf("Re08ON") >0)
          {
            digitalWrite(Re08, HIGH); 
          }
   if(readString.indexOf("Re08OFF") >0)
          {
            digitalWrite(Re08, LOW);
          }
// ----------------------------------------------------------------------------


   if(readString.indexOf("ALLOFF") >0)
          {
            digitalWrite(Re01, LOW);
            digitalWrite(Re02, LOW);
            digitalWrite(Re03, LOW);
            digitalWrite(Re04, LOW);
            digitalWrite(Re05, LOW);
            digitalWrite(Re06, LOW);
            digitalWrite(Re07, LOW);
            digitalWrite(Re08, LOW);
          }
// ----------------------------------------------------------------------------


   if(readString.indexOf("ALLON") >0)
          {
            digitalWrite(Re01, HIGH);
            digitalWrite(Re02, HIGH);
            digitalWrite(Re03, HIGH);
            digitalWrite(Re04, HIGH);
            digitalWrite(Re05, HIGH);
            digitalWrite(Re06, HIGH);
            digitalWrite(Re07, HIGH);
            digitalWrite(Re08, HIGH);
          }
// ----------------------------------------------------------------------------

    
          readString="";  //löscht den String um neu zu lesen

    delay(1);
    Serial.println("OK");
    Serial.println("");
  }
}

hi,

bin nicht ganz sicher, aber ich denke, daß Du mit den defines ALLE Re01 austauscht, die im sketch vorkommen, also auch alle, die Du eigentlich nicht austauschen willst, wie zb in Re01ON. da komt dann halt 5ON raus.

gruß stefan

Hallo Stefan,

Ich verstehe nicht ganz was Du meinst, aber hab jetzt mal versucht http://192.168.178.51/Re01ON in http://192.168.178.51/5ON zu ändern auch dann passiert nichts.

Ich verstehe nicht ganz was Du meinst,

Dann mache ich da mal eine Handlungsanweisung draus!

Du hast da lustige Pindefinitionen im Code.
Z.B.

#define Re01 5

Weg damit!
Alle weg.

Ersetze durch:

const byte Re01 = 5;

Hallo Combie,

Hab dass alles geändert

const byte Re01 = 5;
const byte Re02 = 4;
const byte Re03 = 0;
const byte Re04 = 16;
const byte Re05 = 14;
const byte Re06 = 12;
const byte Re07 = 13;
const byte Re08 = 15;

Dass Funktioniert leider auch nicht, oder mach ich hiermit noch einen denk Fehler.

   if(readString.indexOf("Re01ON") >0)
          {
            digitalWrite(Re01, HIGH);
             Serial.println("An"); 
          }
   if(readString.indexOf("Re01OFF") >0)
          {
             Serial.println("Aus");
            digitalWrite(Re01, LOW);
          }

MIT App Inventor.png

Wie wird readString gefüllt?
Per Telepathie?

Warum machst du keine Kontrollausgaben, um zu sehen, was WIRKLICH in readString steht?

:o :o :o

Ich habe eine kontrollausgabe

 if(readString.indexOf("Re01ON") >0)
          {
            digitalWrite(Re01, HIGH);
             Serial.println("An"); 
          }
   if(readString.indexOf("Re01OFF") >0)
          {
             Serial.println("Aus");
            digitalWrite(Re01, LOW);
          }

Und die Telepathie mach ich mit mein App der die Auftrag "http://192.168.178.51/Re01ON" sendet

Oder fange ich an verrückt zu werden :confused: :confused: :confused: :confused:

Oder fange ich an verrückt zu werden

Wieso "werden"?
:o :o :o :o

Und die Telepathie mach ich mit mein App der die Auftrag "http://192.168.178.51/Re01ON" sendet

Dein Händi stopft also "Re01OFF" in die Variable readString?
Und das per Telepathie?!?!?
Meinen aufrichtigen Glückwunsch!
So ein Händi will ich auch haben!

Ich habe eine kontrollausgabe

Wo lässt du dir zeigen was WIRKLICH in readString steht?

Diesen Ausgabe bekomme ich wen ich mit mein App spiele.
Das ist für mich eine "Kontrollausgabe"

Wemos D1 Verbunden mit  FRITZ!Box 7330
Server gestarte
Hostname = Barlicht
IP adresse =  192.168.178.51/
GET /Re01ON HTTP/1.1
OK

GET /Re02ON HTTP/1.1
OK

GET /Re03ON HTTP/1.1
OK

GET /Re04ON HTTP/1.1
OK

GET /Re01OFF HTTP/1.1
OK

GET /Re02OFF HTTP/1.1
OK

GET /Re03OFF HTTP/1.1
OK

GET /Re04OFF HTTP/1.1
OK

Und das per Telepathie?!?!?

Ohhh…

Es gibt schon tolle Sachen und das geht sogar ohne Grundlagenwissen. :wink:

Auch meinen Glückwunsch.

Ja Leute ich bin mir schon bewusst das ich nicht die Schlauste bin hier in Forum. :-[ :-[ :-[

Diesen Ausgabe bekomme ich wen ich mit mein App spiele.

Schön!

GET /Re02OFF HTTP/1.1

Ich sehe die Ausgabe in deinem Code nicht!

Das ist für mich eine "Kontrollausgabe"

Gut, dann sind wir ja fertig hier...

combie:
Ich sehe die Ausgabe in deinem Code nicht!

Serial.println("An");

ist dass dann keine Kontrollausgabe??
in diesen teil

   if(readString.indexOf("Re01ON") != -1)
          {
            digitalWrite(Re01, HIGH);
             Serial.println("An"); 
          }
   if(readString.indexOf("Re01OFF") != -1)
          {
             Serial.println("Aus");
            digitalWrite(Re01, LOW);
          }

Atwist:
Ja Leute ich bin mir schon bewusst das ich nicht die Schlauste bin hier in Forum. :-[ :-[ :-[

Aber du tust auch nichts um das zu ändern, mindestens zu verbessern.

Kontrollausgaben sind nicht einfach nur irgend welch Meldungen die dein Sketch produziert, sondern Variableninhalte die dir anzeigen, was in deinem Sketch abgeht, oder eben nicht.

Und obendrein fehlt in deinem Sketch jeglicher Kommentar, der es uns und besonders dir, leichter macht, zu verstehen, was in deinem Sketch passieren soll. So macht es keinen Spass den Sketch zu lesen.

Atwist:

Serial.println("An");

ist dass dann keine Kontrollausgabe??
in diesen teil

NEIN !

Dieses:

Serial.println("An");

Wird niemals diese Ausgabe produzieren:

GET /Re02OFF HTTP/1.1

Niemals!

Wo kommt die Ausgabe her?

hi,

irgendetwas fehlt von Deinem code. das, was Du im ersten post reingetan hast, kann nicht alles sein.

da ist noch ein teil, in dem erstens readString mit einem wert belegt wird, und dort passiert zweitens wahrscheinlich auch diese ausgabe, die Du dann im seriellen monitor zu sehen bekommst.

gruß stefan

da ist noch ein teil, in dem erstens readString mit einem wert belegt wird,

Nöö... glaube ich nicht!
Denn, dann, wenn es so wäre, dann würde sein Code ja funktionieren.

Leider ist es ein bisschen aus der Mode gekommen, "Datenfluss Diagramme" zu malen. Vermutlich würde einem beim Malen, eines solchen Diagramms, irgendwas auffallen.

Also, mein Tipp:
Wenn man Probleme mit Daten hat, dann male man ein "Datenfluss Diagramm".

Am Besten, sogar bevor man anfängt zu Programmieren!

Am Besten, sogar bevor man anfängt zu Programmieren

Was verstehst du unter Programmieren?
Das Wesentliche ist das Design der Datenstrukturen.

Serial.println weil es nicht so geht wie man denkt, fügt man nach dem Programmieren ein. :wink:

Das Wesentliche ist das Design der Datenstrukturen.

Hmmm....

Das "Wesendliche" ist immer das, wovon einem am Ende auffällt, dass man es am Anfang schon vergessen/übersehen hat.

Beispiel:
Es gibt zigtausende von Stöcken.
Aber der eine, der zwischen den Speichen von deinem Fahrrad, der ist der "Wesendliche".

Mit der gleichen Logik kommt man leicht zu dem Schluss:

§1: Der Fehler steckt immer da, wo man ihn zuletzt vermutet/sucht.
Denn sonst, hätte man ihn ja schon längst gefunden.

§2: Es gibt nichts schlimmeres, als falsche/ungeprüfte Annahmen
Diese verhindern wirksam das Suchen an der richtigen Stelle.