esp8266 / esp8266/Arduino

ESP8266 Crashing!

Open
#9,097 7 comments 0 reactions 0 assignees View on GitHub
Dominant language
C++
Stars
16.7k
Forks
13.1k
PR merge metrics
No merged PRs in 30d

Description

#### Platform

- Hardware: ESP-12
- Core Version: ??
- Development Env: Arduino IDE
- Operating System: Windows

### Settings in IDE

- Module: Generic ESP8266 Module
- Flash Mode: DOUT
- Flash Size: 1MB
- lwip Variant: v2 Lower Memory
- Reset Method: dtr(aka nodemcu)
- Flash Frequency: 40Mhz
- CPU Frequency: 80Mhz
- Upload Using: SERIAL
- Upload Speed: 921600

### Problem Description

what's the problem? please help

```cpp
#include "config.h"

void setup()
{
Serial.begin(115200);

pinMode(TRIGGER_PIN, INPUT);
pinMode(wifiLed, OUTPUT);
pinMode(relayPin, OUTPUT);
pinMode(webSocketLed, OUTPUT);

digitalWrite(wifiLed, HIGH);
digitalWrite(relayPin, LOW);
digitalWrite(webSocketLed, LOW);

// Bağlantı denemesi
// WiFi.begin("mezopotamya", "password");
WiFi.begin();

// Bağlantı sağlanana kadar bekleyin
int baglantiDenemesi = 0;
while (WiFi.status() != WL_CONNECTED)
{
wifiLedUpdate();
delay(1000);
Serial.println("Bağlanılamadı. ");
// startWiFiManager();
if (baglantiDenemesi > 30)
{
baglantiDenemesi = 0;
Serial.println("Bağlantı başarısız. WiFi Manager başlatılıyor...");
// ESP.eraseConfig();
delay(200);
startWiFiManager();
break;
}
baglantiDenemesi++;
}
Serial.println("Bağlantı başarılı!");

client.setServer(mqtt_server, 1883);
client.setCallback(callback);
}

void loop()
{
if (WiFi.status() != WL_CONNECTED)
{
digitalWrite(wifiLed, HIGH);
Serial.println("WiFi connection lost. Reconnecting...");
wifiReconnect();
}
else
{
digitalWrite(wifiLed, LOW);
}
// Programın ana döngüsü
resetButton();

if (!client.connected())
{
reconnect();
}

if (client.connected() && onlineBildirimZamani + 10000 < millis())
{
Serial.println("Online oldugu mesaji gonderiliyor...");
client.publish("home/kombi/available", "online");
onlineBildirimZamani = millis();
}

client.loop();
// delay(1000);
if (yeniVeri)
{
yeniVeri = false;
// Control the relay based on temperature comparison
if (sonDurum == 1 && veriGuncelmi() && digitalRead(relayPin) == LOW)
{
sonAcilma = zaman();
// Kombiyi aç
digitalWrite(relayPin, HIGH);
Serial.println("Kombi opened");
client.publish("home/kombi", "1");
}

else if (sonDurum == 0)
{
sonKapanma = zaman();
// Kombiyi kapat
digitalWrite(relayPin, LOW);
Serial.println("Kombi closed");
client.publish("home/kombi", "0");
}
}

if (!veriGuncelmi())
{
if (digitalRead(relayPin) == HIGH)
{
sonKapanma = zaman();
// Kombiyi kapat
digitalWrite(relayPin, LOW);
Serial.println("Kombi closed");
client.publish("home/kombi", "0");
}
}
}

```

