watchdog error

Hello everybody.

Im new to programming. Im trying to control blinds with esp8266 via mqtt.

I can send recieve with mqtt also i use some sensors.

I tried to mix them. Control blinds (automated with light sensor and manuel with home assistans + dth sensor + ultrosonic sensor for reset blinds + store stepper count to eeprom)

i got hw watchdog error. (with and without connect any cable)

Here is my code.

#include <AccelStepper.h>
#include <EEPROM.h>
#include <ESP8266WiFi.h>
#include <PubSubClient.h>
#include <DHT.h>

#define trigPin 1
#define echoPin 2
#define Motor1_Dir 5
#define Motor1_Step 6
#define DHTPIN 7

#define DHTTYPE DHT11

const char* ssid = "x";
const char* password = "x";
const char* mqtt_server = "x";
const char* mqttUser = "x";
const char* mqttPassword = "x";

long duration; //looptaki hesap için
long ilksure;  //setuptaki hesap için
int distance; //looptaki hesap için
int distancefirst;  //setuptaki hesap için
int StepCounter;
int value;
int val;
int val2;
int valEEPROM;
int valstop;

int address = 0;

int isik;

DHT dht(DHTPIN, DHTTYPE);

AccelStepper stepper(1, Motor1_Step, Motor1_Dir); 

WiFiClient espClient;
PubSubClient client(espClient);


void setup_wifi() {

  delay(10);
  // We start by connecting to a WiFi network
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);

  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

  randomSeed(micros());

  Serial.println("");
  Serial.println("WiFi connected");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());
}

// Perde Kontrolleri 

void callback(char* topic, byte* payload, unsigned int length) 
  {
    Serial.print("Message arrived [");
    Serial.print(topic);
    Serial.print("] ");
    for (int i = 0; i < length; i++) 
    {
  Serial.print((char)payload[i]);
  int val = (char)payload[i]; 

    }
    Serial.println();


    if (strcmp(topic,"alkan/perdedurum")==0)
      {
 // Automatik Mode
      
        if ( val = 'auto' )
           {
             if (isik < 100 )
                  { 
                  stepper.enableOutputs();
                  stepper.runToNewPosition(0);
                  ESP.wdtFeed();
                  EEPROM.write(address, '0');
                  Serial.println("Otomatik Acildi");
                  stepper.disableOutputs();
                  }
          
             if (isik > 800 ) 
                  {
                  stepper.enableOutputs();
                  stepper.runToNewPosition(3000);
                  ESP.wdtFeed();
                  EEPROM.write(address, '3000');
                  Serial.println("Otomatik Kapandi");
                  stepper.disableOutputs();
                  }            
           }
 // Manuel Mode
        if ( val = 'manuel' )
          { 
             if (strcmp(topic,"alkan/perde")==0)
                  // Perde Pozisyona Git 
                 {
                   value = EEPROM.read(address);
                   val2 = value*10;

                  if ( val != val2 or val != 'STOP' or val != 'RESET' )
                  {      
                  stepper.enableOutputs();
                  stepper.runToNewPosition(val);
                  ESP.wdtFeed();
                  valEEPROM = val/10;
                  EEPROM.write(address, valEEPROM);
                  Serial.println("Durdugu Yer");
                  Serial.print(val);
                  stepper.disableOutputs();
                  }
                } 

            // Acil Durdur
            {
             if( val = 'STOP' )     
               { 
                stepper.stop();
                valstop = stepper.currentPosition ();
                EEPROM.write(address, valstop); 
                Serial.println("Stop Yeri");
                Serial.print(valstop);               
                stepper.disableOutputs();
               }
            }

          // Resetleme
          {
            if( val = 'RESET' )
              {
                 {
                   digitalWrite(trigPin, HIGH);
                   delayMicroseconds(10);
                   digitalWrite(trigPin, LOW);
                   ilksure = pulseIn(echoPin, HIGH);
                   distancefirst = ilksure*0.034/2;
                   Serial.print(distancefirst);    
                  }    
                { 
                  if (( distancefirst <= 50 ) and  (distancefirst >=5 ))
                    {
                     stepper.runSpeed(); 
                     digitalWrite(trigPin, HIGH);
                     delayMicroseconds(10);
                     digitalWrite(trigPin, LOW);
                     duration = pulseIn(echoPin, HIGH);
                     distance = duration*0.034/2;
                     Serial.print(distance);
                    }       
                  if (( distance >= 50 ) or  (distancefirst <=5 ))
                    {
                      stepper.stop();
//                    distancefirst = 200; 
                      digitalWrite(trigPin, LOW);
                      StepCounter = -100;
                      stepper.runToNewPosition(0);
                      ESP.wdtFeed();
                      EEPROM.write(address, '0');   
                      Serial.println("Resetlendi");
                      stepper.disableOutputs();                         
//                    distance = 15;
                    }      
                }
    
              }
          
            }
          }
      }
  }
