Bir stüdyo masasının üstünde küçücük bir ekran hayal edin. Şarkı adı akıyor, kapak görseli değişiyor, bazen tek satırlık bir “şu an çalıyor” notu beliriyor. Kulağa basit geliyor, değil mi? Ama işin aslı şu: bu tip projelerde asıl mesele ekranın kendisi değil, arka tarafta kurduğunuz düzen. Ben de ilk bakışta “ESP32’ye Spotify API bağlar, geçeriz” diye düşünmüştüm. Sonra pratik geldi, tokadı attı — hem sert hem de öğretici bir şekilde.
Bir şey dikkatimi çekti: Geçen yıl Kadıköy’de küçük bir atölye toplantısında buna benzer bir kurgu konuşmuştuk; herkes cihaz tarafına odaklanıyordu, güvenlik ve bakım kısmı ise sanki havada kalıyordu, kimse üstüne almak istemiyordu bir türlü. İşte tam bu noktada Cloudflare Workers devreye giriyor ve olayı bayağı toparlıyor. Tek bir kenar işlevi hem OAuth işini hallediyor, hem token yeniliyor, hem veri biçimini dönüştürüyor, hem de web sitesindeki widget ile fiziksel ekranı aynı kaynaktan besliyor. İki ayrı entegrasyon yerine tek merkez. Kulağa sade geliyor ama sahada tam tersine ciddi fark yaratıyor.
Bir dakika — bununla bitmedi.
En temiz mimari çoğu zaman en süslü olan değil; en az kopya üreten, en az sır saklayan ve en kolay bakım yapılan mimaridir.
Neden Cihaz Doğrudan Spotify’a Gitmiyor?
Bakın şimdi, kağıt üstünde ESP32’nin doğrudan Spotify API’sine gitmesi fena fikir gibi görünmeyebilir. Hatta küçük projelerde insanın içinden “olur ya” dedirtiyor. Ama sonra token süresi çıkıyor karşınıza. TLS sertifikaları çıkıyor. Rate limit çıkıyor. Bir de firmware içine gömülmüş gizli anahtar meselesi var — orada film kopuyor, gerçekten.
Şunu fark ettim: Benim 2023 sonbaharında İzmir’de yaptığım ufak IoT denemesinde benzer sıkıntıyı bizzat yaşamıştım; cihaz çalışıyordu, üç gün sonra token ölüyordu, kullanıcıya açıklaması güç bir hata fırlıyordu ortaya. Sonunda şunu fark ettim: mikrodenetleyici her işi yapmaya çalışınca nazlanıyor. Biraz haklı da, hani. Hafıza sınırlı, hata ayıklama dertli, güvenlik ise daha baştan yara alabiliyor.
Kısa bir not düşeyim buraya.
Spotify tarafında özellikle OAuth akışı önemli. Secret’ı firmware’e koyarsanız geçmiş olsun — biri flash belleği okursa oyun biter. Üstelik aynı veriyi web sitesi için de istiyorsanız, iki ayrı istemci yazmak yerine merkezi bir katman kurmak çok daha mantıklı oluyor. Hem tekrar eden istekler azalıyor, hem log takibi kolaylaşıyor. Basit mantık, ama uygulamak disiplin istiyor.
Mimariyi Temiz Tutan Katman
Bak şimdi, Sistemin omurgasında tek bir Cloudflare Worker var diyebiliriz. Bu Worker Spotify’dan veriyi çekiyor, gerekirse token’ı yeniliyor ve isteğin geldiği yere göre farklı cevaplar dönüyor. Web tarayıcısı başka şey bekliyor, ESP32 başka şey bekliyor — yanıt biçimi de doğal olarak ayrışıyor. Burası mantıklı. Daha fazla bilgi için Kod Yazmaktan Kaçınırken: Yapay Zekâ Çağında Mühendislik yazımıza bakabilirsiniz.
Ha, bu arada işin güzel yani şu: Worker sadece veri aktarmıyor, aynı zamanda dönüştürücü gibi davranıyor. Kapak görselini PNG’den RGB565’e çevirmek kulağa minik bir ayrıntı gibi gelebilir —. Düşük bellekli cihazda bunun değeri büyük, inanın. Ekran tarafında ham görsel taşımak yerine tam ihtiyaca uygun veri yolluyorsunuz, bu fark gecede birikerek ortaya çıkıyor.
Ne yalan söyleyeyim, Küçük startup senaryosunda bu yaklaşım hayat kurtarıyor; tek kişiyle bile yönetilebilir hale geliyor sistem. Kurumsal tarafta ise fayda biraz başka yerde ortaya çıkıyor: erişim kontrolü merkezi oluyor, denetim izi oluşuyor, yeni istemci eklemek çocuk oyuncağına yakın hale geliyor — tabii “çocuk oyuncağı” derken yine altyapı disiplini lazım, onu da atlamamak gerek. Daha fazla bilgi için Fransa Windows’tan Uzaklaşıyor: Linux Hamlesi Ne Anlatıyor? yazımıza bakabilirsiniz. Bu konuyla ilgili MCP’nin Kör Noktası: 10 API, 300 Tehlikeli Tuş yazımıza da göz atmanızı tavsiye ederim.
| Bileşen | Görev | Neden Önemli? |
|---|---|---|
| Cloudflare Worker | OAuth, token yenileme, API çağrısı | Sırları cihazdan uzak tutuyor |
| KV önbellek | Kapak görselini saklama | Aynı dosyayı tekrar tekrar indirmeyi önlüyor |
| ESP32 + ST7789 ekran | Sade görselleştirme | Düşük güçte hızlı sonuç veriyor |
| Web widget’ı | Anlık durum gösterimi | Aynı kaynaktan beslenerek tutarlılık sağlıyor |
Aynı Veriden İki Farklı Deneyim Çıkarmak
Tuhaf ama, Bence olayın parladığı nokta tam da burası. Aynı API çağrısı hem fiziksel ekrana gidiyor hem web widget’ına güç veriyor. Yani müzik çalan parça bilgisi tek yerden doğuyor ama iki ayrı dünyaya uyarlanıyor — biri masadaki LCD’ye daha minimal düşüyor, diğeri tarayıcıda biraz daha estetik sunuluyor (şaşırtıcı ama gerçek). Güzel kurgu, hani.
Bak şimdi, Editör masasında bunu görünce merak edip kısa bir test yaptım — geçen martta Beşiktaş’taki ofiste elime geçen benzer kitlerle uğraşırken fark ettim ki ortak kaynak kullanımı debug süresini ciddi azaltıyor. Bir sorun olduğunda iki entegrasyonu ayrı ayrı didiklemiyorsunuz; nerede kırıldığını çok daha net görüyorsunuz. Bu küçük ama gerçekten değerli bir şey.
Cihaz Tarafında İncelikler Var mı? Var Tabii.
Ekran kısmını anlatırken sanki mesele sadece birkaç piksel çizmekmiş gibi davranmak doğru olmaz. ESP32 güçlü sayılır, ama sonsuz değil. Hele üzerine Wi-Fi bağlantısı da bindiyse işler hemen ağırlaşabiliyor — çok dramatik değil, ama hissedilir.
Bu yüzden JSON ayrıştırma tarafında hafif davranmak gerekiyor. Bellekte gereksiz kopya üretmemek önemli çünkü mikrodenetleyicide her bayt kıymetli… gerçekten kıymetli, yani abartmıyorum. Zero-heap-allocation yaklaşımı bu noktada anlam kazanıyor; sistemin nefes almasını sağlıyor, stabil tutmaya yardımcı oluyor.
// Mantık özeti
istek = "currently-playing"
yanit = worker.fetch(istek)
eger yanit.veri_varsa:
ekran.gorsel_ciz(yanit.kapak)
ekran.metin_yaz(yanit.sarki_adı)
degilse:
ekran.bos_durum_goster()
Kod bloğu basitleştirilmiş, evet. Ama mesaj net: cihaz ne kadar az sorumluluk alırsa o kadar stabil çalışıyor. Doğru ifade bu değil mi? Her şeyi mikrodalgaya koyup kek pişirmeye çalışmazsınız ya — burada da benzer mantık geçerli.
Peki Eksileri Yok mu?
Var elbette. En büyük handikaplardan biri bağımlılığın edge katmana kaymasıdır. Cloudflare servisinde problem olursa tüm zincir etkilenir. Siz cihazın üzerinde suçlu aramaya başlarsınız — ama suçlu çoğu zaman orada değildir. Boşa zaman harcarsınız, sinirlenirsiniz.
Bir de geliştirme sırasında dönüşüm katmanı büyüdükçe kodun dağılıp dallanma riski artar; düzgün test yazmazsanız “küçük yardımcı fonksiyonlar mezarlığı”na dönersiniz, inanın bunu çok gördüm. Açık konuşayım: bu tarz projelerde bazen hayal kırıklığı yaşatan kısım donanım değil, backend olur. Çünkü donanım size ne olduğunu sessizce söylerken backend bazen hiç konuşmaz. Bunu öğrenmek biraz acı verir.
Neden Bu Tasarım Bence Akıllıca?
Lafı gevelemeden söyleyeyim: bu çözümün gücü teknik gösterişten gelmiyor. Asıl olay fazlalıkları kesmesinde yatıyor — kredi kartını evde bırakıp markete çıkmak gibi düşünün, risk azalır, kafa rahatlar. Spotify kimliği firmware’in içinde yoksa içiniz biraz daha rahat ediyor. Gerçekten oluyor bu.
Şunu söyleyeyim, Aynı zamanda rate-limit konusu da ciddiye alınmış oluyor,. Iki istemci ayrı ayrı yük bindirmek yerine ortak kaynaktan besleniyor. İtiraf edeyim:
- Küçük ekiplerde operasyon yükünü azaltır.
- Kurumsalda güvenlik sınırlarını netleştirir.
- Tek ürün yerine platform mantığı kurdurur.
Bütün bunların yanında kusursuz mu? Değil tabii ki. Önbellekleme stratejisini yanlış kurarsanız eski kapak resmi gösterebilir veya gecikmeli veri döndürebilirsiniz. Yani kağıt üstünde süper görünen yapı, pratikte iyi ayarlanmış cache politikası istiyor. Biraz da sabır. Biraz da tecrübe. SSL Sertifikalarında 2026 Şoku: Süreler Kısalıyor yazımızda da bu konuya değinmiştik.
Kimin İçin Uygun?
Küçük ekipler ve stüdyo projeleri
Eğer amaç stüdyo masasını canlı tutmaksa bu model tam oturuyor. Tek geliştiriciyseniz ya da üç kişilik minik ekipseniz, merkezi Worker yaklaşımı sizi saç baş yoldurmadan götürür. Bir arkadaşım Ankara’da kendi ajansında buna benzeyen sistemi kullandı; üç ay sonra bana “bak maintenance yarıya indi” dediğinde pek şaşırmadım doğrusu. İyi tasarım bazen gözle görülmez — hissedilir sadece.
Büyüyen ürünler ve enterprise ortamları
Daha büyük organizasyonlarda ise hikaye biraz farklı ilerler. Burada konu yalnızca çalan şarkıyı göstermek değil — kim erişti, hangi sırla erişti, ne zaman yeniledi, hepsinin izini tutmak istiyorsunuz. Merkezi mimari sayesinde bunların hepsi makul hale geliyor. Ama. Takım disiplininiz zayıfsa bu kez edge katmanınız çöplüğe döner. Bunu da dürüstçe söylemek lazım.
Sıkça Sorulan Sorular
Evet bağlanabilir ama önerilmez.
OAuth secret bilgisini firmware içine gömmek güvenlik riski yaratır ve token yenileme işleri mikrodenetleyicide gereksiz yük oluşturur.
Merkezi backend kullanmak çok daha temizdir.
Düşük gecikme vermesi
,
edge’de çalışması
ve sırrları uç noktadan uzak tutması yüzünden tercih edilir.
Ayrıca tek kod tabanıyla hem web uygulamasına hem cihaza hizmet verebilirsiniz.
RGB565,
görüntüleri düşük bellek kullanan ekranlara uygun hale getirdiği için seçilir.
Ham PNG göndermek yerine dönüştürülmüş veri taşımak ESP32 tarafında performansı belirgin şekilde iyileştirir.
Kaynaklar ve İleri Okuma
Spotify Web API Dokümantasyonu
Cloudflare Workers Resmi Dokümantasyonu
Atelje Vagabond GitHub Sayfası
Base64,’ URL ve HTML’ Üçü de Aynī Şey Değil
“
Bu içerik işinize yaradı mı?
Benzer içerikleri kaçırmamak için beni sosyal medyada takip edin.



