Çok Yakında Yeni Bir Arayüzle karşınızdayız! http://yeni.delphican.com/

Konuyu Oyla:
  • Derecelendirme: 5/5 - 3 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Delphi ile Arduino & Raspberry PI gibi Cihazlarla İletişim Kurmak
#11
Bende suan hazirliyorum paylasacaklarimi yakinda paylasacam Smile
Cevapla
#12
(07-11-2018, Saat: 13:38)arsl01 Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.Bende suan hazirliyorum paylasacaklarimi yakinda paylasacam Smile

MQTT konusunda çalışmanız varsa, bunuda paylaşımlarınıza ekleyebilirsiniz.  Smile

Bu Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız. Delphi proje örnekleri sayfası açılmıyor. Bu konularda, C# üzerine bir projeler paylaşmışlar inanılır gibi değil. Delphi tarafında paylaşım yok denecek kadar az malesef.
Cevapla
#13
@pro_imaj calismalarim var ins onlarida paylasacam. MQTT konusu biraz geniştir
Cevapla
#14
(07-11-2018, Saat: 15:07)arsl01 Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.@pro_imaj calismalarim var ins onlarida paylasacam. MQTT konusu biraz geniştir

"Derin olan kuyu değil kısa olan iptir." Yani benim için deniz derya ama işin mantığını çözen için; Faz nötr al götür.  Smile

Paylaşımları sabırsızlıkla bekliyoruz. 

İyi çalışmalar.
Cevapla
#15
(07-11-2018, Saat: 14:57)pro_imaj Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.MQTT konusunda çalışmanız varsa, bunuda paylaşımlarınıza ekleyebilirsiniz.  Smile  
Bu Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız. Delphi proje örnekleri sayfası açılmıyor. Bu konularda, C# üzerine bir projeler paylaşmışlar inanılır gibi değil. Delphi tarafında paylaşım yok denecek kadar az malesef.

Delphi için bu teknoloji yeni sayılır ondandır. En doğru ve en yeni teknolojileri dönüp dolaşıp DelphiCan'da bulacaksınız.  Wink
MQTT konusunda açık kaynak kod kullanmadım. Yalnızca Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız. bileşen setini kullandım. Bu konuda Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız. bileşenini de tavsiye ederim.