void reconnect() {
  // Loop until we're reconnected
  while (!client.connected()) {
    Serial.print("Attempting MQTT connection...");
    // Attempt to connect
    if (client.connect("alkan", mqttUser, mqttPassword )) {
      Serial.println("connected");
      client.subscribe("alkan/perde");
      client.subscribe("alkan/perdedurum");
    } else {
      Serial.print("failed, rc=");
      Serial.print(client.state());
      Serial.println(" try again in 5 seconds");
      // Wait 5 seconds before retrying
      delay(5000);
    }
  }
}



void setup()
{  
    ESP.wdtDisable();
    Serial.begin(115200);
    
    pinMode(trigPin, OUTPUT);
    pinMode(echoPin, INPUT);
    
    setup_wifi();
    client.setServer(mqtt_server, 1883);
    
    dht.begin();

    stepper.setMaxSpeed(1000);
    stepper.setSpeed(900);

    isik = analogRead(A0);

    delay(1000); 
}

void loop()
{   
    if (!client.connected()) 
   {
    reconnect();
   }
   
// SICAKLIK ve NEM
    {
       float temp = dht.readTemperature();
       float humi = dht.readHumidity();
       float isik2 = analogRead(A0);
      
       Serial.println("Sıcaklık");
       Serial.println(temp);
       Serial.println("Nem");
       Serial.println(humi);      
       Serial.println("Isik");
       Serial.println(isik2);
       
       client.publish("alkan/temp", String(temp).c_str());    
       client.publish("alkan/humi", String(humi).c_str());
       client.publish("alkan/isik", String(isik2).c_str());            
        delay(5000);    
    }
    
}

Here is my error:

ets Jan 8 2013,rst cause:4, boot mode:(3,6)

wdt reset
load 0x4010f000, len 3456, room 16
tail 0
chksum 0x84
csum 0x84
va5432625
~ld

You need to call wdt.reset() at least within the wdt timeout period.
If you have a while() or for() loop running, that takes too long, you need to accommodate that in your wdt calls.

Worst case - if you have no control of the offending code, wdt.disable() just before, and wdt.enable() again as soon as you can.

I couldnt do it can you suggest a place to put reset or disable.

If i put it at the begining and never enable what will happen ?

if ( val = 'auto' )Oops

do i need " " ? It will be payload from mqtt

“val” is an int.
Now, on a 32 bit device, this could contain the multi-character constant ‘auto’, but since you’re only reading a single character with Serial.read, it isn’t a sensible choice.

i tried to change it to a number but still no luck.

We can’t see what you changed

i have changed to this

#include <AccelStepper.h>
#include <EEPROM.h>
#include <ESP8266WiFi.h>
#include <PubSubClient.h>
#include <DHT.h>

#define trigPin 1
#define echoPin 2
#define Motor1_Dir 5
#define Motor1_Step 6
#define DHTPIN 7

#define DHTTYPE DHT11

const char* ssid = "x";
const char* password = "x";
const char* mqtt_server = "x";
const char* mqttUser = "x";
const char* mqttPassword = "x";

long duration; //looptaki hesap için
long ilksure;  //setuptaki hesap için
int distance; //looptaki hesap için
int distancefirst;  //setuptaki hesap için
int StepCounter;
int value;
int val;
int val2;
int valEEPROM;
int valstop;

int address = 0;

int isik;

DHT dht(DHTPIN, DHTTYPE);

AccelStepper stepper(1, Motor1_Step, Motor1_Dir);

WiFiClient espClient;
PubSubClient client(espClient);


void setup_wifi() {

  delay(10);
  // We start by connecting to a WiFi network
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);

  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

  randomSeed(micros());

  Serial.println("");
  Serial.println("WiFi connected");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());
}

// Perde Kontrolleri

