Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Hızlı çalışan server Firebase, Udp, Tcp, MQTT
#1
Merhaba

10-15 adet IoT cihazından gelen verileri 3-4 windows yada Android kullanıcısına anlık olarak iletmek istiyorum.
IoT cihazlarından veriler 2G yada 3G ile alınacak bu verileri hangi yolu izlersem en hızlı  gönderebilir ve işleyebilirim(veritabanı kayıt ve anlık iletme)?

Kiralık bir vds de UDP ,TCP sunucu kurmak, MQTT, delphi web server yada firebase için çözüm bulmak, hangisi daha hızlı veri iletimi sağlar?
Sürekli olarak veri alma işleme yapılmayacak haftada bir yada gerektiğinde çalışacak bir sistem.

 Konu hakkında tecrübenizi öğrenebilir miyim ?
Cevapla
#2
Merhaba,
Firebase kullanmayın. (Özel verileriniz 3. şahıslarında barınmış olur)
UDP kullanmayın. Veri kaybına tahammülünüz olmadığını düşünerek yazdım.
TCP (Client-Server mimarisine ihtiyacınız olacaktır) kullanabilirsiniz.
MQTT kullanabilirsiniz.
TCP ve MQTT protokollerinde gözle görülür bir hız farkı olmayacaktır.
Belirtmediğiniz bir yöntemden de bahsedeyim. 
Terminal cihazınız (IoT cihazı) verileri doğrudan db ye Post ederse süper hızlı bir mimari olacaktır.
Begin : = end / 2;
Cevapla
#3
(17-06-2022, Saat: 13:02)RAD Coder Adlı Kullanıcıdan Alıntı: Merhaba,
Firebase kullanmayın. (Özel verileriniz 3. şahıslarında barınmış olur)
UDP kullanmayın. Veri kaybına tahammülünüz olmadığını düşünerek yazdım.
TCP (Client-Server mimarisine ihtiyacınız olacaktır) kullanabilirsiniz.
MQTT kullanabilirsiniz.
TCP ve MQTT protokollerinde gözle görülür bir hız farkı olmayacaktır.
Belirtmediğiniz bir yöntemden de bahsedeyim. 
Terminal cihazınız (IoT cihazı) verileri doğrudan db ye Post ederse süper hızlı bir mimari olacaktır.

Cevabınız için teşekkür ederim.

Firebase https istiyor IoT için bir çözüm bulamamıştım. 
MQTT için FMX tarafında bir çözüm yok diye biliyorum TMS hariç.
TCP kullanmak daha uygun gibi.

Doğrudan db post için cihazda hhtp get ile bi php sunucusuna atabilirim.
 2g için http get denemiştim çok hızlı çalışmadığını gördüm karşı tarafta php servis vardı.3G deneme imkanı olmadı.


MQTT de TCP ile çalıştığı için hız farkı olmadığını düşünüyorsunuz değil mi?
Cevapla
#4
Mobil cihazda MQTT bileşeni kullanmanıza gerek yok.
Kullanacağınız mimaride MQTT, M2M çalışacak ise bu tip bileşenler kullanırsınız. 
IoT cihaz, bir REST API üzerinden DB'ye yazar. 
Mobil uygulama yine REST API yardımı ile DB den verileri okur. 
REST API için PHP yerine yine Delphi tarafından yüksek desteğe sahip Web Server mimarilerinden (DataSnap, Web Broker, RADServer vb) birini kullanabilirsiniz.
M2M, yani IoT den mobile veya uygulamalar arasında tek veya çift taraflı doğrudan veri akışı olacaksa MQTT kullanın, yoksa doğrudan http ile iş yapmanız daha doğru bir yaklaşım olacaktır. 
Mimari aşağıdaki gibi olabilir. 

   
Begin : = end / 2;
Cevapla
#5
Çift taraflı canlı olarak haberleşme için TCP mqtt udp gibi soket uygulaması kullanın. Fakat istek cevap ve sürekli olmayacaksa rest iyidir ve güncel çözümdür.

Cihaz sayın çok az. En güncel en rahat ve en kolay kullanım Restfull api server ile çalışmak. Delphi ve bir sürü dil ile bunu rahatlıkla kullanabilirsiniz. Delphi, nodejs, Java, PHP, .net core, golang

Delphi iyidir derseniz. Bununla ilgili mantığını anlatacak giriş seviye bir örnek verebilirim. Diğer diller için internette bir sürü örnek mevcut
PostgreSQL - Linux - Delphi, Poliüretan
WWW
Cevapla
#6
(18-06-2022, Saat: 07:43)3ddark Adlı Kullanıcıdan Alıntı: Çift taraflı canlı olarak haberleşme için TCP mqtt udp gibi soket uygulaması kullanın. Fakat istek cevap ve sürekli olmayacaksa rest iyidir ve güncel çözümdür.

