Konuyu Oyla:
  • Derecelendirme: 4/5 - 1 oy
  • 1
  • 2
  • 3
  • 4
  • 5
IoT için Rest/Api Tabanlı Server
#1
Merhaba öncelikle Sunucu tarafında çok fazla bilgim ve gerçek ortamda uygulama şansım olmadı.

Bir sunucu uygulaması yapmam gerekiyor. Galiba REST sunucu gibi çalışacak, tam emin değilim.

Asıl yapmak istediğim IoT mantığında bir iş için gerekli.
Elektronik kartımız var ve bir GSM modem modülü ile MCU ile internet erişimini sağlayarak yazılacak olan sunucuya bilgi gönderme/alma işlemleri yapılacak.

En basit mantık ile söylüyorum projenin bitmiş halinde bilgiler birden fazla olacaktır.
Mantığını anlatmak için örnek olması adına 

http://www.benimbulutsunucum.com/soru?senkimsin


gibi bir istek gönderilip. 
Cevap > "Delphican Forum"
gibi


http://api.openweathermap.org/data/2.5/weather?q=izmir&appid=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Daha önce konusu geçmişti bu şekilde api server de olabilir. Bu işlemleri nasıl yapıyoruz.

DataSnap Rest sunucu tarafı mı oluyor?

Araştırdıdigimda rest veya restful sunucu için WebBroker sunucu oluşturmak gerekiyor ve dediğim gibi bir request gönderilip sunucu tarafında response dönüyor. 

Soruma ayrıca ek olarak benim sunucum santral gibi çalışacak yani bir sunucu bir iot cihaz ve client pc olacak. 

Pc sunucuya istek gönderecek 
Sunucu isteği cihaza gönderecek 
cihaz aldığı bilgiye göre sunucuya gerekli bilgiyi post edecek
Sunucu aldığı bilgiyi client pc ye gönderecek

Aslında temeli seri haberleşme gibi düşünebiliriz. Pc ile iot cihaz arasında veri transferi olacak. Cihaz bilgileri sunucuda kayıtlı olarak duracak. client bağlanırken kullanıcı adım şifrem ve şu cihaza bağlanmak istiyorum diyecek sonrasında istek cevap mantığı ile devam edecek.
PostgreSQL - Linux - Delphi, Poliüretan
WWW
Cevapla
#2
öncelikle bir VPS olması gerekiyor sunucu tarifinde delphi yazılımı çalışacak ise php tabananlı ise host paketi ile başlanabilir, Web Server Application , SOAP Server Application , TCPServer, DataSnap ile yapabilirsin

vermiş olduğun örnek Web Server Application ile yapılabilir.
Cevapla
#3
VPS olması şart değil. Sadece bu işe hizmet verecek bir sunucu olabilir. Birçok cihaz ve birçok kullanıcı var bu sayı 100 fazla olabilir. Duruma göre VPS bakılabilir.

IoT cihaz tarafındanki GSM modem http ile istek yapabiliyor.
İstek örneği şöyle oluyor [url adres], [port] buradan sonuç geliyor.
Bu nedenle istekler basit bir şekilde yapılmalı. Eksik bilgi veya yanlış bilgilendirme yapmamak adına özellikle öyle yazdım.
Soap gibi proxy vs olmamalı ben cihazdan sadece url isteği gönderebilirim pc gibi her protokolü kullanamam ve mcu tarafındaki bellek de ister istemez pc gibi değil kısıtlı
PostgreSQL - Linux - Delphi, Poliüretan
WWW
Cevapla
#4
senin için en uygun çözüm, php tabanlı hosting gibi görüyor, php ile bir parametre text gönderip html olarak cevapı okama şeklinde olabilir gibi duruyor. VPS şuan için lazım Delphi Web Server çalışması için windows tabanlı veya linux tabanlı kendine ait bir bilgisayar olması gerekiyor, hosting sağlayıcılar sana bu esnekliği vermeyecektir.
Cevapla
#5
mormot https://github.com/synopse/mORMot deneyebilirsiniz https://github.com/synopse/mORMot/tree/m...20services buraki demoya bakarsanız client tarafında gönderdiğiniz sql sorgunuzu size json olarak dönüyor yine diğer diğer demolarda da görebileceğiniz soru-cevap haberleşme örnekleride mevcut kodları delphi7-10.3,lazarus,kylix ile linux-windows ta derleyebilirsiniz.