void callback(char* topic, byte* payload, unsigned int length)
  {
    Serial.print("Message arrived [");
    Serial.print(topic);
    Serial.print("] ");
    for (int i = 0; i < length; i++)
    {
  Serial.print((char)payload[i]);
  int val = (char)payload[i];

    }
    Serial.println();


    if (strcmp(topic,"alkan/perdedurum")==0)
      {
 // Automatik Mode
     
        if ( val = 'a' )
           {
             if (isik < 100 )
                  {
                  stepper.enableOutputs();
                  stepper.runToNewPosition(0);
                  ESP.wdtFeed();
                  EEPROM.write(address, '0');
                  Serial.println("Otomatik Acildi");
                  stepper.disableOutputs();
                  }
         
             if (isik > 800 )
                  {
                  stepper.enableOutputs();
                  stepper.runToNewPosition(3000);
                  ESP.wdtFeed();
                  EEPROM.write(address, '3000');
                  Serial.println("Otomatik Kapandi");
                  stepper.disableOutputs();
                  }           
           }
 // Manuel Mode
        if ( val = 'b' )
          {
             if (strcmp(topic,"alkan/perde")==0)
                  // Perde Pozisyona Git
                 {
                   value = EEPROM.read(address);
                   val2 = value*10;

                  if ( val != val2 or val != 'STOP' or val != 'RESET' )
                  {     
                  stepper.enableOutputs();
                  stepper.runToNewPosition(val);
                  ESP.wdtFeed();
                  valEEPROM = val/10;
                  EEPROM.write(address, valEEPROM);
                  Serial.println("Durdugu Yer");
                  Serial.print(val);
                  stepper.disableOutputs();
                  }
                }

            // Acil Durdur
            {
             if( val = 'STOP' )     
               {
                stepper.stop();
                valstop = stepper.currentPosition ();
                EEPROM.write(address, valstop);
                Serial.println("Stop Yeri");
                Serial.print(valstop);               
                stepper.disableOutputs();
               }
            }

          // Resetleme
          {
            if( val = 'RESET' )
              {
                 {
                   digitalWrite(trigPin, HIGH);
                   delayMicroseconds(10);
                   digitalWrite(trigPin, LOW);
                   ilksure = pulseIn(echoPin, HIGH);
                   distancefirst = ilksure*0.034/2;
                   Serial.print(distancefirst);   
                  }   
                {
                  if (( distancefirst <= 50 ) and  (distancefirst >=5 ))
                    {
                     stepper.runSpeed();
                     digitalWrite(trigPin, HIGH);
                     delayMicroseconds(10);
                     digitalWrite(trigPin, LOW);
                     duration = pulseIn(echoPin, HIGH);
                     distance = duration*0.034/2;
                     Serial.print(distance);
                    }       
                  if (( distance >= 50 ) or  (distancefirst <=5 ))
                    {
                      stepper.stop();
//                    distancefirst = 200;
                      digitalWrite(trigPin, LOW);
                      StepCounter = -100;
                      stepper.runToNewPosition(0);
                      ESP.wdtFeed();
                      EEPROM.write(address, '0');   
                      Serial.println("Resetlendi");
                      stepper.disableOutputs();                         
//                    distance = 15;
                    }     
                }
   
              }
         
            }
          }
      }
  }
void reconnect() {
  // Loop until we're reconnected
  while (!client.connected()) {
    Serial.print("Attempting MQTT connection...");
    // Attempt to connect
    if (client.connect("alkan", mqttUser, mqttPassword )) {
      Serial.println("connected");
      client.subscribe("alkan/perde");
      client.subscribe("alkan/perdedurum");
    } else {
      Serial.print("failed, rc=");
      Serial.print(client.state());
      Serial.println(" try again in 5 seconds");
      // Wait 5 seconds before retrying
      delay(5000);
    }
  }
}



void setup()
{ 
    ESP.wdtDisable();
    Serial.begin(115200);
   
    pinMode(trigPin, OUTPUT);
    pinMode(echoPin, INPUT);
   
    setup_wifi();
    client.setServer(mqtt_server, 1883);
   
    dht.begin();

    stepper.setMaxSpeed(1000);
    stepper.setSpeed(900);

    isik = analogRead(A0);

    delay(1000);
}

void loop()
{   
    if (!client.connected())
   {
    reconnect();
   }
   
// SICAKLIK ve NEM
    {
       float temp = dht.readTemperature();
       float humi = dht.readHumidity();
       float isik2 = analogRead(A0);
     
       Serial.println("Sıcaklık");
       Serial.println(temp);
       Serial.println("Nem");
       Serial.println(humi);     
       Serial.println("Isik");
       Serial.println(isik2);
       
       client.publish("alkan/temp", String(temp).c_str());   
       client.publish("alkan/humi", String(humi).c_str());
       client.publish("alkan/isik", String(isik2).c_str());           
        delay(5000);   
    }
   
}

int val = (char)payload[i];Lose the word “int”

i have changed to this. But still same

#include <AccelStepper.h>
#include <EEPROM.h>
#include <ESP8266WiFi.h>
#include <PubSubClient.h>
#include <DHT.h>

#define trigPin 1
#define echoPin 2
#define Motor1_Dir 5
#define Motor1_Step 6
#define DHTPIN 7

#define DHTTYPE DHT11

const char* ssid = "xxx";
const char* password = "xxx";
const char* mqtt_server = "192.168.1.60";
const char* mqttUser = "mqtt";
const char* mqttPassword = "mqtt";

long duration; //looptaki hesap için
long ilksure;  //setuptaki hesap için
int distance; //looptaki hesap için
int distancefirst;  //setuptaki hesap için
int StepCounter;
int value;
int val;
int val2;
int valEEPROM;
int valstop;

int address = 0;

int isik;

DHT dht(DHTPIN, DHTTYPE);

AccelStepper stepper(1, Motor1_Step, Motor1_Dir); 

WiFiClient espClient;
PubSubClient client(espClient);


void setup_wifi() {

  delay(10);
  // We start by connecting to a WiFi network
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);

  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

  randomSeed(micros());

  Serial.println("");
  Serial.println("WiFi connected");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());
}

