ESP32 - Firebase RTDB Bağlantısı Bir Süre Sonra Kopuyor
-
Selamlar herkese.
ESP32 kullandığım ve şerit led yönettiğim bir projem var, Firebase RTDB'den bir alanı okuyorum ve o değere göre ledleri yakıp söndürüyorum. En özet hali bu, iç işler çok daha karmaşık, efektler hesaplamalar loglamalar cartlar curtlar falan var.
Ne yazıkki manuel polling yapamıyorum, her 10 saniyede bir git Firebase'e şu veriyi çek bu veriyi yükle diyemiyorum çünkü LOOP içerisindeki bazı sayaç işlemlerine göre Led'deki efekler hazırlanıyor, her 10 saniyede git dediğimde efekler akıcılığını tamamen kaybediyor.
Bu yüzden Stream özelliğini kullanıyorum, başlarda çok güzel çalışıyor, Firebase'de bir değer değiştiğinde ESP32 tarafında bu yakalanıyor, gelen komuta göre işlem yaptırıyorum ancak bir süre sonra firebase'de bir şeyi değiştirsem bile ledlerim etkilenmiyor, Serial.println ile log yazdırıyorum ama hiç o methodlara düşmüyor bile.
DeepSeek ve ChatGPT ile 20 gündür akşamlar bir iki saaat bakıp tonlarca kod denedim ama bir türlü şu bağlantı sorununu çözemedim. Wifi bağlantısında da sorun yok gibi duruyor, orada da loglarım var ve bağlantı kopsa falan bir mesaj görmem lazım ama görmüyorum, bağlantım var gibi duruyor.
Kullanıcı bu ledleri fişe takacak, 6 ay sonra aklına gelecek, diycek ki gideyim de ledlerin rengini değiştireyim. Firebase'den değeri değiştirecek ve ESP32'nin halen Firebase'i dinliyor olması lazım, dinleyip değişime göre ledlerin rengini değiştirmeli.
Çok karmaşık anlattım özür dilerim ama artık canım sıkılmaya başladı, son çare buraya yazayım dedim.
Destek için teşekkürler (:
-
826x serisi kullansaydın daha problemliydi ama esp32 de böyle şeyler yaşamaman lazım hocam.
ev lokalimde esp'ler ile 5dk veri okuyup yine lokal influxdb ye yazıp grafana ile izliyorum. bu sürede pil için deepsleep ve rtc kullanıyorum. core0 sürekli zaman check ederken core1 data yığını oluşturup db'ye atıyor.
https://randomnerdtutorials.com/esp32-dual-core-arduino-ide/
şu örnekleri incelemende fayda var. anlattığın zor şeyler değil gibi çünkü :D fastled filan kullanıyorsan güzel proje olur. ara ara heap kontrolü yapmanda fayda var watchdog girmeden.
edit:imla
baristbt tarafından 07/Eyl/25 23:57 tarihinde düzenlenmiştir -
hocam her işlemden önce cihazı yeniden başlatma komutu versen belki hafızası yetmiyor yada saçmalıyor , şimdi bide nodemcu başka esp 32 s2 başka hafıza mevzusu var bildigim kadarıyla onada bakmak lazım @baristbt daha bilgili bu konuda
not : ben yazana kadar adam bende önce yazmış :D
KaptaN tarafından 08/Eyl/25 00:15 tarihinde düzenlenmiştir -
baristbt bunu yazdı
826x serisi kullansaydın daha problemliydi ama esp32 de böyle şeyler yaşamaman lazım hocam.
ev lokalimde esp'ler ile 5dk veri okuyup yine lokal influxdb ye yazıp grafana ile izliyorum. bu sürede pil için deepsleep ve rtc kullanıyorum. core0 sürekli zaman check ederken core1 data yığını oluşturup db'ye atıyor.
https://randomnerdtutorials.com/esp32-dual-core-arduino-ide/
şu örnekleri incelemende fayda var. anlattığın zor şeyler değil gibi çünkü :D fastled filan kullanıyorsan güzel proje olur. ara ara heap kontrolü yapmanda fayda var watchdog girmeden.
edit:imla
Evet, FastLED kullanıyorum, Firebase tarafında bir ayar var mı yapmam gereken ? mail ve password ile token alıp veri okuyorum sadece ama işte bir şekilde bağlantım kopuyor haberim olmadan...
Eğer senin için iş çıkartmayacaksa basit bir firebase'e bağlanıp Stream ile veri okuyan bir kodu paylaşman mümkün mü ? Sadece Firebase'e basitçe bağlansın ve eğer bağlantı falan koparsa otomatik yeniden bağlansın. Benim kodda bir sorun var galiba...
Çok teşekkürler cevabın için, heap ve watchdog olaylarına bakıcam yarın, hiç bilmiyorum bunları ben -
GodKlaus bunu yazdıbaristbt bunu yazdı
826x serisi kullansaydın daha problemliydi ama esp32 de böyle şeyler yaşamaman lazım hocam.
ev lokalimde esp'ler ile 5dk veri okuyup yine lokal influxdb ye yazıp grafana ile izliyorum. bu sürede pil için deepsleep ve rtc kullanıyorum. core0 sürekli zaman check ederken core1 data yığını oluşturup db'ye atıyor.
https://randomnerdtutorials.com/esp32-dual-core-arduino-ide/
şu örnekleri incelemende fayda var. anlattığın zor şeyler değil gibi çünkü :D fastled filan kullanıyorsan güzel proje olur. ara ara heap kontrolü yapmanda fayda var watchdog girmeden.
edit:imla
Evet, FastLED kullanıyorum, Firebase tarafında bir ayar var mı yapmam gereken ? mail ve password ile token alıp veri okuyorum sadece ama işte bir şekilde bağlantım kopuyor haberim olmadan...
Eğer senin için iş çıkartmayacaksa basit bir firebase'e bağlanıp Stream ile veri okuyan bir kodu paylaşman mümkün mü ? Sadece Firebase'e basitçe bağlansın ve eğer bağlantı falan koparsa otomatik yeniden bağlansın. Benim kodda bir sorun var galiba...
Çok teşekkürler cevabın için, heap ve watchdog olaylarına bakıcam yarın, hiç bilmiyorum bunları ben%90 cihaz şişiyor , birde zaman kavramını eğer manuel milis ile filan yapıyorsan bir süre sonra delay filan gördümü kodun şirezesi kayıyor :D 10 saniye yerine bir süre sonra 11 oluyor , her işlem süresinde +hesap süresi ekleniyor vs.vs.
yarın gün içinde dm'leşelim firebase yok ama normal bir thingspeak veya herhangi bir uzak adresten dosya/veri okuyup işleyecek şekilde hallederiz.
-
Hocam arkadaşında dediği gibi büyük ihtimalle buffer in doluyor ve bir süre sonra esp32 cevap veremeyecek duruma geliyor. 10sn de bir gidip alan değiştimi diye kontrol etmek yerine mqtt broker ve firebase cloud functions kullanarak değişiklikleri firebase tarafında kontrol edip eğer değişiklik olduysa mqtt ile cloud functions kullanarak esp32 ye göndermek daha sağlıklı olacaktır. Bu sayede esp32 yi 10sn de bir alan değiştimi diye kontrol ettirmek zorunda kalmazsın.
-
Evet, muhtemelen cihaz brick oluyor bir noktada :)
Hesaplamaları vs serverda yaptırıp son değerleri verebiliyor musun acaba?
Ya da, ESP ile ekrana yazıyı verecek olan arkadaşı update edip, ara ara espyi restartlayabilirsin?
-
Anladığım kadarıyla mobil uygulama veya web arayüz üzerinden firebase veritabanına bir şeyler yazdırıp bunun anında yansımasını istiyorsun. Firebase yerine https://supabase.com/docs/guides/realtime kullanabilirsin, MQTT ile halledebilisin veya websocket için sunucuya node-red kurup kullanabilirsin.
Supabase avantajı hem ücretsiz versiyonu var hem de websocket ile bağlanabiliyorsun. Veriyi istediğin yerden alıp EEPROM kaydettikten sonra kullanıcı cihazı kapatıp açsa da internete bağlanmaya gerek kalmadan son veriyle LED yanmaya devam eder. İnternete bağlanınca da değişiklik varsa onu yansıtırsın
-
baristbt bunu yazdıGodKlaus bunu yazdıbaristbt bunu yazdı
826x serisi kullansaydın daha problemliydi ama esp32 de böyle şeyler yaşamaman lazım hocam.
ev lokalimde esp'ler ile 5dk veri okuyup yine lokal influxdb ye yazıp grafana ile izliyorum. bu sürede pil için deepsleep ve rtc kullanıyorum. core0 sürekli zaman check ederken core1 data yığını oluşturup db'ye atıyor.
https://randomnerdtutorials.com/esp32-dual-core-arduino-ide/
şu örnekleri incelemende fayda var. anlattığın zor şeyler değil gibi çünkü :D fastled filan kullanıyorsan güzel proje olur. ara ara heap kontrolü yapmanda fayda var watchdog girmeden.
edit:imla
Evet, FastLED kullanıyorum, Firebase tarafında bir ayar var mı yapmam gereken ? mail ve password ile token alıp veri okuyorum sadece ama işte bir şekilde bağlantım kopuyor haberim olmadan...
Eğer senin için iş çıkartmayacaksa basit bir firebase'e bağlanıp Stream ile veri okuyan bir kodu paylaşman mümkün mü ? Sadece Firebase'e basitçe bağlansın ve eğer bağlantı falan koparsa otomatik yeniden bağlansın. Benim kodda bir sorun var galiba...
Çok teşekkürler cevabın için, heap ve watchdog olaylarına bakıcam yarın, hiç bilmiyorum bunları ben%90 cihaz şişiyor , birde zaman kavramını eğer manuel milis ile filan yapıyorsan bir süre sonra delay filan gördümü kodun şirezesi kayıyor :D 10 saniye yerine bir süre sonra 11 oluyor , her işlem süresinde +hesap süresi ekleniyor vs.vs.
yarın gün içinde dm'leşelim firebase yok ama normal bir thingspeak veya herhangi bir uzak adresten dosya/veri okuyup işleyecek şekilde hallederiz.
Evet, milis kodları var içeride, delay'da var içeride :D Dün müsait olamadım, bugün de evde değilim ama dediğim gibi basit bir github reposu falan varsa ilk başta ben kendi hatamı bulmayı deneyeyim, sonrasında çözemezsem zamanını ayırmanı isteyebilirim :>
@JpnTr hocamın dediği gibi bir arayüzden Firebase'e veri yazıyorum ve ESP32'nin sürekli olarak dinlemesini sağlamak istiyorum. N anında firebase'de bir veri değişirse, FastLed ledlerim ona göre tepki versin istiyorum.@majestiquo hocam senin dediğin gibi her 10 saniyede bir gidip güncel veriyi okumuyorum ama Buffer falan hakkında bilgim yoktu, C#'taki gibi GarbageCollector yok mu burada yaw :D
-
end bunu yazdı
Evet, muhtemelen cihaz brick oluyor bir noktada :)
Hesaplamaları vs serverda yaptırıp son değerleri verebiliyor musun acaba?
Ya da, ESP ile ekrana yazıyı verecek olan arkadaşı update edip, ara ara espyi restartlayabilirsin?
maalesef, hesaplamaları mecbur cihazda yapmam lazım. Bir server'ım yok bu arada, sadece 1 web sitem, 1 firebase rtdb, 1 tane esp32 cihazım var.
-
cihaz asırı ısınıp kapanıyor olabılır mı ? ya da guc kaynagı yetersız gelıyor olabılır kablloyu kontrol et yoksa yapmaz hayvan gıbı ıslem yaptırtıyoruz sorun olmuyor esp32 de