```cpp

#include
#include
#include
#include

#include
#include

const char *mqtt_server = "192.168.0.19";
const char *mqtt_username = "mqtt_user";
const char *mqtt_password = "12345";
const char *topic = "home/kombi/set";

float mevcutSicaklik = 0.0;
unsigned int sonDurum = 0;
float istenilenSicaklik = 0.0;
float tolerasDegeri = 0.0;
int maxCalisacakSure = 0;
long sonAcilma = 0;
long sonKapanma = 0;
int sonVeriOkunmaZamani = 0;
int verininGecerlilikSuresi = 60;
unsigned int onlineBildirimZamani = 0;
bool yeniVeri = false;

const int relayPin = 4; // 4 numaralı pin
const int wifiLed = 2; // 4 numaralı pin
const int webSocketLed = 5; // 4 numaralı pin

WiFiClient espClient;
PubSubClient client(espClient);

#define TRIGGER_PIN 0

void wifiLedUpdate()
{
if (WiFi.status() == WL_CONNECTED)
{
Serial.println("\nwifiLed LOW");
digitalWrite(wifiLed, LOW);
}
else
{
Serial.println("\nwifiLed HIGH");
digitalWrite(wifiLed, HIGH);
}
}

int zaman()
{
return millis() / 1000;
}

void startWiFiManager()
{
WiFiManager wm;
Serial.println("WiFi Manager ile bağlantı sağlandı!");
wm.setConfigPortalTimeout(30); // auto close configportal after n seconds
bool res;
res = wm.autoConnect(); // auto generated AP name from chipid
if (!res)
{
Serial.println("Failed to connect or hit timeout. Restarting");
ESP.restart();
}
else
{
// if you get here you have connected to the WiFi
Serial.println("connected...yeey :)");
}
}

void reconnect()
{
int mqtt_baglanti_deneme_sayisi = 0;
while (!client.connected())
{
if (mqtt_baglanti_deneme_sayisi > 5)
{
ESP.reset();
}

mqtt_baglanti_deneme_sayisi++;
Serial.print("Attempting MQTT connection...");

if (client.connect("ESP8266Client", mqtt_username, mqtt_password))
{
digitalWrite(webSocketLed, HIGH);
Serial.println("Connected to MQTT broker");
client.subscribe(topic);
}
else
{
digitalWrite(webSocketLed, LOW);
Serial.print("Failed, rc=");
Serial.print(client.state());
Serial.println(" Retrying in 5 seconds");
delay(5000);
}
}
}

void callback(char *topic, byte *payload, unsigned int length)
{
Serial.println("Message arrived in topic: " + String(topic));

// Mesajı bir String'e çevir
String message = "";
for (unsigned int i = 0; i < length; i++)
{
message += (char)payload[i];
}

Serial.println("Message: " + message);

// "home/kombi/set" konusundaki mesajları kontrol et
if (String(topic) == "home/kombi/set")
{
yeniVeri = true;
if (message == "1")
{
sonVeriOkunmaZamani = zaman();
sonDurum = 1;
}
else if (message == "0")
{
sonVeriOkunmaZamani = zaman();
sonDurum = 0;
}
}
}

// void callback(char *topic, byte *payload, unsigned int length)
// {
// Serial.println("Message received for topic: " + String(topic));
// Serial.println(int(payload));

// // // Parse JSON payload
// DynamicJsonDocument doc(256);
// deserializeJson(doc, payload, length);
// power = doc["power"];
// Serial.println(power);

// mevcutSicaklik = doc["mevcut_sicaklik"];
// istenilenSicaklik = doc["istenilen_sicaklik"];
// tolerasDegeri = doc["tolerans_degeri"];

// Serial.print("Mevcut Sıcaklık: ");
// Serial.println(mevcutSicaklik);
// Serial.print("İstenilen Sıcaklık: ");
// Serial.println(istenilenSicaklik);
// Serial.print("tolerasDegeri: ");
// Serial.println(tolerasDegeri);
// sonVeriOkunmaZamani = zaman();
// }

void resetButton()
{
// check for button press
if (digitalRead(TRIGGER_PIN) == LOW)
{
// poor mans debounce/press-hold, code not ideal for production
delay(50);
if (digitalRead(TRIGGER_PIN) == LOW)
{
Serial.println("Button Pressed");
// still holding button for 3000 ms, reset settings, code not ideaa for production
delay(3000); // reset delay hold
if (digitalRead(TRIGGER_PIN) == LOW)
{
Serial.println("Button Held");
Serial.println("Erasing Config, restarting");
// ESP.eraseConfig();
delay(500);
ESP.restart();
}
}
}
}

bool veriGuncelmi()
{
if ((sonVeriOkunmaZamani + verininGecerlilikSuresi) < zaman())
{
return false;
}
return true;
}

void wifiReconnect()
{
Serial.println("Connecting to WiFi...");

// WiFi bağlantısını başlat
WiFi.begin();

int attempts = 0;
while (WiFi.status() != WL_CONNECTED && attempts < 60)
{
wifiLedUpdate();
delay(500);
Serial.print(".");
attempts++;
}
if (attempts > 60)
{
Serial.println("\nESP Reseting...");
ESP.reset();
}

if (WiFi.status() == WL_CONNECTED)
{
Serial.println("\nConnected to WiFi");
wifiLedUpdate();
}
else
{
Serial.println("\nFailed to connect to WiFi. Please check your credentials.");
}
}

```

### Debug Messages

```

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

wdt reset
load 0x4010f000, len 3424, room 16
tail 0
chksum 0x2e
load 0x3fff20b8, len 40, room 8
tail 0
chksum 0x2b
csum 0x2b
v000717e0
~ld

Hardware WDT reset

>>>stack>>>

ctx: sys
sp: 3fffeb30 end: 3ffffd30 offset: 0000
3fffeb30: 3ffede50 3fffebe0 3ffee4e0 00000016
3fffeb40: 40238a00 3fffebe0 3ffee388 3ffedd8c
3fffeb50: 40238a61 3fffebe0 3fffebe0 40100caa
3fffeb60: 6f7a656d 61746f70 0061796d 40100caa
3fffeb70: 00002200 3ffe862c 3ffefbe8 40100caa
3fffeb80: 40234d59 3ffe862c 0000001c 40100f04
[...(stripped)]
<<

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.