// Perde Kontrolleri 

void callback(char* topic, byte* payload, unsigned int length) 
  {
    Serial.print("Message arrived [");
    Serial.print(topic);
    Serial.print("] ");
    for (int i = 0; i < length; i++) 
    {
  Serial.print((char)payload[i]);
  val = (char)payload[i]; 

    }
    Serial.println();


    if (strcmp(topic,"alkan/perdedurum")==0)
      {
 // Automatik Mode
      
        if ( val = '4444' )
           {
             if (isik < 100 )
                  { 
                  stepper.enableOutputs();
                  stepper.runToNewPosition(0);
                  ESP.wdtFeed();
                  EEPROM.write(address, '0');
                  Serial.println("Otomatik Acildi");
                  stepper.disableOutputs();
                  }
          
             if (isik > 800 ) 
                  {
                  stepper.enableOutputs();
                  stepper.runToNewPosition(3000);
                  ESP.wdtFeed();
                  EEPROM.write(address, '3000');
                  Serial.println("Otomatik Kapandi");
                  stepper.disableOutputs();
                  }            
           }
 // Manuel Mode
        if ( val = '5555' )
          { 
             if (strcmp(topic,"alkan/perde")==0)
                  // Perde Pozisyona Git 
                 {
                   value = EEPROM.read(address);
                   val2 = value*10;

                  if ( val != val2 or val != 'STOP' or val != 'RESET' )
                  {      
                  stepper.enableOutputs();
                  stepper.runToNewPosition(val);
                  ESP.wdtFeed();
                  valEEPROM = val/10;
                  EEPROM.write(address, valEEPROM);
                  Serial.println("Durdugu Yer");
                  Serial.print(val);
                  stepper.disableOutputs();
                  }
                } 

            // Acil Durdur
            {
             if( val = 'STOP' )     
               { 
                stepper.stop();
                valstop = stepper.currentPosition ();
                EEPROM.write(address, valstop); 
                Serial.println("Stop Yeri");
                Serial.print(valstop);               
                stepper.disableOutputs();
               }
            }

          // Resetleme
          {
            if( val = 'RESET' )
              {
                 {
                   digitalWrite(trigPin, HIGH);
                   delayMicroseconds(10);
                   digitalWrite(trigPin, LOW);
                   ilksure = pulseIn(echoPin, HIGH);
                   distancefirst = ilksure*0.034/2;
                   Serial.print(distancefirst);    
                  }    
                { 
                  if (( distancefirst <= 50 ) and  (distancefirst >=5 ))
                    {
                     stepper.runSpeed(); 
                     digitalWrite(trigPin, HIGH);
                     delayMicroseconds(10);
                     digitalWrite(trigPin, LOW);
                     duration = pulseIn(echoPin, HIGH);
                     distance = duration*0.034/2;
                     Serial.print(distance);
                    }       
                  if (( distance >= 50 ) or  (distancefirst <=5 ))
                    {
                      stepper.stop();
//                    distancefirst = 200; 
                      digitalWrite(trigPin, LOW);
                      StepCounter = -100;
                      stepper.runToNewPosition(0);
                      ESP.wdtFeed();
                      EEPROM.write(address, '0');   
                      Serial.println("Resetlendi");
                      stepper.disableOutputs();                         
//                    distance = 15;
                    }      
                }
    
              }
          
            }
          }
      }
  }
void reconnect() {
  // Loop until we're reconnected
  while (!client.connected()) {
    Serial.print("Attempting MQTT connection...");
    // Attempt to connect
    if (client.connect("alkan", mqttUser, mqttPassword )) {
      Serial.println("connected");
      client.subscribe("alkan/perde");
      client.subscribe("alkan/perdedurum");
    } else {
      Serial.print("failed, rc=");
      Serial.print(client.state());
      Serial.println(" try again in 5 seconds");
      // Wait 5 seconds before retrying
      delay(5000);
    }
  }
}



void setup()
{  
    ESP.wdtDisable();
    Serial.begin(115200);
    
    pinMode(trigPin, OUTPUT);
    pinMode(echoPin, INPUT);
    
    setup_wifi();
    client.setServer(mqtt_server, 1883);
    
    dht.begin();

    stepper.setMaxSpeed(1000);
    stepper.setSpeed(900);

    isik = analogRead(A0);

    delay(1000); 
}

void loop()
{   
    if (!client.connected()) 
   {
    reconnect();
   }
   
// SICAKLIK ve NEM
    {
       float temp = dht.readTemperature();
       float humi = dht.readHumidity();
       float isik2 = analogRead(A0);
      
       Serial.println("Sıcaklık");
       Serial.println(temp);
       Serial.println("Nem");
       Serial.println(humi);      
       Serial.println("Isik");
       Serial.println(isik2);
       
       client.publish("alkan/temp", String(temp).c_str());    
       client.publish("alkan/humi", String(humi).c_str());
       client.publish("alkan/isik", String(isik2).c_str());            
        delay(5000);    
    }
    
}
if ( val = '4444' )

