Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Mosquitto veri alma/ gönderme Hk.
#1
Merhaba,

Forumda @SimaWB bu paylaşımındaki componentler ile Mosquitto ile işlemlere başladım. (Anlamak için Raspberry Pi olmadan bilgisayardan bilgisayara testler yapıyorum.)

Şuan için; Mesajı Publish edebiliyorum bunu Mosquitto tarafında da sorunsuz gözlemleyebiliyorum. Publish işlemini Delphi tarafında da sorunsuz yapabiliyorum.

Şu işlemleri nasıl yapabilirim;
1-Mosquitto tarafında gözlemlediğim (CMD ile) verileri Delphi tarafında nasıl okuyabilirim. (Hangi istemciden hangi mesaj geldi.)
2-Publish yaptığım istemciye Mosquitto tarafında nasıl dönüş mesajı gönderebilirim. (Örn; Mesaj ulaştı.)

Teşekkürler.

lYEzCY.gif
Cevapla
#2
Şuan kullandığım PC'de Delphi yok o yüzden ezbere yazıyorum:
  1. Subscribe olurken Topic olarak '/#' seçtiğinde tüm mesajları yakalayabilmen lazım. Mesajların kimden geldiği Payload içerisinde CleintId şeklinde bir bilgi olabilir. Daha güzeli gönderilen mesajların içerisine gerekli bilgileri eklemek olabilir.
  2. İkinci sorunu tam anlamadım ama Mosquittonun kendisinden cevap vermekten bahsediyorsan bunu bilmiyorum. Mosquitto, broker gibi davrandığı için mesajlara cevap vermek vs. işlemlerle ilgileneceğini sanmıyorum. 
Mesela şöyle bir şey yapabilirsin:
Mesaj gönderirken 
MQTT.Publish('/msg/kullanici1', 'Deneme mesaj');

Bu mesajı dinlemek isteyen uygulama:
MQTT.Subscribe('/msg/#', 0);
şeklinde mesajları dinlerse tüm kullanıcılardan gelen mesajları okuyabilir ve mesajı aldığında topic kısmında hangi kullanıcıdan geldiğini anlayabilir.

Not: Dediğim gibi bunları ezbere yazdım, hatalı olabilir. Ayrıca '/msg/#' bu kısım; '/msg/' yada '/msg' şeklinde olabilir.
There's no place like 127.0.0.1
WWW
Cevapla
#3
(23-09-2020, Saat: 21:00)SimaWB Adlı Kullanıcıdan Alıntı: Şuan kullandığım PC'de Delphi yok o yüzden ezbere yazıyorum:
  1. Subscribe olurken Topic olarak '/#' seçtiğinde tüm mesajları yakalayabilmen lazım. Mesajların kimden geldiği Payload içerisinde CleintId şeklinde bir bilgi olabilir. Daha güzeli gönderilen mesajların içerisine gerekli bilgileri eklemek olabilir.
  2. İkinci sorunu tam anlamadım ama Mosquittonun kendisinden cevap vermekten bahsediyorsan bunu bilmiyorum. Mosquitto, broker gibi davrandığı için mesajlara cevap vermek vs. işlemlerle ilgileneceğini sanmıyorum. 
Mesela şöyle bir şey yapabilirsin:
Mesaj gönderirken 
MQTT.Publish('/msg/kullanici1', 'Deneme mesaj');

Bu mesajı dinlemek isteyen uygulama:
MQTT.Subscribe('/msg/#', 0);
şeklinde mesajları dinlerse tüm kullanıcılardan gelen mesajları okuyabilir ve mesajı aldığında topic kısmında hangi kullanıcıdan geldiğini anlayabilir.

Not: Dediğim gibi bunları ezbere yazdım, hatalı olabilir. Ayrıca '/msg/#' bu kısım; '/msg/' yada '/msg' şeklinde olabilir.

Cevap için teşekkürler @SimaWB hocam.
Anladığım kadarıyla tüm algoritmayı gönderdiğim mesaj içerisinde tasarlamam gerekiyor sonrada o mesajdaki algoritmaya göre işlem yaptırmam gerekiyor. 

1. Maddeyi sensor/home şeklinde alabiliyorum bu sorun çözülmüş oldu artık istediğim dönüş değerini alabiliyorum.
2. Madde için; Biraz detaylandırayım, sanırım benimde kafamda bir şeyler canlandı. (Mantığını yanlış anlamışım)