“Do. Or do not. There is no try.”
Cevapla
#6
Merhaba,
Bildiğimiz dilin destek ve kaynaklarını fazlası ile işinizi görecektir.
Son iki back-end, front-end projemde bahsetmiş olduğunuz mimariyi kullanıyorum. 

Back-End
Sunucu: Sanal Linux Ubuntu 16.04
DB: PostgreSQL
Sunucu Uygulaması: Linux WebModule
Mimari: REST-JSON

Front-End
Multi-Device Application
Windows VCL Apllication

Yeni kaynak kitabımızda bu konuda birkaç basit uygulama örneği mevcuttur.
Konu içeriği;
arsKitap-19.jpg

arsKitap-20.jpg
Cevapla
#7
(30-01-2019, Saat: 21:05)3ddark Adlı Kullanıcıdan Alıntı: IoT cihaz tarafındanki GSM modem http ile istek yapabiliyor.
İstek örneği şöyle oluyor [url adres], [port] buradan sonuç geliyor. 

Asıl sorunu ters yönde yaşayacaksınız. Yani IOT cihaza veri göndermek istediğinizde nasıl yapacaksınız? Bence bunu da düşünün.
Cihazda GSM modülü varsa bu büyük avantaj. WiFi vs. ethernet çözümü olursa NAT ile uğraşmak zorunda kalabilirdiniz.
WebSocket kullanmanızı tavsiye ederim.
There's no place like 127.0.0.1
WWW
Cevapla
#8
Cevap veren arkadaşlara teşekkürler. Şimdi elimde donanım cihaz mevcut manual dokümana baktığımda cihaz tcp /ip destekliyor. Buna ek olarak bende bir socket server ile haberleşme için deneme yaptım. Cihazdan bağlantı açıp bilgi gönderdim sonrasında da socket server üzerinden cihaza veri gönderdim ve sonucu gördüm. Düzgün sonucu gördüğümde nasıl yapıldığını da paylaşacağım.

Şimdi bu durumda benim nasıl devam etmem gerekiyor.

Socket server tcp ile işlerimi yapacaksam bunun güvenlik kısmını nasıl sağlarım birçok IoT cihaz ve client uygulama olacak sunucuda session mi tutmalıyız tidtcpserver bileşeni bu tarz session desteği var mı yoksa her cihaz ve kullanıcı için kendim guid ile bir session bilgisini tutarak mi ilerlemesinin.

Birde bu işlemi firemonkey ile Linux için yapabilir miyim.
Henüz Rio versiyonunu indiyorum bakıp deneyeceğim
PostgreSQL - Linux - Delphi, Poliüretan
WWW
Cevapla
#9
(03-02-2019, Saat: 18:59)3ddark Adlı Kullanıcıdan Alıntı: Cevap veren arkadaşlara teşekkürler. Şimdi elimde donanım cihaz mevcut manual dokümana baktığımda cihaz tcp /ip destekliyor. Buna ek olarak bende bir socket server ile haberleşme için deneme yaptım. Cihazdan bağlantı açıp bilgi gönderdim sonrasında da socket server üzerinden cihaza veri gönderdim ve sonucu gördüm. Düzgün sonucu gördüğümde nasıl yapıldığını da paylaşacağım.

Şimdi bu durumda benim nasıl devam etmem gerekiyor.

Socket server tcp ile işlerimi yapacaksam bunun güvenlik kısmını nasıl sağlarım birçok IoT cihaz ve client uygulama olacak sunucuda session mi tutmalıyız tidtcpserver bileşeni bu tarz session desteği var mı yoksa her cihaz ve kullanıcı için kendim guid ile bir session bilgisini tutarak mi ilerlemesinin.

Birde bu işlemi firemonkey ile Linux için yapabilir miyim.
Henüz Rio versiyonunu indiyorum bakıp deneyeceğim

