Go Down

Topic: ESP Webserver und Http client in einem Sketch (Read 134 times) previous topic - next topic

bastardop

Hi,

ich möchte auf einem ESP einen Webserver bereitstellen und auch gleichzeitig eine Temperatursensor auslesen und das Ergebnis an einen anderen Webserver senden.

Meines Wissens Unterricht der Webserver wenn die Temperaturdaten auslesen und gesendet werden.

Außerm benötige ich den Temperaturwert nicht bei jedem Takt, daher habe ich ich den loop() aktuelle etwa so aufgebaut:

Code: [Select]
void loop() {
  if (WiFi.status() != WL_CONNECTED)
  {
    WiFiStart();
  }
 
  server.handleClient();
 
  test ++;
  delay(1);
  if(test == 5000)
  {
   
    //bmeSend();
    test = 0;
   
}

Dabei wird der Webserver natürlich auch beim senden der Temperaturdaten unterbrochen, das passiert aber nur wenn der test Zähler auf 5000 (oder welchen Interval auch immer ich haben will ;) ) kommt

Oder gibt es elegantere Lösungen um quasi Aktionen parallel auf dem Arduino auszuführen?

Tommy56

Schau Dir mal millis() an. Das ist genau das Mittel, um bestimmte Aktionen in bestimmten Intervallen auszuführen.
Dass dabei der Webserver mal warten muss ist kein Problem, wenn das Messen schnell genug geht.

Gruß Tommy
"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)

bastardop

ahh das klingt gut und vermutlich sinniger als etwas "ähnliches" selber bauen

funktioniert es auch eine LED mit millis() blinken zu lassen, wenn ich durch (zB einen Taster) eine Funktion aufrufe, die aktuelle die LED an macht und nach 1 Sekunde wieder aus macht also in einer nur einmal aufgerufenen Funktion LED AN, warten, LED AUS ohne die Funktion ein zweites mal aufzurufen? oder muss ich das LED aus dazu aus der Funktion auslagern und in die loop() einbinden?

Tommy56

Eher die Funktion im Loop aufrufen. Es funktioniert alles, wenn Du es entsprechend programmierst.

Ich würde millis() erst mal in einem eigenständigen Sketch üben und nicht gleich im Webserver-Context.

Gruß Tommy
"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)

bastardop

ich werde mich mal versuchen^^
in der regel breche ich meine Programme immer so weit wie möglich runter und wenn das läuft wird es weiter abstrahiert. Das macht mir die Fehleranalyse meist wesentlich einfacher.

Ich melde mich wieder wenn ich einfachen funktionierenden code habe ;)

bastardop

und ich habe einen funktionierenden code ;)

mit einem serverHandle() setzte ich eine Variable auf 1
und dann das hier im loop()

Code: [Select]
void loop() {
  if (WiFi.status() != WL_CONNECTED)
  {
    WiFiStart();
  }
 
  server.handleClient();
 
 // nach serverHandle() Pin auf AN
  if (wama_start == 1){
    wama_millis = millis();
    digitalWrite(D4, HIGH);
    wama_start = 2;
  }
   // nach 1sek Pin AN wieder auf AUS
   if (wama_start == 2 & millis() - wama_millis > wama_start_time){
    wama_start = 0;
    digitalWrite(D4, LOW);
   }
 
}


habe das ganze mit seriellen ausgaben überprüft und es macht augenscheinlich was ich will, ohne das nebenbei der Arduino hängt ;)

gregorss

... elegantere Lösungen ...
Eleganter fände ich, wenn Du


  if (WiFi.status() != WL_CONNECTED)
  {
    WiFiStart();
  }


nach setup() verschieben würdest. Ich habe allerdings noch keine Erfahrungen mit einer NodeMCU (aber bald :-)

Gruß

Gregor

DU MUSST DEIN ÄNDERN LEBEN!

bastardop

Eleganter fände ich, wenn Du


  if (WiFi.status() != WL_CONNECTED)
  {
    WiFiStart();
  }


nach setup() verschieben würdest. Ich habe allerdings noch keine Erfahrungen mit einer NodeMCU (aber bald :-)

Gruß

Gregor


das habe ich aus einem Beispiel übernommen, mit der Begründung, das es dadurch bei einem möglichen Verbindungsabbruch die WLAN Verbindung wieder herstellt.

bastardop

was mich nur gerade irritiert, ist das der ESP eine merklich Wärmeentwicklung aufzeigt, obwohl er gerade nur alle 10sec meine hochzählende zahl auf der seriellen Konsole abgibt,

alle anderen esps, die ich hängen habe, bei denen der wifi Connect im Setup hängt und die schon einige Wochen laufen, zeigen keine wahrnehmbare Wärmeentwicklung

Go Up