Cihaz sayın çok az. En güncel en rahat ve en kolay kullanım Restfull api server ile çalışmak. Delphi ve bir sürü dil ile bunu rahatlıkla kullanabilirsiniz. Delphi, nodejs, Java, PHP, .net core, golang

Delphi iyidir derseniz. Bununla ilgili mantığını anlatacak giriş seviye bir örnek verebilirim. Diğer diller için internette bir sürü örnek mevcut

Web tarafında bilgim ve tecrübem az.  Örnekbir rest servis ile 2g üzerinden http get verisini alıp mysqle yazmıştım. Kullandığım Arduino kütüphanesinden mi yoksa 2G sebebiyle mi bilmiyorum ama veri gelme ve yazma zamanı çok uzun göründü gözüme. Yaptığım her işlemi de seri monitörden takip ettiğim için de işlemin yavaş olmasına sebep olmuş olabilir.

Öncelik anlık veriyi dinleme yapan 3-5 kullanıcıya bildirmek.Veriyi get ile alıp yazıp daha sonra talep eden kullanıcıya tekrar get ile json olarak vermek iletişim süresini uzatmaz mı?
PHP bilgim çok sınırlı gelen son datayı db e yazmadan önce değişken içinde tutup istek yapan client a vermek mümkün mü?
Basit bir delphi server denedim json olarak gelen get verisini alamadım ve cevap geriye json olarak da dönüş yapamadım.

   
procedure TfrmAna.IdHTTPServer1CommandGet(AContext: TIdContext;
 ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
 var
 HtmlResult: String;
   wrtJSON: TJsonObjectWriter;
   giden:String;
   Jvalue: TJSONValue;
   islem:integer;
begin
Listbox1.Items.Add (ARequestInfo.Document);
Listbox1.Items.Add (ARequestInfo.Command);
memo1.Lines.Add('calisti');
try
   Jvalue := TJSONObject.ParseJSONValue(TEncoding.UTF8.GetBytes(ARequestInfo.Document), 0)
     as TJSONObject;
   islem := Jvalue.GetValue<integer>('islem');
   case islem of

     0:begin
      var seri :=  Jvalue.GetValue<String>('seri');
      var data1 :=  Jvalue.GetValue<String>('data1');
      var data2 :=   Jvalue.GetValue<String>('data2');
      memo1.lines.Add(seri +' '+ data1+' '+ data2);

     end;
      1:begin //android telefondan
        wrtJSON := TJsonObjectWriter.Create();
       try
         wrtJSON.WriteStartObject;
         wrtJSON.WritePropertyName('islem');
         wrtJSON.WriteValue('bilgi');
         wrtJSON.WriteEndObject;
         Memo1.Text := wrtJSON.JSON.Format;
         HtmlResult := wrtJSON.JSON.Format;
       finally
         wrtJSON.DisposeOf;
       end;
      AResponseInfo.ContentText := HtmlResult ;
            end;
         end;

  // Memo1.lines.Add(islem);

 finally
   Jvalue.DisposeOf;
 end;

wrtJSON := TJsonObjectWriter.Create();
 try
   wrtJSON.WriteStartObject;
   wrtJSON.WritePropertyName('islem');
   wrtJSON.WriteValue('ilk_veri');
   wrtJSON.WriteEndObject;
   Memo1.Text := wrtJSON.JSON.Format;
   HtmlResult := wrtJSON.JSON.Format;
 finally
   wrtJSON.DisposeOf;
 end;
AResponseInfo.ResponseNo := 200 ;
AResponseInfo.ResponseText:=htmlresult;
AResponseInfo.ContentText:=htmlresult;
end;

Delphi Indy ile web server i çözemedim. GET komutu çalışıyor ama veriyi alamaıyorum.

   
   
   

Dün gece MQTT ile bir örnek hazırladım 500ms lik bir bekleme ile çalışıyor.

   

Delphi Indy ile basit bir web server hazırlayabilsem MQTT den daha verimli mi olur denemek istiyorum.
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Mobil Client - Desktop Server Uygulama Teknik Önerisi burakb44 7 873 12-06-2026, Saat: 18:15
Son Yorum: mcuyan
  Delphi ile SQL server bağlantı hatası yakalama Under 20 3.159 21-11-2025, Saat: 15:24
Son Yorum: mrmarman
  TIdHTTPWebBrokerBridge ile HTTP server de response bloklanabilirmi? aegean 1 575 25-09-2025, Saat: 19:57
Son Yorum: aegean
  Rest Server Hata m_ekici 2 925 09-03-2025, Saat: 13:32
Son Yorum: m_ekici
  Rest Server e gönderilen bilgiler m_ekici 8 2.004 17-02-2025, Saat: 11:43
Son Yorum: m_ekici



Konuyu Okuyanlar: 1 Ziyaretçi