ongewenst gedrag van esp32 na starten app.

Hoi allemaal,
Ik heb een probleem waar ik niet echt meer uitkom.
Ik heb een programma geschreven voor een beregeningscomputer met een esp32, die gestuurd word door een zelfgeschreven app in mit app inventor.
Nou werkt het eigenlijk wel naar behoren, MAAR als ik de app opstart dan gaat de pomp direct aan als de app contact heeft met de esp32. In het programma maak ik gebruik van merkers die net zo zouden reageren als bij een plc toch?

misschien is er iemand die weet waar het mis gaat, het moet in de code zitten maar ik zit denk ik verkeerd te zoeken.
als ik in regel 123 t/m 130 kijk dan zie ik dat de high verwijst naar 0x1 ( bij alle HIGH acties )
en bij low 0x0 ( ook bij alle acties ).
nu staat 0x voor een stukje in het geheugen vermoed ik. is dat ook nog aan te passen?
het mag namelijk niet gebeuren dat als ik de app opstart dat de pomp direct aan gaat.

programma is geschreven in visual studio code.
in bijgevoegd bestand zit het programma. ( max voor topic is 9000 tekens? )
Alvast bedankt.

programma esp32.txt (4.15 KB)

Hoi en welkom.

Zet meteen nadat je de pinMode hebt gedefinieerd, die pin LOW oftewel uit voor jouw toepassing.
Wanneer dat niet zou werken, gebruik dan een pull down weerstand aan deze pinnen (ik weet niet hoe een ESP met z’n pinnen omgaat na het instellen van de pinMode).

#include <Arduino.h>
#include <WiFi.h>

const char *SSID = "***********";
const char *PASS = "***********";

WiFiServer server(80);

#define POMP_PIN     4  // dit is de pomp sturing aan/uit.
#define KLEP1_PIN    2  // dit is de klep van de groep die het gazon beregent.
#define KLEP2_PIN    16 // dit is de klep van de groep die de voortuin beregent.
#define KLEP3_PIN    17 // dit is de klep van de groep die de borders beregent.

int merkerpomp;
int merkergazon;
int merkervoortuin;
int merkerborders;

void setup() {
  // put your setup code here, to run once:
  Serial.begin(115200);
  pinMode(POMP_PIN,  OUTPUT);
  digitalWrite (POMP_PIN, LOW);
  pinMode(KLEP1_PIN, OUTPUT);
  digitalWrite (KLEP1_PIN, LOW);
  pinMode(KLEP2_PIN, OUTPUT);
  digitalWrite (KLEP2_PIN, LOW);
  pinMode(KLEP3_PIN, OUTPUT);
  digitalWrite (KLEP3_PIN, LOW);
  delay(10);



  Serial.println("connecting");
  WiFi.begin(SSID, PASS);

  while (WiFi.status() !=WL_CONNECTED)
  {
    delay(500);
    Serial.print(".");
  }
  Serial.println(WiFi.localIP());
  server.begin();
  
}
void(* resetFunc) (void) = 0;//declare reset function at address 0

void sproeiinstallatie(){

// sturing van de pomp
if (merkerpomp==false)
{
  digitalWrite (POMP_PIN, LOW);
}

if (merkerpomp==true)
{
  digitalWrite (POMP_PIN, HIGH);
}
else
{
  digitalWrite (POMP_PIN, LOW);
  digitalWrite (KLEP1_PIN, LOW);
  digitalWrite (KLEP2_PIN, LOW);
  digitalWrite (KLEP3_PIN, LOW);
               (merkerpomp = LOW);
               (merkergazon = LOW);
               (merkervoortuin = LOW);
               (merkerborders = LOW);
}

// sturing van de pomp met de klep van het gazon
if (merkerpomp==true && merkergazon==true)
{
  digitalWrite (KLEP1_PIN, HIGH);
  digitalWrite (KLEP2_PIN, LOW);
  digitalWrite (KLEP3_PIN, LOW);
               (merkervoortuin = LOW);
               (merkerborders = LOW);
               
}
else
{
  digitalWrite (KLEP1_PIN, LOW);
               (merkergazon = LOW);
}

// sturing van de pomp met de klep van de voortuin
if (merkerpomp==true && merkervoortuin==true)
{
  digitalWrite (KLEP2_PIN, HIGH);
  digitalWrite (KLEP1_PIN, LOW);
  digitalWrite (KLEP3_PIN, LOW);
               (merkergazon = LOW);
               (merkerborders = LOW);
}
else
{
  digitalWrite (KLEP2_PIN, LOW);
               (merkervoortuin = LOW);
}

// sturing van de pomp met de klep van de borders
if (merkerpomp==true && merkerborders==true)
{
  digitalWrite (KLEP3_PIN, HIGH);
  digitalWrite (KLEP1_PIN, LOW);
  digitalWrite (KLEP2_PIN, LOW);
               (merkergazon = LOW);
               (merkervoortuin = LOW);
}
else
{
  digitalWrite (KLEP3_PIN, LOW);
               (merkerborders = LOW);
}

}

void loop() {
  WiFiClient Client = server.available();
  if (!Client) {return;}
  String request=Client.readStringUntil('\r');
  Serial.println(request);
  resetFunc(); //call reset  
  if (request.indexOf("POMP_ON")!=-1);  {merkerpomp = HIGH;}         //digitalWrite(POMP_PIN, HIGH)
  if (request.indexOf("POMP_OFF")!=-1)  {merkerpomp = LOW;}          //digitalWrite(POMP_PIN, LOW);
  if (request.indexOf("KLEP1_ON")!=-1)  {merkergazon = HIGH;}        //digitalWrite(KLEP1_PIN, HIGH);
  if (request.indexOf("KLEP1_OFF")!=-1) {merkergazon = LOW;}         //digitalWrite(KLEP1_PIN, LOW);
  if (request.indexOf("KLEP2_ON")!=-1)  {merkervoortuin = HIGH;}     //digitalWrite(KLEP2_PIN, HIGH);
  if (request.indexOf("KLEP2_OFF")!=-1) {merkervoortuin = LOW;}      //digitalWrite(KLEP2_PIN, LOW);
  if (request.indexOf("KLEP3_ON")!=-1)  {merkerborders = HIGH;}      //digitalWrite(KLEP3_PIN, HIGH);
  if (request.indexOf("KLEP3_OFF")!=-1) {merkerborders = LOW;}       //digitalWrite(KLEP3_PIN, LOW);



  Client.println("HTTP/1.1 200 ok");////Mandatory
  Client.println("");// //Mandatory
  Client.println("<div align='center'>");
  Client.println("<h1> Web page created by Martijn Pannekoek </h1>");
  Client.print("click <a href=\"LED=ON\">here</a> to turn the LED on 
");
  Client.print("click <a href=\"LED=OFF\">here</a> to turn the LED off 
");
  Client.println("<hr/>");
  Client.println("</div>");
  Client.println("<hr />");
  Client.println("
");
  Client.println("&copy Martijn 2021");

  Client.flush();//Mandatory
  delay(1);
  
  sproeiinstallatie;
}

als de bedoeling van onderstaande lijn is om de functie sproeiinstallatie uit te voeren sproeiinstallatie;}
dan kan je dat beter aanpassen naar sproeiinstallatie();}

Gebruik je een relaiskaartje om de pomp aan te sturen?
Zou kunnen dat relais actief is als de ESP32 uitgang laag staat.

Success.