Oops

if( val = 'RESET' ) Oops2

Thanks for your help but still i cant do it.

New code:

#include <AccelStepper.h>
#include <EEPROM.h>
#include <ESP8266WiFi.h>
#include <PubSubClient.h>
#include <DHT.h>

#define trigPin 1
#define echoPin 2
#define Motor1_Dir 5
#define Motor1_Step 6
#define DHTPIN 7

#define DHTTYPE DHT11

const char* ssid = "xxx";
const char* password = "xxx";
const char* mqtt_server = "192.168.1.60";
const char* mqttUser = "mqtt";
const char* mqttPassword = "mqtt";

long duration; //looptaki hesap için
long ilksure;  //setuptaki hesap için
int distance; //looptaki hesap için
int distancefirst;  //setuptaki hesap için
int StepCounter;
int value;
int val;
int val2;
int valEEPROM;
int valstop;

int address = 0;

int isik;

DHT dht(DHTPIN, DHTTYPE);

AccelStepper stepper(1, Motor1_Step, Motor1_Dir); 

WiFiClient espClient;
PubSubClient client(espClient);


void setup_wifi() {

  delay(10);
  // We start by connecting to a WiFi network
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);

  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

  randomSeed(micros());

  Serial.println("");
  Serial.println("WiFi connected");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());
}

// Perde Kontrolleri 

void callback(char* topic, byte* payload, unsigned int length) 
  {
    Serial.print("Message arrived [");
    Serial.print(topic);
    Serial.print("] ");
    for (int i = 0; i < length; i++) 
    {
  Serial.print((char)payload[i]);
  val = (char)payload[i]; 

    }
    Serial.println();


    if (strcmp(topic,"alkan/perdedurum")==0)
      {
 // Automatik Mode
      
        if ( val = '1' )
           {
             if (isik < 100 )
                  { 
                  stepper.enableOutputs();
                  stepper.runToNewPosition(0);
                  ESP.wdtFeed();
                  EEPROM.write(address, '0');
                  Serial.println("Otomatik Acildi");
                  stepper.disableOutputs();
                  }
          
             if (isik > 800 ) 
                  {
                  stepper.enableOutputs();
                  stepper.runToNewPosition(3000);
                  ESP.wdtFeed();
                  EEPROM.write(address, '3000');
                  Serial.println("Otomatik Kapandi");
                  stepper.disableOutputs();
                  }            
           }
 // Manuel Mode
        if ( val = '2' )
          { 
             if (strcmp(topic,"alkan/perde")==0)
                  // Perde Pozisyona Git 
                 {
                   value = EEPROM.read(address);
                   val2 = value*10;

                  if ( val != val2 or val != 'STOP' or val != 'RESET' )
                  {      
                  stepper.enableOutputs();
                  stepper.runToNewPosition(val);
                  ESP.wdtFeed();
                  valEEPROM = val/10;
                  EEPROM.write(address, valEEPROM);
                  Serial.println("Durdugu Yer");
                  Serial.print(val);
                  stepper.disableOutputs();
                  }
                } 

            // Acil Durdur
            {
             if( val = '3' )     
               { 
                stepper.stop();
                valstop = stepper.currentPosition ();
                EEPROM.write(address, valstop); 
                Serial.println("Stop Yeri");
                Serial.print(valstop);               
                stepper.disableOutputs();
               }
            }

          // Resetleme
          {
            if( val = '4' )
              {
                 {
                   digitalWrite(trigPin, HIGH);
                   delayMicroseconds(10);
                   digitalWrite(trigPin, LOW);
                   ilksure = pulseIn(echoPin, HIGH);
                   distancefirst = ilksure*0.034/2;
                   Serial.print(distancefirst);    
                  }    
                { 
                  if (( distancefirst <= 50 ) and  (distancefirst >=5 ))
                    {
                     stepper.runSpeed(); 
                     digitalWrite(trigPin, HIGH);
                     delayMicroseconds(10);
                     digitalWrite(trigPin, LOW);
                     duration = pulseIn(echoPin, HIGH);
                     distance = duration*0.034/2;
                     Serial.print(distance);
                    }       
                  if (( distance >= 50 ) or  (distancefirst <=5 ))
                    {
                      stepper.stop();
//                    distancefirst = 200; 
                      digitalWrite(trigPin, LOW);
                      StepCounter = -100;
                      stepper.runToNewPosition(0);
                      ESP.wdtFeed();
                      EEPROM.write(address, '0');   
                      Serial.println("Resetlendi");
                      stepper.disableOutputs();                         
//                    distance = 15;
                    }      
                }
    
              }
          
            }
          }
      }
  }