TMS MQTT kodlamadaki püf noktalar:
1- Client (Mobil) uygulama ön ve arka plan durumları için; 
Uygulama arka plana alındığında (özellikle iOS'ta yoğun arka plan işlemleri istenmiyor, bu amaçla) TApplicationEvent.EnteredBackground olayında MQTT ve buna bağlı iletişimler varsa uygulama ön plana alınıncaya kadar devre dışı bırakılmalıdır. 
Örneğin;
    TApplicationEvent.EnteredBackground:
     begin
       if frmAGSSinyal.swcSinyalAGS.IsChecked = True then //burada iletişim kullanıcı kontrolünde, yani kullanıcı dilerse iletişimi kapatabiliyor
       begin
         Dm.TMSMQTTClient1.Disconnect;
         frmAGSSinyal.swcSinyalAGS.IsChecked := False;
       end;
     end;
Ön plana alınacağı anda;
TApplicationEvent.BecameActive:
     begin
         if intVarMi then
         begin
           frmAGSSinyal.swcSinyalAGS.IsChecked := True;
           Dm.TMSMQTTClient1.Connect;
         end;
     end;
2- İlk bağlantı için
  try
   with Dm.TMSMQTTClient1 do
   begin
     BrokerHostName := formAna.AGS.Ayarlar.SunucuIP;
     BrokerPort := formAna.AGS.Ayarlar.SunucuPort.ToInteger;
     Credentials.Username := strMQTTKullanici;
     Credentials.Password := strMQTTSifre;
     KeepAliveSettings.AutoReconnect := True;
     KeepAliveSettings.AutoReconnectInterval := 15;
     KeepAliveSettings.KeepConnectionAlive := True;
     KeepAliveSettings.KeepAliveInterval := 60;
     Connect();
     TThread.Synchronize(Nil,
       procedure()
       begin
         formAna.AGS.Sunucu.Hata := False;
         formAna.AGS.Sunucu.HataAciklama := '';
         formAna.AGS.Sunucu.HataKodu := '-1';
       end);
   end;
 except
   formAna.AGS.Sunucu.Hata := True;
   formAna.AGS.Sunucu.HataAciklama := 'Sunucu yanıt vermiyor';
   formAna.AGS.Sunucu.HataKodu := '-1';
 end;
3- Uygulama kapatılmadan önce MQTT bağlantısını mutlaka kesin
procedure TformAna.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
 if Dm.TMSMQTTClient1.IsConnected then
   Dm.TMSMQTTClient1.Disconnect;
end;
4- Bağlantı durumuna duyarlı olun (TMSMQTTClient nesnesinin OnConnectedStatusChanged olayı)
    case AStatus of
     csNotConnected:
       ;
     { Sunucu kaynaklı hatalar }
     { MQTT protokol versiyon uyuşmazlığı var }
     csConnectionRejected_InvalidProtocolVersion:
       ;
     { Sunucu tanımlama hatası }
     csConnectionRejected_InvalidIdentifier:
       ;
     { Sunucuya ulaşılamıyor }
     csConnectionRejected_ServerUnavailable:
       ;
     { Kimlik Bilgileri hatası }
     csConnectionRejected_InvalidCredentials:
       ;
     { Yetkili değil }
     csConnectionRejected_ClientNotAuthorized:
       ;
     { Bağlantı sunucu tarafından reddedildi }
     csConnectionLost:
       ;
     { Sunucu ile bağlantı koptu }
     csConnecting:
       ;
     { Sunucu ile yeniden bağlantı sağlanıyor }
     csReconnecting:
       ;
     // csConnected: ;
   end;

5- MQTT sunucusundan gelen verileri OnPublishReceived olayında yakalayabilir ve okuyabilirsiniz.
var
 msg, ClientID, msgOK, IstekteBulunanId, str: string;
 vp: integer;
 KendiMesajimmi: Boolean;
 Lokasyon: Variant;
begin
 msg := TEncoding.UTF8.getString(APayload); //Gelen veri
 vp := pos(strOzel, msg); //Güvenlik amacıyla yerleştirdiğimiz bir anahtar kelime var
 if vp > 0 then //mesaj bize ait ise
 begin
   ClientID := copy(msg, 1, vp - 1); //MQTT cihaz (herhangi bir IoT cihaz) Id'sini alıyoruz.
   KendiMesajimmi := ClientID = formAna.AGS.Personel.CihazId; //Kendi mesajını da dinleyebilir ve loglama amaçlı kayıt altına alabiliri.
   msg := copy(msg, vp + strOzel.Length, Length(msg)); //Güvenlik anahtarı ve Id'lerden arındırılmış mesaj
   msgOK := copy(msg, 1, 2); //komut gerçekleştirilecek mi?
   if msgOK = strOK then
   begin
     IstekteBulunanId := copy(msg, 3, msg.Length); //IoT Cihaz Id veya Bir Mobile Cihaz Id
     if IstekteBulunanId = formAna.AGS.Personel.CihazId then
     begin {veri tabanı ve SQL işlemlerini yapıyoruz}
       str := GetArsInsertJSON('sp_insert_loggecis',
         ['cihazid', 'personelId', 'LokasyonId', 'AltLokasyonId', 'KapiId',
          'strSonuc'], [formAna.AGS.Personel.CihazId,
          formAna.AGS.Personel.PersonelId, formAna.AGS.Gecis.LokasyonId,
          formAna.AGS.Gecis.LokasyonAltId, formAna.AGS.Gecis.KapiId,
          strSonucOK]);
       GetArsRESTRequest('akmega/ags/DbInsert', 'DbInsert', str); //REST sunucu URI'lerini set ediyoruz.
       AddMessage( { ClientID+ } 'AGS: ' + strSonucOKLocal { msg } , KendiMesajimmi); //Mobil uygulamada kullanıcı paneline mesajı yazıyoruz.
     end;
     SetArsBildirimGonderLokal('Giriş işlemi','"' + Lokasyon[3] + '" açıldı.', 'N1'); //Son kullanıcıya işlem sonucu ile ilgili bir bilgi iletiyoruz.
   end;
 end;
end;
6- Mobil uygulamadan (MQTT sunucu üzerinden) bir komut veya mesaj göndermek için Publish metodu kullanılır.
Dm.TMSMQTTClient1.Publish(strSubPubAkMega + AItem.Detail { KANAL bilgisi } , formAna.AGS.Personel.CihazId + strOzel + strMQTTAc);
While true do; Hayat döngüsü, kısır değildir! Yapılan bir yanlış, o döngünün dışına çıkmanızı sağlayacaktır.
WWW
Cevapla
#16
@Fesih ARSLAN hocam yine döktürmüssünüz super elinize saglik
Cevapla
#17
Turbo Power AsyncPro 'nun xe7 için olan paketi varmı internettten araştırdım bulamadım.Teraziyi comport3 üzerinden haberleştirmeye çalışıyorum.Ama beceremedim.
Cevapla
#18
(13-10-2019, Saat: 17:07)glagher Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.Turbo Power AsyncPro 'nun xe7 için olan paketi varmı internettten araştırdım bulamadım.Teraziyi comport3 üzerinden haberleştirmeye çalışıyorum.Ama beceremedim.

Merhaba, 
Aşağıdaki linkten indirebilirsiniz.
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
While true do; Hayat döngüsü, kısır değildir! Yapılan bir yanlış, o döngünün dışına çıkmanızı sağlayacaktır.
WWW
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Arduino simülator sadettinpolat 2 1.455 08-12-2018, Saat: 10:10
Son Yorum: Hayati
  Nodemcu ile Delphi json haberleşme arsl01 8 1.225 03-12-2018, Saat: 09:27
Son Yorum: Bay_Y
  Şu Arduino nedir? Ne değildir bir bakalım. esistem 30 15.499 09-07-2018, Saat: 15:00
Son Yorum: SercanTEK
  Raspberry Pi3 Lunix Server Tarzı kullanma nguzeller 12 2.063 29-03-2018, Saat: 22:44
Son Yorum: nguzeller
  Raspberry Pi Genel Sorular pro_imaj 11 2.690 02-01-2018, Saat: 10:01
Son Yorum: pro_imaj



Konuyu Okuyanlar: 1 Ziyaretçi