Sporadischer Disconect SIM800L

Ich habe das Problem, dass mein Ardoino ständig die Verbindung verliert. Das Empfangssignal des SIM800L ist gut bis sehr gut.

Ich sende 5 Wirtual.Write ich habe schon alles versucht, mit eigen Funktionen, nicht alle auf einmal senden, viel zeit zwischen dem Senden…

Mein Code:

/*************************************************************
  Download latest Blynk library here:
    https://github.com/blynkkk/blynk-library/releases/latest

  Blynk is a platform with iOS and Android apps to control
  Arduino, Raspberry Pi and the likes over the Internet.
  You can easily build graphic interfaces for all your
  projects by simply dragging and dropping widgets.

    Downloads, docs, tutorials: http://www.blynk.cc
    Sketch generator:           http://examples.blynk.cc
    Blynk community:            http://community.blynk.cc
    Follow us:                  http://www.fb.com/blynkapp
                                http://twitter.com/blynk_app

  Blynk library is licensed under MIT license
  This example code is in public domain.

 *************************************************************
  Attention! Please check out TinyGSM guide:
    https://tiny.cc/tinygsm-readme

  Change GPRS apm, user, pass, and Blynk auth token to run :)
  Feel free to apply it to any other example. It's simple!

 *************************************************************/

/* Comment this out to disable prints and save space */
#define BLYNK_PRINT Serial

/* Fill-in your Template ID (only if using Blynk.Cloud) */
//#define BLYNK_TEMPLATE_ID   "XXXXXXXXXXXXXXXXXX"
 

// Select your modem:
#define TINY_GSM_MODEM_SIM800
//#define TINY_GSM_MODEM_SIM900
//#define TINY_GSM_MODEM_M590
//#define TINY_GSM_MODEM_A6
//#define TINY_GSM_MODEM_A7
//#define TINY_GSM_MODEM_BG96
//#define TINY_GSM_MODEM_XBEE

// Default heartbeat interval for GSM is 60
// If you want override this value, uncomment and set this option:
//#define BLYNK_HEARTBEAT 30

#include <TinyGsmClient.h>
#include <BlynkSimpleTinyGSM.h>
#include <EEPROM.h>


// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = "VEXK-Z0q2a5r2q1bmOkK3hdi5sLGqcb6";

// Your GPRS credentials
// Leave empty, if missing user or pass
char apn[]  = "pinternet.interkom.de";
char user[] = "";
char pass[] = "";

// Hardware Serial on Mega, Leonardo, Micro
//#define SerialAT Serial1

// or Software Serial on Uno, Nano
#include <SoftwareSerial.h>
SoftwareSerial SerialAT(2, 3); // RX, TX

TinyGsm modem(SerialAT);

BlynkTimer timer;

unsigned long lastmillis2; //Millis speichervariabel Futterdauer 
unsigned long lastmillis4; //Millis speichervariabel Fehlermeldung Wasser leer


 //++++++Variable+++++++++//
 
 float voltage;
 int futter;
 bool pumpe1;
 bool pumpe2;
 bool merkertrace;
 bool merkertrace2;
 bool traceinfo = false;
 bool wasserfehler;
 bool wasserfehler2;
 int pumpez1;
 int pumpez2;
 int z;
 int wasserValue;
 int wasserValue2; 
 WidgetLED led1(V6);
 WidgetLED led2(V8);

 int wasserstop;
        BLYNK_WRITE(V15)
                      {
                        wasserstop = param.asInt(); // Holt sich den Wert von V1 und schreibt ihn auf "pinValue"
                        Serial.print("Wasserstop:");
                        Serial.println(wasserstop);
                      }

 int futterz;
        BLYNK_WRITE(V10)
                      {
                        futterz = param.asInt(); // Holt sich den Wert von V1 und schreibt ihn auf "pinValue"
                       // Serial.print("futterzeit:");
                      //  Serial.println(futterz);
                      }
 
 int wasserreset;
        BLYNK_WRITE(V4)
                      {
                        wasserreset = param.asInt(); // Holt sich den Wert von V1 und schreibt ihn auf "pinValue"
                        Serial.print("Wasser_reset:");
                        Serial.println(wasserreset);
                        wasserfehler = false ;
                        wasserfehler2 = false;
                        led1.off();
                        led2.off();
                      }
  
  int futterAus;
        BLYNK_WRITE(V2)
                      {
                        futterAus = param.asInt(); // Holt sich den Wert von V1 und schreibt ihn auf "pinValue"
                        Serial.print("Futter AUS:");
                        Serial.println(futterAus);
                        futter = false ;
                      }

 int futterAn;
        BLYNK_WRITE(V3)
                      {
                        futterAn = param.asInt(); // Holt sich den Wert von V1 und schreibt ihn auf "pinValue"
                        Serial.print("Futter AN:");
                        Serial.println(futterAn);
                        futter = true;
                      }
