Gateway Sorunları
ESP32 tabanli gateway cihazlarinda karsilasilan baglanti, iletisim ve stabilite sorunlarinin teshis ve cozum rehberi.
Sorun Tablosu
| Semptom | Olasi Sebep | Kontrol | Cozum |
|---|---|---|---|
| WiFi'ye baglanamıyor | SSID/sifre yanlis, sinyal zayif | Seri port loglari, WiFi.RSSI() degeri | Credential guncelle, AP yaklastir |
| MQTT'ye baglanamıyor | TLS sertifika hatasi, broker down | openssl s_client testi, EMQX loglari | Sertifika yenile, EMQX restart |
| Surekli reboot | Watchdog timeout, bellek tasmasi | Crash dump, heap kullanimi | Firmware guncelle, task stack artir |
| Modbus okuyamiyor | RS485 kablo, baud rate uyumsuz, slave ID yanlis | Seri monitor, osiloskop | Kablo kontrol, baud rate ayarla |
| Config degisikligi uygulanmiyor | MQTT desired topic retain degil, gateway offline | Broker retained msg kontrol | Retain flag ekle, gateway restart |
Detayli Teshis ve Cozumler
1. Gateway WiFi'ye Baglanamıyor
Semptom: Gateway LED'i surekli yanip sonuyor, MQTT baglantisi kurulmuyor, seri port loglarinda WiFi: DISCONNECTED mesaji tekrarliyor.
Olasi Sebepler:
- SSID veya sifre yanlis/degismis
- WiFi sinyal gucu yetersiz (RSSI < -80 dBm)
- AP kanal kalabaligi veya 5GHz-only agi
- DHCP sunucusu IP veremiyor
Kontrol Adimlari:
# Seri port uzerinden loglari oku (115200 baud)
screen /dev/ttyUSB0 115200
# Alternatif: minicom ile izle
minicom -D /dev/ttyUSB0 -b 115200
Seri port ciktisinda su degerler kontrol edilmeli:
WiFi RSSI: -65 dBm ← -70'den kucukse (daha negatif) sorunlu
WiFi Status: CONNECTED / DISCONNECTED
IP Address: 192.168.x.x / 0.0.0.0
Cozum:
- Credential guncelleme: OTA veya seri port uzerinden yeni SSID/sifre gonderin
- Sinyal iyilestirme: AP'yi gateway'e yaklastirin veya WiFi repeater ekleyin
- Kanal ayari: Router'da kanal otomatik yerine sabit kanal (1, 6 veya 11) secin
- 2.4GHz kontrolu: ESP32 sadece 2.4GHz destekler — router'da 2.4GHz bandinin aktif oldugundan emin olun
2. Gateway MQTT'ye Baglanamıyor
Semptom: WiFi baglantisi basarili ama MQTT broker'a baglanti kurulamiyor. Dashboard'da cihaz "cevrimdisi" gorunuyor.
Olasi Sebepler:
- TLS sertifikasi suresi dolmus veya uyumsuz
- EMQX broker servisi durmus
- Firewall 8883 (MQTTS) portunu engelliyor
- Client ID cakismasi (ayni ID ile birden fazla baglanti)
Kontrol Adimlari:
# TLS sertifika kontrolu
openssl s_client -connect mqtt.example.com:8883 -showcerts
# EMQX container durumu
docker compose ps emqx
docker compose logs emqx --tail=50
# EMQX aktif baglantilari kontrol et
docker compose exec emqx emqx_ctl clients list
# Firewall port kontrolu
telnet mqtt.example.com 8883
Cozum:
- Sertifika yenileme: Suresi dolan sertifikalari yenileyin ve EMQX'i yeniden baslatin
- EMQX restart:
docker compose restart emqx - Port acma: Firewall'da 8883 (MQTTS) ve 8084 (WSS) portlarini acin
- Client ID duzeltme: Her gateway icin benzersiz client ID kullanildigindan emin olun
3. Gateway Surekli Reboot Ediyor
Semptom: Gateway her 5-30 saniyede bir yeniden basliyor, seri port loglarinda rst: veya Guru Meditation Error gorunuyor.
Olasi Sebepler:
- Watchdog timer (WDT) timeout — bir task cok uzun suruyor
- Stack overflow — task icin ayrilan stack yetersiz
- Heap tasmasi — dinamik bellek tukenmiş
- Guc kaynagi yetersiz veya dengesiz
Kontrol Adimlari:
# Seri port uzerinden crash dump'i yakala
# ESP32 yeniden basladiginda su satiri ara:
# Guru Meditation Error: Core X panic'ed (...)
# Backtrace: 0x400xxxxx:0x3ffxxxxx ...
# Heap durumu kontrolu (firmware loglarinda)
# Free heap: 45000 bytes ← 20000'den azsa kritik
# Min free heap: 12000 bytes ← 10000'den azsa tasmaya yakin
Cozum:
- Firmware guncelleme: En son stabil firmware surumune OTA ile guncelleyin
- Stack artirma:
xTaskCreate()cagirisinda stack boyutunu artirin (ornegin 4096 → 8192) - Bellek optimizasyonu: Gereksiz buffer'lari kucultuun, statik allocation tercih edin
- Guc kaynagi: 5V 2A adaptor kullanin, USB hub uzerinden beslemekten kacinin
4. Gateway Modbus Okuyamıyor
Semptom: Gateway MQTT'ye veri gonderiyor ancak Modbus cihazlarindan okunan degerler sifir veya hata mesaji donuyor.
Olasi Sebepler:
- RS485 kablo baglantisi (A/B ters, kopuk)
- Baud rate, parity veya stop bit uyumsuzlugu
- Yanlis slave ID kullanilmasi
- RS485 hat sonlandirmasi (termination) eksik
Kontrol Adimlari:
# Seri monitor uzerinden Modbus hata loglarini izle
# Beklenen log formati:
# Modbus TX: [01 03 00 00 00 02 C4 0B] ← istek
# Modbus RX: [01 03 04 xx xx xx xx CRC] ← yanit
# Modbus Error: Timeout / CRC Error ← hata
# Osiloskop ile RS485 hattini kontrol et:
# - A (D+) ve B (D-) arasinda fark sinyali olmali
# - Idle durumda A > B (pozitif fark)
Cozum:
- Kablo kontrolu: A-A, B-B baglantilarini dogrulayin. Bazı cihazlarda A/B ters etiketlenmis olabilir — ters baglanti deneyin
- Baud rate ayari: Cihaz dokumantasyonundan dogru baud rate (9600, 19200, 38400, 115200) ogrenerek template'de guncelleyin
- Slave ID dogrulama: Cihazin fiziksel ayarlarindan (DIP switch veya ekran) slave ID'yi dogrulayin
- Termination: RS485 hattinin her iki ucuna 120Ω direnc ekleyin
5. Config Degisikligi Uygulanmiyor
Semptom: Backend veya MQTT uzerinden gonderilen konfigrasyon degisiklikleri gateway'de etkili olmuyor. Eski ayarlarla calismaya devam ediyor.
Olasi Sebepler:
- MQTT
desiredtopic'ine retain flag ile yayinlanmamis - Gateway o sirada cevrimdisi ve mesaji kacirmis
- Config parser'da hata — format degismis
- NVS (Non-Volatile Storage) yazma hatasi
Kontrol Adimlari:
# MQTT broker'da retained mesaj kontrolu
docker compose exec emqx emqx_ctl topics list | grep desired
# Belirli bir topic'teki retained mesaji oku
mosquitto_sub -h localhost -p 1883 \
-t "zeus/+/+/desired/config" \
--retained-only -C 1
# Gateway seri loglarinda config parse hatasi ara
# Config received: {...}
# Config applied: OK / PARSE_ERROR
Cozum:
- Retain flag: Config mesajlarini mutlaka
retain=trueile yayin layin - Gateway restart: Config uygulanmadiysa gateway'i fiziksel olarak yeniden baslatin
- Config format: JSON formatinin firmware'in bekledigii sema ile uyumlu oldugundan emin olun
- NVS temizleme: Kalici sorunlarda NVS partition'i sifirlayin (fabrika ayarlarina donus)
Genel Ipuclari
- Gateway loglarini her zaman seri port uzerinden takip edin — en guvenilir teshis yontemidir
- Firmware surumunu
GET /api/v1/gateways/{id}endpoint'inden dogrulayin - Toplu gateway sorunlarinda once EMQX broker ve ag altyapisi kontrol edin
- Tek bir gateway'de sorun varsa once fiziksel baglantilari (guc, RS485, anten) kontrol edin