void reconnect() {
  // Loop until we're reconnected
  while (!client.connected()) {
    Serial.print("Attempting MQTT connection...");
    // Attempt to connect
    if (client.connect("alkan", mqttUser, mqttPassword )) {
      Serial.println("connected");
      client.subscribe("alkan/perde");
      client.subscribe("alkan/perdedurum");
    } else {
      Serial.print("failed, rc=");
      Serial.print(client.state());
      Serial.println(" try again in 5 seconds");
      // Wait 5 seconds before retrying
      delay(5000);
    }
  }
}



void setup()
{  
    ESP.wdtDisable();
    Serial.begin(115200);
    
    pinMode(trigPin, OUTPUT);
    pinMode(echoPin, INPUT);
    
    setup_wifi();
    client.setServer(mqtt_server, 1883);
    
    dht.begin();

    stepper.setMaxSpeed(1000);
    stepper.setSpeed(900);

    isik = analogRead(A0);

    delay(1000); 
}

void loop()
{   
    if (!client.connected()) 
   {
    reconnect();
   }
   
// SICAKLIK ve NEM
    {
       float temp = dht.readTemperature();
       float humi = dht.readHumidity();
       float isik2 = analogRead(A0);
      
       Serial.println("Sıcaklık");
       Serial.println(temp);
       Serial.println("Nem");
       Serial.println(humi);      
       Serial.println("Isik");
       Serial.println(isik2);
       
       client.publish("alkan/temp", String(temp).c_str());    
       client.publish("alkan/humi", String(humi).c_str());
       client.publish("alkan/isik", String(isik2).c_str());            
        delay(5000);    
    }
    
}

= is for assignment
== is for comparison

Thank you your are a good teacher. But still no :slight_smile:

I think i need to write from begining. Can it be due to pin selection ?

#include <AccelStepper.h>
#include <EEPROM.h>
#include <ESP8266WiFi.h>
#include <PubSubClient.h>
#include <DHT.h>

#define trigPin 1
#define echoPin 2
#define Motor1_Dir 5
#define Motor1_Step 6
#define DHTPIN 7

#define DHTTYPE DHT11

const char* ssid = "xxx";
const char* password = "xxx";
const char* mqtt_server = "192.168.1.22";
const char* mqttUser = "mqtt";
const char* mqttPassword = "mqtt";

long duration; //looptaki hesap için
long ilksure;  //setuptaki hesap için
int distance; //looptaki hesap için
int distancefirst;  //setuptaki hesap için
int StepCounter;
int value;
int val;
int val2;
int valEEPROM;
int valstop;

int address = 0;

int isik;

DHT dht(DHTPIN, DHTTYPE);

AccelStepper stepper(1, Motor1_Step, Motor1_Dir); 

WiFiClient espClient;
PubSubClient client(espClient);


void setup_wifi() {

  delay(10);
  // We start by connecting to a WiFi network
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);

  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

  randomSeed(micros());

  Serial.println("");
  Serial.println("WiFi connected");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());
}

// Perde Kontrolleri 

void callback(char* topic, byte* payload, unsigned int length) 
  {
    Serial.print("Message arrived [");
    Serial.print(topic);
    Serial.print("] ");
    for (int i = 0; i < length; i++) 
    {
  Serial.print((char)payload[i]);
  val = (char)payload[i]; 

    }
    Serial.println();


    if (strcmp(topic,"alkan/perdedurum")==0)
      {
 // Automatik Mode
      
        if ( val == '1' )
           {
             if (isik < 100 )
                  { 
                  stepper.enableOutputs();
                  stepper.runToNewPosition(0);
                  ESP.wdtFeed();
                  EEPROM.write(address, '0');
                  Serial.println("Otomatik Acildi");
                  stepper.disableOutputs();
                  }
          
             if (isik > 800 ) 
                  {
                  stepper.enableOutputs();
                  stepper.runToNewPosition(3000);
                  ESP.wdtFeed();
                  EEPROM.write(address, '3000');
                  Serial.println("Otomatik Kapandi");
                  stepper.disableOutputs();
                  }            
           }
 // Manuel Mode
        if ( val == '2' )
          { 
             if (strcmp(topic,"alkan/perde")==0)
                  // Perde Pozisyona Git 
                 {
                   value = EEPROM.read(address);
                   val2 = value*10;

                  if ( val != val2 or val != 'STOP' or val != 'RESET' )
                  {      
                  stepper.enableOutputs();
                  stepper.runToNewPosition(val);
                  ESP.wdtFeed();
                  valEEPROM = val/10;
                  EEPROM.write(address, valEEPROM);
                  Serial.println("Durdugu Yer");
                  Serial.print(val);
                  stepper.disableOutputs();
                  }
                } 

            // Acil Durdur
            {
             if( val == '3' )     
               { 
                stepper.stop();
                valstop = stepper.currentPosition ();
                EEPROM.write(address, valstop); 
                Serial.println("Stop Yeri");
                Serial.print(valstop);               
                stepper.disableOutputs();
               }
            }

          // Resetleme
          {
            if( val == '4' )
              {
                 {
                   digitalWrite(trigPin, HIGH);
                   delayMicroseconds(10);
                   digitalWrite(trigPin, LOW);
                   ilksure = pulseIn(echoPin, HIGH);
                   distancefirst = ilksure*0.034/2;
                   Serial.print(distancefirst);    
                  }    
                { 
                  if (( distancefirst <= 50 ) and  (distancefirst >=5 ))
                    {
                     stepper.runSpeed(); 
                     digitalWrite(trigPin, HIGH);
                     delayMicroseconds(10);
                     digitalWrite(trigPin, LOW);
                     duration = pulseIn(echoPin, HIGH);
                     distance = duration*0.034/2;
                     Serial.print(distance);
                    }       
                  if (( distance >= 50 ) or  (distancefirst <=5 ))
                    {
                      stepper.stop();
//                    distancefirst = 200; 
                      digitalWrite(trigPin, LOW);
                      StepCounter = -100;
                      stepper.runToNewPosition(0);
                      ESP.wdtFeed();
                      EEPROM.write(address, '0');   
                      Serial.println("Resetlendi");
                      stepper.disableOutputs();                         
//                    distance = 15;
                    }      
                }
    
              }
          
            }
          }
      }
  }