void sendwasser()
{
   wasserValue  = analogRead(A1);
   wasserValue2 = analogRead(A2);
   //++++++Wasserstand Eins Messen++++++//
   Serial.print(" | Wasserstand 1:");
   Serial.print(wasserValue);
   Serial.print(" | Wasserstand 2:");
   Serial.println(wasserValue2);                                             
                                      
}



 
void senddata()
 {
 //++++++Wasserpumpen 1 Trace senden+++++//
  if (pumpe1 == true && merkertrace == true)  {
                                               Blynk.virtualWrite(V7, pumpe1);    
                                               Serial.print(" | P1-> ");
                                               Serial.print(pumpe1);
                                               merkertrace = false;
                                               }

  else if (pumpe1 == false && merkertrace == false){
                                               Blynk.virtualWrite(V7, pumpe1);
                                               Serial.print(" | P1-> ");
                                               Serial.print(pumpe1);
                                               merkertrace = true;
                                               }
 else                                         {
                                               Serial.print(" | P1: ");
                                               Serial.print(pumpe1);
                                              }

 //++++++Wasserpumpen 2 Trace senden+++++//
  if (pumpe2 == true && merkertrace2 == true)  {
                                                Blynk.virtualWrite(V9, pumpe1);
                                                Serial.print(" | P2-> ");
                                                Serial.print(pumpe2);
                                                merkertrace2 = false;
                                               }
  else if (pumpe2 == false && merkertrace2 == false){
                                               Blynk.virtualWrite(V9, pumpe1);
                                               Serial.print(" | P2-> ");
                                               Serial.print(pumpe2);
                                               merkertrace2 = true;
                                               }
 else                                         {
                                               Serial.print(" | P2: ");
                                               Serial.print(pumpe2);
 }
  Blynk.virtualWrite(V5, voltage);        
  Serial.print(" | Voltage: ");
  Serial.println(voltage);
  }

void sendinfo()
{
  if (traceinfo == false){
                                   Blynk.syncVirtual(V10);
                                   traceinfo = true;
                                   Serial.print(" | futterzeit:");
                                   Serial.println(futterz);
  }
  if (traceinfo == true){
                                  Blynk.virtualWrite(V12, z); 
                                  Serial.print(" | Verbindungen:");
                                  Serial.println(z);
                                  traceinfo = false;
  }
  
}

void sendvolt()
{
 //++++++Spannung Messen, und auf V5 schreiben++++++//
  int sensorValue = analogRead(A0);
  voltage = sensorValue * (5 / 1023.00)*3 ;         // Mit dem Spannungsteiler die Korrekte Spannung ausrechnen 
}