IoT teknolojilerinde kendisini ispatlamış, birçok bilindik marka veya firma tarafından etkin bir şekilde kullanılan iletişim yöntemlerini kullanmanızı tavsiye ediyorum. Aksi durumda (klasik haberleşme yöntemleriyle), birçok sorun ve zaman kaybı ile karşı karşıya kalabilirsiniz.
IoT teknolojilerinde en bilindik iletişim protokollerinin başında M2M (Machine to Machine = Cihazlar arası haberleşme) prensibine dayanan MQTT, CoAP, AMQP ve DDS gelmektedir.
Daha önce geliştirdiğim bir IoT teknolojisi; AGS (Akıllı Geçiş Sistemi)
Mobil uygulama ile uzaktan bir kapının (bariyer, turnike, garaj veya ofis kapısı vb.) açılmasını sağlayan IoT cihazı tamamen tarafımızdan üretilen, mikrokontroleri tarafımızdan programlanan, Türkiye'de geliştirilmiş ilk akıllı geçiş sistemidir.
Sunucu: Linux Ubuntu
Sunucu uygulaması: Linux WebModule (Delphi 10.2 Tokyo ile geliştirebilmiş)
iletişim protokolü: MQTT
Mobil uygulama (AGS) Android ve iOS (Delphi 10.2 Tokyo ile geliştirebilmiş)
Umarım tüm sorularınıza cevap olmuştur.
Cevapla
#10
Aslında ben buradan tam olarak yapmak istediğimi belirteyim. Açıkçası ben MQTT protokolünü araştırmadım ve bilmiyorum konuya yeni yeni vakıf olmaya çalışıyorum. Proje biraz damdan düşer gibi Ar-Ge ekibinden IT ekibine geldi.

Şimdi birçok cihazım olacak ve zamanla artacak.
  • Müşterilere satılan ticari elektronik cihazlar mevcut.
  • Bunların cihazların üzerinde GSM modülü var. Bu modül içine SİM kart takıp internete çıkabildim.
  • Cihazı / Cihazları satın alan müşterilere bir yazılım geliştirilecek.
  • Yazılım üzerindeki özelliklere göre ki bunlar olacak. Cihazın bilgilerini okuyarak bilgisayar üzerinde gösterebileceğim.
  • Bilgisayar tarafından ayar yaparak Cihaza veri/verileri gönderebileceğim.
  • Aradaki Sunucu katmanında bu Cihaz ve Client bilgisayar arasındaki köprüyü kurmam gerekiyor.
  • Ayrıca bu sunucu katmanında Veri tabanı (PostgreSQL / MySQL) ile ilişkili basit işler de yapılacak. Birden fazla Cihaz ve Birden fazla Client bilgisayar olacağı için kullanıcı sadece kendisine ait cihazlara erişmeli diğer cihazlara müdahale etmemeli.
Yani özetle özellikle altını çizmek istediğim nokta her zaman çift yönlü iletişim olacak.
Yani bilgisayar Cihazdan istek yapacak. Cihaz bilgisayara yanıtı gönderecek. 

Bu durumda ben MQTT mi kullanmam gerekiyor?
Indy TCP Socket Server uygulaması yazsam sorun olur mu?

Ayrıca bende bu işlemleri Linux sunucu üzerinde yapmayı planlıyorum.
Bu nedenle Linux sunucuyu Cloud sunucu hizmeti veren bir firmadan almak doğru mu?

Oldukça çok soru sordum ama acemiliğime verin. Önümde bir Fuar takvimi var ve bir prototip çıkması gerekiyor. Takvim oldukça kısa 1 ay 1 hafta kadar zamanım var.

Ayrıca @"Fesih ARSLAN" hocam ben haberleşme işlemini canlı olarak yapacağım. Yani kuyruk işlemi gibi işlemler olmayacak. Canlı telefon konuşması gibi düşünebiliriz. Aradaki santral konuşmayı koordine edecek. 
En basit mantıkla seri haberleşme gibi düşünün. Tek fark veriler Internet üzerinden gönderilecek.

MQTT de gördüğüm kadarıyla tek yönlü haberleşme mevcut. IoT Cihaz publisher olarak çalışıyor. Server ayağındaki MQTT protokol ile çalışan sunucu da Publisher IoT cihazdan aldığı verileri depoluyor ve istek yapan Client(Mobil veya Desktop uygulama) kullanıcılara istedikleri bilgiyi sunuyor.
PostgreSQL - Linux - Delphi, Poliüretan
WWW
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  WebBroker ve TMS Web Core ile REST WEB API Yaklaşımı 2 delphi.developer 0 187 04-03-2024, Saat: 16:14
Son Yorum: delphi.developer
  WebBroker ve TMS Web Core ile REST WEB API Yaklaşımı delphi.developer 3 408 14-02-2024, Saat: 15:22
Son Yorum: parlakcuma
  TMS Web Core giriş için mini proje eda 1 524 15-09-2023, Saat: 19:54
Son Yorum: eda
  DataSnap Rest Serverdaki bir fonksiyonu çalıştırma barissagir 2 1.367 24-04-2021, Saat: 18:31
Son Yorum: barissagir
  hidden file server folders powerghost 0 985 29-05-2020, Saat: 14:55
Son Yorum: powerghost



Konuyu Okuyanlar: 1 Ziyaretçi