Örnek;
1 Adet led'i delphi ile yakan bir elektronik devre düşünüyorum, bu elektronik devreye, @Fesih ARSLAN hocanın bahsettiği şekilde C++ kodu ile yazılan bir kod ile devamlı sensor/home  Subscribe dinleyen kod olacak, sonrasında  Delphi uygulaması ile sensor/home Open olarak Publish ettiğimde elektronik devre üzerindeki bu kod Open mesajını aldığında elektronik devre üzerindeki led'i yakacak ve elektronik devre üzerindeki kod sonra sensor/home  "Led 1 Opened" ile Publish mesajı gönderecek, ve ben bunu Delphi tarafında dinlediğimden led'in başarılı şekilde yandığını anlamış olacağım.

Yukarıdaki örnekteki mantık doğruysa işlemlere bu şekilde devam edeceğim.


Yardımlarınız için teşekkürler.
Cevapla
#4
Mesajlarda JSON kullanırsanız daha rahat hareket eder, mesaj içeriğini dilediğiniz gibi şekillendirebilirsiniz. Mesela elektronik devreden gelen mesaj içinde cihaza özel ID(seri numarası), varsa IP adresi vs. bilgileri olabilir.
There's no place like 127.0.0.1
WWW
Cevapla
#5
(24-09-2020, Saat: 09:47)pro_imaj Adlı Kullanıcıdan Alıntı: Cevap için teşekkürler @SimaWB hocam.
Anladığım kadarıyla tüm algoritmayı gönderdiğim mesaj içerisinde tasarlamam gerekiyor sonrada o mesajdaki algoritmaya göre işlem yaptırmam gerekiyor. 

1. Maddeyi sensor/home şeklinde alabiliyorum bu sorun çözülmüş oldu artık istediğim dönüş değerini alabiliyorum.
2. Madde için; Biraz detaylandırayım, sanırım benimde kafamda bir şeyler canlandı. (Mantığını yanlış anlamışım)

Örnek;
1 Adet led'i delphi ile yakan bir elektronik devre düşünüyorum, bu elektronik devreye, @Fesih ARSLAN hocanın bahsettiği şekilde C++ kodu ile yazılan bir kod ile devamlı sensor/home  Subscribe dinleyen kod olacak, sonrasında  Delphi uygulaması ile sensor/home Open olarak Publish ettiğimde elektronik devre üzerindeki bu kod Open mesajını aldığında elektronik devre üzerindeki led'i yakacak ve elektronik devre üzerindeki kod sonra sensor/home  "Led 1 Opened" ile Publish mesajı gönderecek, ve ben bunu Delphi tarafında dinlediğimden led'in başarılı şekilde yandığını anlamış olacağım.

Yukarıdaki örnekteki mantık doğruysa işlemlere bu şekilde devam edeceğim.


Yardımlarınız için teşekkürler.


Son yazdıklarınız bu işin mantığını doğru kavradığınızı gösteriyor. 

Bu sistem için gerekli olan ihtiyaçlar şunlardır.  
Donanım İhtiyacı
- Temel seviyede C yazılım diline hakim olmak.
- Donanımsal elemanlar;
     Mikrokontrolör (doğrudan hazır bir modül de olabilir. örn, raspberry pi, arduino, NodeMCU, WeMos vb), 
     Led (anot-katot kavramını bilmek gerekiyor), 
     Bir adet direnç (Kullanılan voltaja göre kaç ohm'luk direnç kullanılacağını bilmek gerekiyor. Bir formülasyonu var; 50*Voltaj-100 )
     Güç kaynağı (5, 9, 12 V. olabilir) 
- Yapacağınız devrenin şeması (Tarif=DataSheet).
   Wemos ile yapılacaksa 
  
   

- Yazılan kodu mikrokontrolöre yüklemek için bir IDE (MPLABX, Arduino vb.)
- Diğer malzemeler (Delikli pertinaks, bağlantı kablosu, FTDI kablo veya miniUSB)
Fiziksel  veya Sanal sunucu (Windows veya Linux, tercihen Linux daha iyi olacaktır)
Sunucu üzerine MQTT kurulması
   MQTT konfigürasyonunun yapılması
   MQTT lokal testlerin tamamlanması
Client Yazılım (Mobil uygulama) İhtiyacı
   Gerekli olan bileşen seti: MQTT protokölünü destekleyen açık kaynak kodlu veya ücretli bir bileşen.
Client uygulama, donanım işlemleri ve mesaj hareketleri loglanacak ise (IoT teknolojisinde mutlaka olmalı) REST uygulamasının yazılması
Cihazın uzak sunucuya bağlantıları için ortam Wifi'si veya GPRS (GSM Modem) ihtiyacı vardır.
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
Thumbs Up Delphi 10.3 ile mobil uygulamadan esp32 cihazına bluetooth le ile metin gönderme AlpDmr 8 2.840 19-04-2020, Saat: 13:26
Son Yorum: AlpDmr



Konuyu Okuyanlar: 1 Ziyaretçi