void setup()
{
    timer.setInterval(10000L, sendvolt);
    timer.setInterval(2000L, sendwasser);
    timer.setInterval(5000L, senddata);
    timer.setInterval(50000L, sendinfo);

// Debug console
  Serial.begin(19200);
    pinMode(12, OUTPUT); // Setzt den Digitalpin 13 als Outputpin
    digitalWrite(12, HIGH);
   
    pinMode(13, OUTPUT); // Setzt den Digitalpin 13 als Outputpin
    digitalWrite(13, HIGH);

  pinMode(11, OUTPUT); // Setzt den Digitalpin 13 als Outputpin
  digitalWrite(11, HIGH);
   
  pinMode(10, OUTPUT); // Setzt den Digitalpin 13 als Outputpin
  digitalWrite(10, HIGH);

  pinMode(9, OUTPUT); // Setzt den Digitalpin 13 als Outputpin
  digitalWrite(9, HIGH);

  pinMode(8, OUTPUT); // Setzt den Digitalpin 13 als Outputpin
  digitalWrite(8, HIGH);

  pinMode(A0, INPUT);
  pinMode(A1, INPUT);
  pinMode(A2, INPUT); 
   
  // Set GSM module baud rate
  SerialAT.begin (9600);
  delay(3000);

  // Restart takes quite some time
  // To skip it, call init() instead of restart()
  Serial.println("Initializing modem...");
  modem.restart();

  // Unlock your SIM card with a PIN
 //modem.simUnlock("1510");

  Blynk.begin(auth, modem, apn, user, pass);
}

void loop()
{
timer.run(); // Initiates BlynkTimer  
Blynk.run();
// Serial.print("Futterzeit: ");
// Serial.println(futterz);
//  Serial.print("offline: ");
// Serial.println(z);

 //++++++Futterautomat mit einschaltintervall ++++++++++++++++++//
if (futter == true){
                   // Serial.println("Futter Annnnnnnnn");
                    Serial.println(lastmillis2);
                    if ((millis() - lastmillis2) >= (futterz*1000) || futterAus == 1){      //Zeit eingeben für Channel Aktivierung
                                                                               futter = false ;
                                                                               Serial.println("F_off");
                                                                               lastmillis2 = millis();
                                                                              }                                    
                   }
 //++++++Restart nachdem die GSM verbinung disconectet ist++++++//
  if (!Blynk.connected()){
       Serial.println("A_off");

        digitalWrite(12, HIGH);                       //Fütterung Stoppen
        futter = false ;                            //Fütterung Stoppen 
        digitalWrite(9, HIGH);                              //Pumpe eins vorm Disconect deaktivieren
        pumpe1 = false ;                                    //Pumpe eins vorm Disconect deaktivieren         
        pumpe2 == false ;                 //Pumpe zwei vorm Disconect deaktivieren
        digitalWrite(8, HIGH);                //Pumpe zwei vorm Disconect deaktivieren  
    
        z ++ ;
        Serial.println("disconnected.... ");
        modem.restart();
        Blynk.begin(auth, modem, apn, user, pass);
        Serial.println("reconfigured... ");
        Blynk.syncVirtual(V10);
        merkertrace = true;
        merkertrace2 = true;
  }

 
 //++++++Pumpe 1 Abschalten+++++++++//
  if (wasserValue > 800) {
                                                              Serial.println("P1_off");
//                                                              Serial.println(wasserValue);
                                                                pumpe1 = false; 
                                                               }
  
  //++++++Pumpe 2 Abschalten+++++++++//
  if (wasserValue2 > 800) {
                                                            Serial.println("P2_off");
//                                                              Serial.println(wasserValue2);
                                                                pumpe2 = false;
                                                               }   
 //++++++Pumpe 1 Einschalten++++++//
  if (wasserValue < 500 && wasserfehler == false && pumpe1 == false && pumpe2 == false ){
                                                                      Serial.println("P1_on");
                                                                      pumpe1 = true;
                                                                      merkertrace2 = true;
                                                                      lastmillis4 = millis();
                                                                    }
 //++++++Pumpe 2 Einschalten++++++//
  if (wasserValue2 < 500 && wasserfehler2 == false && pumpe2 == false && pumpe1 == false){
                                                                      Serial.println("P2_on");
                                                                      pumpe2 = true;
                                                                      merkertrace = true;
                                                                      lastmillis4 = millis();
                                                                    }

  
 //++++++Pumpe Wasser Fehler +++++//

  if (pumpe1 == true | pumpe2 == true){
     if ((millis() - lastmillis4) >= (10000)){
                                      //Blynk.notify("Wasser ist Leer!!");
                                      
                                      Serial.print(" | W_F: ");
                                      if (pumpe1 == true){
                                                led1.on();
                                                Serial.println("T1");
                                                pumpe1 = false; 
                                                pumpe2 = false; 
                                                wasserfehler = true;
                                                }
                                      if (pumpe2 == true){
                                                led2.on();
                                                Serial.println("T2");
                                                pumpe1 = false; 
                                                pumpe2 = false; 
                                                wasserfehler2= true;
                                                }
                                      }}

if (pumpe1 == true && wasserstop == 0) {digitalWrite(9, LOW);}
if (pumpe1 == false && wasserstop == 0){digitalWrite(9, HIGH);}
if (pumpe2 == true && wasserstop == 0){digitalWrite(8, LOW);}
if (pumpe2 == false && wasserstop == 0){digitalWrite(8, HIGH);}
  
if (futter == true){digitalWrite(12, LOW);}
if (futter == false){digitalWrite(12, HIGH);}
}

