Projemizde kullanmak için veritabanı olarak Google ın Firebase Realtime Database ini seçtik. Yapmak istediğimiz ESP8266 dan Firebase e gönderilen verileri C# ile almak.


    Yapacağımız C# Firebase Realtime Database Veri Çekme uygulamasını gerçekleştirme adımlarını adım adım açıklamaya çalışacağız.


  1. https://console.firebase.google.com/ adresinden gmail hesabımız ile oturum açıyoruz.
  2. Firebase paneline girdikten sonra Add Project butonuna tıklıyoruz. 



  3. Proje ismi olarak CSharp Firebase Realtime DB ismini verdik ve Continue butonuna bastık. 





  4. Biz Firebase Realtime Database kullanacağımız için Analytics özelliğini kapattık ve Create Project butonuna bastık. 



  5. Projemiz oluşturulur iken bekliyoruz.  



  6. Projemiz oluşturuldu. Continue butonu ile devam ediyoruz.

  7. Sol tarafta bulunan Realtime Database sekmesine geçiyoruz ve Create Database butonuna tıklıyoruz.  

  8. Set up database ekranından bize en yakın avrupa lokasyonunu seçiyoruz ve Next butonuna basıyoruz. 

  9. Security rules ekranından Start in locked mode seçili halde iken Enable butonuna basıyoruz. 

  10. Realtime Database ekranından '+' add chield butonuna basıyoruz ve Name, Value değerlerini giriyoruz. Projemizde 2 adet alan kullanacağız. Alan isimlerini Data_1 ve Data_2 olarak isimlendiriyoruz. Değer ataması olarak 0 verdik.  


  11. Şimdide gerekli olan Database secret i kopyalamak için Proje ayarlarına giriyoruz ve Service account menüsüne giriyoruz. Database secret menüsünden  Show butonuna basarak gizli kodu kopyalıyoruz.


  12. Realtime Database ekranına geçerek projemizin URL adresini kopyalıyoruz. 

Firebase ekranında yapmamız gerekenler tamamlandı. Şimdi sıra C# tarafında. Visual Studio yu açıyoruz ve Windows Form App (.NET Framework) projesi oluşturuyoruz. Projemizin ismine "CSharp Firebase Realtime Database Veri Cekme" ismini verdik.

Projemizin ismi Visual Studio 2019 a uzun geldiği için "CSharp Firebase Realtime Veri Cekme" olarak kısalttık. :(

Formumuzun üzerine 2 adet label ve 2 adet textBox ve 1 adet buton yerleştirdik ve aşağıdaki formu oluşturduk. 


buton1 e çift tıklayarak kodlama alanımıza geçtik. 




Şimdi projemize FireSharp paketini yükliyeceğiz. Bunun için Manage NuGet Packages menüsüne giriyoruz. 


 
Browse menüsünden FireSharp ı bulup Install butonuna basıyoruz.



Package Manager Format ekranında OK a tıklayarak devam ediyoruz.




Lisans Acceptance ekranından I Accept diyerek lisans şartlarını kabul ediyoruz.




C# Projemize Data.cs isminde bir sınıf ekliyoruz ve Firebase de tanımladığımız Name alanlarını buraya da tanımlıyoruz.


Proje tamamlandığında Form.cs dosyamız şu şekilde olacaktır.





Projemiz tamamlanmıştır. Kodlarımızı çalıştırdığımızda ekranımızda Data 1 ve Data 2 alanları Firebase Realtime Database üzerinden çekilerek Form üzerinde gösterilmiştir.


Bu proje ile kazanımlarımız şu şekilde sıralanabilir.
  • Firebase Google ın aylık 10GB a kadar ücretsiz kullanılan bir servisidir. MQTT uygulamaları kadar hızlı olmasada bizim yaptığımız 100ms testlerinde başarılı olmuştur. Firebase sunucusuna gönderilen her bir bayt ve çekilen her bir byte için 10GB sınırı aşılmadığı sürece ücretsizdir. Bu limit basit uygulamalar için yetrli ama kompleks uygulamalar için yetersizdir. Büyük veri iletimlerine ihtiyaç duyduğunuzda kendi sunucunuzu kullanmak ve daha uygun planlı servisler bulmak gerekebilir.
  • Fabrika içerisindeki bir cihazdan  sıcaklık verisini bu projede anlatılan yöntem ile kolaylıkla görebilirsiniz. Firebase in Google Android Play marketinde resmi bir uygulaması şu an için yok ama chrome tarayıcı ile kullanımı gayet rahat. 

  • Bu projemiz C# Firebase örneğimiz idi bunu Android (Java, Kotlin), iOS, Python, Go, NodeJS ve  Web projeleri için de yapmak mümkündür. Firebase bütün bu diller için Firebase Admin SDK sını geliştirmiştir. Dolayısıyla Firebase kullanmak projelerinizi geliştirirken size hız katar. Sonra projenin büyüdüğü ve yetmediği durumlarda kendi sunucunuza geçebilirsiniz.
  • Firebase hususunda dökümantasyon oldukça fazladır. https://firebase.google.com/docs adresinden aradığınız sorulara yanıt bulmak kolaydır. 
  • C# projesi ile uzaktaki bir cihaza ait veriler sağlıklı bir şekilde görüşmüştür. Farklı senaryolar ile proje büyütülebilir. Get in yanında Set işlemi de yapılarak veri gönderme işlemi yapılabilir. Set kısmı başka bir blog da yayınlamaya çalışacağız.

Projenin kaynak kodları Github üzerinde "CSharp Firebase Realtime Veri Cekme" ismi ile yayınlanacaktır.

İyi çalışmalar...