void reconnect() {
  // Loop until we're reconnected
  while (!client.connected()) {
    Serial.print("Attempting MQTT connection...");
    // Attempt to connect
    if (client.connect("alkan", mqttUser, mqttPassword )) {
      Serial.println("connected");
      client.subscribe("alkan/perde");
      client.subscribe("alkan/perdedurum");
    } else {
      Serial.print("failed, rc=");
      Serial.print(client.state());
      Serial.println(" try again in 5 seconds");
      // Wait 5 seconds before retrying
      delay(5000);
    }
  }
}



void setup()
{  
    ESP.wdtDisable();
    Serial.begin(115200);
    
    pinMode(trigPin, OUTPUT);
    pinMode(echoPin, INPUT);
    
    setup_wifi();
    client.setServer(mqtt_server, 1883);
    
    dht.begin();

    stepper.setMaxSpeed(1000);
    stepper.setSpeed(900);

    isik = analogRead(A0);

    delay(1000); 
}

void loop()
{   
    if (!client.connected()) 
   {
    reconnect();
   }
   
// SICAKLIK ve NEM
    {
       float temp = dht.readTemperature();
       float humi = dht.readHumidity();
       float isik2 = analogRead(A0);
      
       Serial.println("Sıcaklık");
       Serial.println(temp);
       Serial.println("Nem");
       Serial.println(humi);      
       Serial.println("Isik");
       Serial.println(isik2);
       
       client.publish("alkan/temp", String(temp).c_str());    
       client.publish("alkan/humi", String(humi).c_str());
       client.publish("alkan/isik", String(isik2).c_str());            
        delay(5000);    
    }
    
}
for (int i = 0; i < length; i++)
    {
  Serial.print((char)payload[i]);
  val = (char)payload[i];

    }

I can’t figure out what that loop is for.
The overall effect is equivalent to

val = (char)payload [length -1];

(ignoring the serial print)

It was like that at the example. And worked when i try mqtt. So i didn’t changed.

I delete it says " ‘i’ was not declared in this scope "

At that section i try to get info from mqtt

void callback(char* topic, byte* payload, unsigned int length) 
  {
    Serial.print("Message arrived [");
    Serial.print(topic);
    Serial.print("] ");
    for (int i = 0; i < length; i++) 
    {
  Serial.print((char)payload[i]);
  val = (char)payload[i];

val = (char)payload [length -1];

nope still same

#include <AccelStepper.h>
#include <EEPROM.h>
#include <ESP8266WiFi.h>
#include <PubSubClient.h>
#include <DHT.h>

#define trigPin 1
#define echoPin 2
#define Motor1_Dir 5
#define Motor1_Step 6
#define DHTPIN 7

#define DHTTYPE DHT11

const char* ssid = "xxx";
const char* password = "xxx";
const char* mqtt_server = "192.168.1.22";
const char* mqttUser = "mqtt";
const char* mqttPassword = "mqtt";

long duration; //looptaki hesap için
long ilksure;  //setuptaki hesap için
int distance; //looptaki hesap için
int distancefirst;  //setuptaki hesap için
int StepCounter;
int value;
int val;
int val2;
int valEEPROM;
int valstop;

int address = 0;

int isik;

DHT dht(DHTPIN, DHTTYPE);

AccelStepper stepper(1, Motor1_Step, Motor1_Dir); 

WiFiClient espClient;
PubSubClient client(espClient);


void setup_wifi() {

  delay(10);
  // We start by connecting to a WiFi network
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);

  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

  randomSeed(micros());

  Serial.println("");
  Serial.println("WiFi connected");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());
}

// Perde Kontrolleri 