@chrismax09 please edit your post, using the pencil icon at the bottom, and add triple backticks at the beginning and end of your code so that it displays correctly.
Triple backticks look like this:
```

Pete.

1 Like

I have done this.
Can you Help Me?

Your disconnections are almost certainty caused by your void loop.
You should stop doing millis() comparisons and use timers instead.

Read this:

Pete.

Is there a switch-on delay with the timer function to replace the millis ?

is one with the timers limitirt on a certain number ?

Do you mean a timeout timer?

Pete.

Yes if X on for 10sex do Y= on

For Exemple. Ist this posible with Blynk Timer ?

Yes, using a timeout timer, preferably as part of a Lambda function, as described in the “Timeout Timers” section of the link I provided.

Pete.

Can you give me a little exampel ?

If (x == true) { timer.setTimeout(5000L, operation1);}

?

There are examples in the link I provided, I’m not going to repeat them here.

Pete.

I have changed it. But they connects and give me the Ping and thray to connect direct to the cloud and giv me the bing. This endless

/*************************************************************
  Download latest Blynk library here:
    https://github.com/blynkkk/blynk-library/releases/latest

  Blynk is a platform with iOS and Android apps to control
  Arduino, Raspberry Pi and the likes over the Internet.
  You can easily build graphic interfaces for all your
  projects by simply dragging and dropping widgets.

    Downloads, docs, tutorials: http://www.blynk.cc
    Sketch generator:           http://examples.blynk.cc
    Blynk community:            http://community.blynk.cc
    Follow us:                  http://www.fb.com/blynkapp
                                http://twitter.com/blynk_app

  Blynk library is licensed under MIT license
  This example code is in public domain.

 *************************************************************
  Attention! Please check out TinyGSM guide:
    https://tiny.cc/tinygsm-readme

  Change GPRS apm, user, pass, and Blynk auth token to run :)
  Feel free to apply it to any other example. It's simple!

 *************************************************************/

/* Comment this out to disable prints and save space */
#define BLYNK_PRINT Serial

/* Fill-in your Template ID (only if using Blynk.Cloud) */
//#define BLYNK_TEMPLATE_ID   "xxxx"
 

// Select your modem:
#define TINY_GSM_MODEM_SIM800
//#define TINY_GSM_MODEM_SIM900
//#define TINY_GSM_MODEM_M590
//#define TINY_GSM_MODEM_A6
//#define TINY_GSM_MODEM_A7
//#define TINY_GSM_MODEM_BG96
//#define TINY_GSM_MODEM_XBEE

// Default heartbeat interval for GSM is 60
// If you want override this value, uncomment and set this option:
#define BLYNK_HEARTBEAT 2000

#include <TinyGsmClient.h>
#include <BlynkSimpleTinyGSM.h>
#include <EEPROM.h>


// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = "xxxx";

// Your GPRS credentials
// Leave empty, if missing user or pass
char apn[]  = "pinternet.interkom.de";
char user[] = "";
char pass[] = "";

// Hardware Serial on Mega, Leonardo, Micro
//#define SerialAT Serial1

// or Software Serial on Uno, Nano
#include <SoftwareSerial.h>
SoftwareSerial SerialAT(2, 3); // RX, TX

TinyGsm modem(SerialAT);

BlynkTimer timer;

unsigned long lastmillis2; //Millis speichervariabel Futterdauer 
unsigned long lastmillis4; //Millis speichervariabel Fehlermeldung Wasser leer


 //++++++Variable+++++++++//

 int endlage1;
 bool endlagetrace;
 WidgetLED led3(V25);
 int endlage2;
  WidgetLED led4(V26);
 float voltage;
 int futter;
 bool pumpe1;
 bool pumpe2;
 bool merkertrace;
 bool merkertrace2;
 bool wasserfehler;
 bool wasserfehler2;
 int pumpez1;
 int pumpez2;
 int z;
 int wasserValue;
 int wasserValue2; 
 WidgetLED led1(V6);
 WidgetLED led2(V8);
 

 int wasserstop;
                BLYNK_WRITE(V15){
                        wasserstop = param.asInt(); // Holt sich den Wert von V1 und schreibt ihn auf "pinValue"
                        Serial.print("Wasserstop:");
                        Serial.println(wasserstop);
                      }
 int futterz;
                BLYNK_WRITE(V10){
                        futterz = param.asInt(); // Holt sich den Wert von V1 und schreibt ihn auf "pinValue"
                        Serial.print("futterzeit:");
                        Serial.println(futterz);
                      }
 int wasserreset;
                BLYNK_WRITE(V4){
					  wasserreset = param.asInt(); // Holt sich den Wert von V1 und schreibt ihn auf "pinValue"
                        Serial.print("Wasser_r:");
                        Serial.println(wasserreset);
                        wasserfehler = false ;
                        wasserfehler2 = false;
                        led1.off();
                        led2.off();
                      }
  int futterAus;
                BLYNK_WRITE(V2){
		futterAus = param.asInt(); // Holt sich den Wert von V1 und schreibt ihn auf "pinValue"
                        Serial.print("FAUS:");
                        Serial.println(futterAus);
                        futter = false ;
                      }
 int futterAn;
                BLYNK_WRITE(V3){
                        futterAn = param.asInt(); // Holt sich den Wert von V1 und schreibt ihn auf "pinValue"
                        Serial.print("FAN:");
                        Serial.println(futterAn);
                        futter = true;
                      }




  
void sendvolt(){

 //++++++Wasserstand Messen++++++//
                  wasserValue  = analogRead(A1);
                  wasserValue2 = analogRead(A2);      
               //   Serial.print("Wasse1:");
               //   Serial.print(wasserValue);
               //   Serial.print(" |Wasser2:");
               //   Serial.println(wasserValue2);  
 //+++++Volt Messen++++++//                 
				        int sensorValue = analogRead(A0);
				        voltage = sensorValue * (5 / 1023.00)*3 ;         // Mit dem Spannungsteiler die Korrekte Spannung ausrechnen 
				        Blynk.virtualWrite(V5, voltage);        
				      //  Serial.print("V:");
				      //  Serial.println(voltage);


                if (!Blynk.connected()){
                Serial.println("disconnected.... ");
                z ++ ;
                 }    
     
   
               }
               



                                  

                 
void fastloop(){
  
               //++++++Futterautomat mit einschaltintervall ++++++++++++++++++//
        if (futter == true){
                   // Serial.println("Futter Annnnnnnnn");
                  Serial.println(lastmillis2);
                  if ((millis() - lastmillis2) >= (futterz*1000) || futterAus == 1){      //Zeit eingeben für Channel Aktivierung
                                                     futter = false ;
                                                     Serial.println("F_off");
                                                     lastmillis2 = millis();
                                                   }                                    
                   }
        if (futter == true){digitalWrite(12, LOW);}
        if (futter == false){digitalWrite(12, HIGH);}

  
              //++++++Pumpe 1 Abschalten+++++++++//
              if (wasserValue > 800) {
                                      Serial.println("P1_off");
                                      pumpe1 = false; 
                                     }

              //++++++Pumpe 2 Abschalten+++++++++//
              if (wasserValue2 > 800){
                                      Serial.println("P2_off");
                                      pumpe2 = false;
                                     }   
             //++++++Pumpe 1 Einschalten++++++//
             if (wasserValue < 500 && wasserfehler == false && pumpe1 == false && pumpe2 == false ){
                                      Serial.println("P1_on");
                                      pumpe1 = true;
                                      merkertrace2 = true;
                                      lastmillis4 = millis();
                                                                                               }
            //++++++Pumpe 2 Einschalten++++++//
            if (wasserValue2 < 500 && wasserfehler2 == false && pumpe2 == false && pumpe1 == false){
                                     Serial.println("P2_on");
                                     pumpe2 = true;
                                     merkertrace = true;                                 
                                     lastmillis4 = millis();               
            }
  
 //++++++Pumpe Wasser Fehler +++++//
  if (pumpe1 == true | pumpe2 == true){
     if ((millis() - lastmillis4) >= (10000)){
                                      //Blynk.notify("Wasser ist Leer!!");
                                      
                                      Serial.print(" | W_F: ");
                                      if (pumpe1 == true){
														  led1.on();
														  Serial.println("T1");
                                                          pumpe1 = false; 
                                                          pumpe2 = false; 
                                                          wasserfehler = true;
														 }
                                      if (pumpe2 == true){
														                              led2.on();
                                                          Serial.println("T2");
														                              pumpe1 = false; 
                                                          pumpe2 = false; 
                                                          wasserfehler2= true;
                                                         }
                                             }
									  }

if (pumpe1 == true && wasserstop == 0) {digitalWrite(9, LOW);}
else {digitalWrite(9, HIGH);}

if (pumpe2 == true && wasserstop == 0){digitalWrite(8, LOW);}
else {digitalWrite(8, HIGH);}

                endlage1 = digitalRead(5);   
                endlage2 = digitalRead(6); 
				
				if(endlage1 == true ){led3.on();}
				else{led3.off();}             
				if(endlage2 == true){led3.on();}
				else  {led4.off();} 
}
void verbindung(){
    Serial.println("Verbindungstest");
					 //++++++Restart nachdem die GSM verbinung disconectet ist++++++//
					 if (!Blynk.connected()){
											 Serial.println("A_off");

											 digitalWrite(12, HIGH);                             //Fütterung Stoppen
											 futter = false ;                                    //Fütterung Stoppen 
											 digitalWrite(9, HIGH);                              //Pumpe eins vorm Disconect deaktivieren
											 pumpe1 = false ;                                    //Pumpe eins vorm Disconect deaktivieren         
											 pumpe2 = false ;                                   //Pumpe zwei vorm Disconect deaktivieren
											 digitalWrite(8, HIGH);                              //Pumpe zwei vorm Disconect deaktivieren  
										
											 z ++ ;
											 Serial.println("disconnected ");
											 modem.restart();
											 Blynk.begin(auth, modem, apn, user, pass);
											 Serial.println("reconfigured ");
											 merkertrace = true;
											 merkertrace2 = true;
}
                       Blynk.syncVirtual(V10);
                       Serial.print("futterz:");
                       Serial.println(futterz);
                       Blynk.virtualWrite(V12, z); 



}

void setup(){

    
    timer.setInterval(5000L, senddata);           //Pumpentrace
    
    timer.setInterval(1000L, sendvolt);           //Volt Senden und Endlagen und Wasserstand ausgeben
 
    timer.setInterval(400L, fastloop);            //Futterautomat und Pmpen
    
    timer.setInterval(2*60L*1000L, verbindung);   //+++++Verbindungstest und Synk++++++//

	
    // Debug console
    Serial.begin(19200);
    pinMode(12, OUTPUT);    // Setzt den Digitalpin 13 als Outputpin
    digitalWrite(12, HIGH); //Futter 
   
    pinMode(13, OUTPUT);    // Setzt den Digitalpin 13 als Outputpin
    digitalWrite(13, HIGH); // Licht

    pinMode(11, OUTPUT);    // Setzt den Digitalpin 13 als Outputpin
    digitalWrite(11, HIGH); //Klappe Runter
   
    pinMode(10, OUTPUT);    // Setzt den Digitalpin 13 als Outputpin
    digitalWrite(10, HIGH); //Klappe Hoch 

    pinMode(9, OUTPUT);     // Setzt den Digitalpin 13 als Outputpin
    digitalWrite(9, HIGH);  //Pumpe

    pinMode(8, OUTPUT);     // Setzt den Digitalpin 13 als Outputpin
    digitalWrite(8, HIGH);

    pinMode(5, INPUT);
    pinMode(6, INPUT);

    pinMode(A0, INPUT);
    pinMode(A1, INPUT);
    pinMode(A2, INPUT); 
   
    // Set GSM module baud rate
    SerialAT.begin (9600);
    delay(3000);

    // Restart takes quite some time
    // To skip it, call init() instead of restart()
    Serial.println("Initializing modem...");
    modem.restart();

    // Unlock your SIM card with a PIN
    //modem.simUnlock("1510");

    Blynk.begin(auth, modem, apn, user, pass);
}
void loop(){
timer.run(); // Initiates BlynkTimer  
Blynk.run();


}


void senddata(){
  
 //++++++Wasserpumpen 1 Trace senden+++++//
  if (pumpe1 == true && merkertrace == true)  {
                                               pumpez1 ++;
                                              // Blynk.virtualWrite(V7, pumpe1);    
                                               Blynk.virtualWrite(V20, pumpez1); 
                                               Serial.print("+P1-> ");
                                               Serial.print(pumpe1);
                                               merkertrace = false;
                                               }

  else if (pumpe1 == false && merkertrace == false){
                                               Blynk.virtualWrite(V7, pumpe1);
                                               Serial.print("P1-> ");
                                               Serial.print(pumpe1);
                                               merkertrace = true;
                                               }
 //else                                         {
 //                                              Serial.print("P1: ");
 //                                              Serial.print(pumpe1);
 //                                             }

 //++++++Wasserpumpen 2 Trace senden+++++//
  if (pumpe2 == true && merkertrace2 == true)  {
                                                pumpez2 ++;
                                               // Blynk.virtualWrite(V9, pumpe2);
                                                Blynk.virtualWrite(V21, pumpez2); 
                                                Serial.print(" |+P2-> ");
                                                Serial.print(pumpe2);
                                                merkertrace2 = false;
                                               }
  else if (pumpe2 == false && merkertrace2 == false){
    
                                                 // Blynk.virtualWrite(V9, pumpe1);
                                                Serial.print(" | P2: ");    //   Serial.print(" | P2-> ");
                                                Serial.println(pumpe2);       //   Serial.print(pumpe2);
                                                merkertrace2 = true;
                                               }
// else                                         {
//                                               Serial.print(" | P2: ");
//                                               Serial.println(pumpe2);
// }
  }

How is your SIM800 board powered?

Pete.

With direkt Wire 0,75mm2 top a Powersplay with 20W

Voltage?
Common GND?

Pete.

Wat do you mean with Common GND ?

Voltage 4,2V

Is the GND of the SIM800 power supply connected to the GND on your Arduino?

So it’s a 4.75 amp power supply?

Pete.

I have Controlled to 4,2V

Yes, you already said that.
The problem with the SIM800 is that it requires a lot of current when the modem is in Tx mode.
Most SIM800 issues are caused by an inadequate power supply that can’t deliver sufficient current.

Pete.

Becouse of a Preview Problem i solve this Problem.

Curent is Not Problem