void callback(char* topic, byte* payload, unsigned int length) 
  {
    Serial.print("Message arrived [");
    Serial.print(topic);
    Serial.print("] ");
    {
  Serial.print((char)payload [length -1]);
  val = (char)payload [length -1]; 

    }
    Serial.println();


    if (strcmp(topic,"alkan/perdedurum")==0)
      {
 // Automatik Mode
      
        if ( val == '1' )
           {
             if (isik < 100 )
                  { 
                  stepper.enableOutputs();
                  stepper.runToNewPosition(0);
                  ESP.wdtFeed();
                  EEPROM.write(address, '0');
                  Serial.println("Otomatik Acildi");
                  stepper.disableOutputs();
                  }
          
             if (isik > 800 ) 
                  {
                  stepper.enableOutputs();
                  stepper.runToNewPosition(3000);
                  ESP.wdtFeed();
                  EEPROM.write(address, '3000');
                  Serial.println("Otomatik Kapandi");
                  stepper.disableOutputs();
                  }            
           }
 // Manuel Mode
        if ( val == '2' )
          { 
             if (strcmp(topic,"alkan/perde")==0)
                  // Perde Pozisyona Git 
                 {
                   value = EEPROM.read(address);
                   val2 = value*10;

                  if ( val != val2 or val != 'STOP' or val != 'RESET' )
                  {      
                  stepper.enableOutputs();
                  stepper.runToNewPosition(val);
                  ESP.wdtFeed();
                  valEEPROM = val/10;
                  EEPROM.write(address, valEEPROM);
                  Serial.println("Durdugu Yer");
                  Serial.print(val);
                  stepper.disableOutputs();
                  }
                } 

            // Acil Durdur
            {
             if( val == '3' )     
               { 
                stepper.stop();
                valstop = stepper.currentPosition ();
                EEPROM.write(address, valstop); 
                Serial.println("Stop Yeri");
                Serial.print(valstop);               
                stepper.disableOutputs();
               }
            }

          // Resetleme
          {
            if( val == '4' )
              {
                 {
                   digitalWrite(trigPin, HIGH);
                   delayMicroseconds(10);
                   digitalWrite(trigPin, LOW);
                   ilksure = pulseIn(echoPin, HIGH);
                   distancefirst = ilksure*0.034/2;
                   Serial.print(distancefirst);    
                  }    
                { 
                  if (( distancefirst <= 50 ) and  (distancefirst >=5 ))
                    {
                     stepper.runSpeed(); 
                     digitalWrite(trigPin, HIGH);
                     delayMicroseconds(10);
                     digitalWrite(trigPin, LOW);
                     duration = pulseIn(echoPin, HIGH);
                     distance = duration*0.034/2;
                     Serial.print(distance);
                    }       
                  if (( distance >= 50 ) or  (distancefirst <=5 ))
                    {
                      stepper.stop();
//                    distancefirst = 200; 
                      digitalWrite(trigPin, LOW);
                      StepCounter = -100;
                      stepper.runToNewPosition(0);
                      ESP.wdtFeed();
                      EEPROM.write(address, '0');   
                      Serial.println("Resetlendi");
                      stepper.disableOutputs();                         
//                    distance = 15;
                    }      
                }
    
              }
          
            }
          }
      }
  }
void reconnect() {
  // Loop until we're reconnected
  while (!client.connected()) {
    Serial.print("Attempting MQTT connection...");
    // Attempt to connect
    if (client.connect("alkan", mqttUser, mqttPassword )) {
      Serial.println("connected");
      client.subscribe("alkan/perde");
      client.subscribe("alkan/perdedurum");
    } else {
      Serial.print("failed, rc=");
      Serial.print(client.state());
      Serial.println(" try again in 5 seconds");
      // Wait 5 seconds before retrying
      delay(5000);
    }
  }
}



void setup()
{  
    ESP.wdtDisable();
    Serial.begin(115200);
    
    pinMode(trigPin, OUTPUT);
    pinMode(echoPin, INPUT);
    
    setup_wifi();
    client.setServer(mqtt_server, 1883);
    
    dht.begin();

    stepper.setMaxSpeed(1000);
    stepper.setSpeed(900);

    isik = analogRead(A0);

    delay(1000); 
}

void loop()
{   
    if (!client.connected()) 
   {
    reconnect();
   }
   
// SICAKLIK ve NEM
    {
       float temp = dht.readTemperature();
       float humi = dht.readHumidity();
       float isik2 = analogRead(A0);
      
       Serial.println("Sıcaklık");
       Serial.println(temp);
       Serial.println("Nem");
       Serial.println(humi);      
       Serial.println("Isik");
       Serial.println(isik2);
       
       client.publish("alkan/temp", String(temp).c_str());    
       client.publish("alkan/humi", String(humi).c_str());
       client.publish("alkan/isik", String(isik2).c_str());            
        delay(5000);    
    }
    
}

I’m still seeing stuff like this EEPROM.write(address, '3000');