Ana içeriğe atla

IoT Tecrübeleri - 1

Medikal cihazlardan anlık veri almayı, medikal cihazları uzaktan yapılandırıp bu cihazların hem yönetimini kolaylaştırmayı hem de bakım masraflarını azaltmayı hedefleyen bir projenin içerisindeyim.
IoT seni parça parça ederim!

Farklı markalar ve farklı haberleşme teknolojilerine sahip bu medikal IoT (Internet of Things) cihazlar ve genel amaçlı birçok IoT cihazının bulunduğu bu projeden edindiğim tecrübeleri paylaşmak istiyorum.

Taklit (mock) cihaz yazın. Elimizde bulunan bir medikal cihaz 22 bin euro değerinde. Üreticiden test için bir tane daha istemeyi düşündüğümüzde sırf gümrük muafiyeti bürokrasisi yüzünden istemekten vazgeçtik. Ayrıca bu cihaz hassas bir şekilde taşınmazsa kalibrasyonu bozuluyor. Aynı cihaz üzerinde birkaç kişi aynı anda hatta cihaz başında olmadan nasıl çalışabildik? Taklit (mock) cihaz yazarak. Cihazın TCP/IP haberleşmesini birebir taklit eden bir taklit cihaz yazılımı (.Net Core ile tamamen yazılımsal bir taklit) yazdık. Bu bizim çok zamanımızı aldı. Ama bunun sayesinde
  • Aynı anda birkaç kişi cihaz için yazılım geliştirmeye devam edebildik.
  • Aklımıza gelen yeni fikirleri bu taklit yazılım ile anında deneyebildik. Gerçek cihazda bu denemeleri yapabilmek için cihazın başına gidip parametreleri elle cihaza girip, sensörleri elle doğru kablolara takıp cihazı yeniden başlatmamız gerekiyordu.
  • Taklit cihaz ile API hizmeti verip bu verileri web ara yüzünde göstererek prototip ve demoları hızlı bir şekilde kullanıcılara gösterebildik.
  • Başka firmaların bu cihaz ile çalışmalarını sağladık.
  • Cihazın farklı ağ trafiği yoğunluğunda nasıl davranabileceğini öngörebildik.
TCP’nin değişik versiyonları var. Tahoe, Reno, NewReno, SACK, Vegas, BIC, CUBIC, Peach … Gelen veriler arasındaki zaman farkı sizin için önemliyse, kritik öneme sahip veriler birazcık geç gelince bile sisteminiz etkileniyorsa TCP’nin değişik versiyonlarının olduğunu aklınızın bir köşesinde tutmanızda fayda var. Biz gelen verilerin hızlı bir şekilde işlenmesi için milisaniyelerin hesabını yaparken cihazların ağ sıkışıklığında farklı farklı davranmalarının nedeninin bu olduğunu bulduk.
Dokuman yazın. Medikal IoT cihazlarının dokümanları genellikle eksik oluyor. Bir cihazı tanımaya başladığınızda onunla ilgili öğrendiğiniz her şeyi paylaşın. Özellikle medikal IoT cihazlarda bir senaryoyu test etmeniz ve cihazın neden istenildiği gibi davranmadığını bulmanız uzun saatler hatta günler alabiliyor.

Aynı cihazları kullanmaya çalışın. Seri porttan (COM port) gelen veriyi ethernet kablosundan iletmeye yaran birkaç farklı marka çevirici cihaz kullandık. Uzun uğraşlar sonunda veri kayıplarının bazılarının bu çeviricilerden kaynaklandığını tespit ettik. Tavsiyem bir tane cihaz alıp, test edin. Eğer bu cihaz sağlıklı çalışıyorsa aynı cihazdan fazla miktarda kullanabilirsiniz. Çevirici cihaz değil mi aralarında nasıl bir fark olabilir ki demeyin! Basit cihazların basit hatalarını hafife almayın!

Paralel işlemleri iyi anlamaya ve kullanmaya çalışın. Her yoğun veri işlemini paralel yöntemlerle çözmeye çalışmayın. Eğer verilerin sırası çözmeye çalıştığınız problem için kritik ise paralel işlem korkulu rüyanız olabilir. Tasarımınızı problemin özüne göre tasarlayın.

Buffer ve stream arasındaki farkı bilin. Bunlar için kütüphaneler kullanıyorsanız hangisi hangisi iyi bilin. Ne yaptığınızdan emin değilseniz internette bununla ilgili birçok kaynak var. Stream’i okuduktan sonra okuyucuyu eski yerine koyun. Bulduğunuzdan temiz bırakın! Başkasının buffer’ı ile oynamayın! Deepcopy yap geç kardeşim!

Process ve thread kavramlarını iyi bilin. Bunlar kendi çocukları ve akrabaları ile bile anlaşamazlar. Çok kavgacı tiplerdir. Bunlar burnundan kıl aldırmaz. Yeri gelir birbirini öldürür bunlar. Müdahale ettiğinizde önünüze deadlock atıp kaçarlar.

Süslemeden olmaz. O kadar derin konular biliyorsunuz ama kullanıcının önüne şöyle afilli bir web sayfası, bir android ve iOS uygulaması koymadan olmaz.

Büyük veri (big data) var dediler geldik! O kadar medikal cihazdan veri topladık, veri tabanını şişirdik, yeri geldi ağı tıkadık, işlemciyi kızarttık kamyon kamyon veri topladık. Şimdi bu kadar veriyi ne yapacağız açıkçası bilmiyoruz. Neden mi? Kullanıcılarımızın hayal gücüne yetişemiyoruz da ondan. Siz siz olun, büyük verimiz var demeyin kullanıcılarınıza!

Bir sonraki yazım bu büyük veri ile yaptığımız proje hakkında olabilir. Bu yazı serisinin devamı gelecek.

Yorumlar

Bu blogdaki popüler yayınlar

Bir Uluslararası Yazılım Şirketinin Batış Hikayesi

 Güzel başlamıştı hikaye. Yazılımcılar mutlu, kullanıcılar memnundu. Sonra pandemi başladı. Sorun para değildi. Olmayan şey huzurdu… Durdurun hype trenini, inecek var kırık kalpler durağında  — Photo by Kelly Sikkema on  Unsplash Gerçek olamayacak kadar güzeldi çalışma ortamı. Yazılımcılara istedikleri eğitim ve donanım alınıyordu, personel arası hiyerarşik bir yapı yoktu, sorumluluğun yanında yetki de veriliyordu, esnek çalışma saatleri yazılımcılara göre esnekti, izin isteyen hiç kimse geri çevrilmiyordu, pandemiden önce bile uzaktan çalışma vardı. Ne oldu bu şirkete? Nazar mı değdi? Şirketin yazılım ürünü Türkiye’de doğmuştu. Ürün birçok ülkede hem kamu tarafından hem de özel sektör tarafından kullanılıyordu. Yazılım geliştirme ekipleri hem Türkiye’de hem de diğer ülkelerde bulunuyordu. Yazılımın argesi için gelen geri bildirimlerin çoğu Türkiye’den geliyordu. Yazılımın kalbi Türkiye’de atıyordu.  Koronavirüs pandemisi nedeniyle Türkiye’de kamu kuruluşları hizmet alımı ile aldıklar

Türkiye'de Yazılım Şirketi Açmak ve Çıldırmamak

Aklında bir fikir vardı. Piyasada bunu karşılayan yazılımlar vardı ama hepsi eksikti. Hayalindeki yazılım ürününe hiçbiri yaklaşamıyordu. Gördüğü kadarıyla piyasanın böyle bir ürüne ihtiyacı vardı. Kullanıcılar mevcut ürünlerden şikayetçiydi. Kendi ekibini toplayıp hayalindeki şirketi kurmaya niyetlendi. Rüzgarlara dikkat!- Francesco Ungaro -  Pexels İşinden istifa etmeden önce piyasa araştırmasını yaptı, rakip ürünleri inceledi. En önemlisi ekibini kurdu. Ürününün MVP hali için çalışmaları başlattı. Girişim kurmak ile ilgili birçok kitap ve blog okudu, podcastler dinledi. Girişimci birkaç kişinin çayını kahvesini içti. Öngörebildiği her şey için önlemini aldı ve istifa edip kendi yazılım şirketini kurdu. Şirket kurmak için gerekli süreçler düşündüğünden daha kolay geçti. Şirketin adı ve logosu zaten hazırdı. Şirket teknoparkta yerini almıştı. Kendisi etiketlere çok önem vermiyordu ama yine de LinkedIn’deki profiline “Founder of the …” ibaresini ekledi. MVP’nin ortaya çıkması hedefini

Yazılımcılar İçin Yan Proje Oluşturma Rehberi

İster hobi amaçlı olsun ister maddi amaçlı her yazılımcının bir yan projesi olmalıdır. Peki yan proje oluştururken nelere dikkat edilmelidir, nasıl bir yan projemiz olmalıdır? Organize olalım beyler Yan proje (side project) için öncelikle bir fikir bulmak gerekli. Bu projenin amacı ne olacak? Hangi ihtiyacı çözecek? Yeni bir fikir mi olacak yoksa mevcut bir fikrin daha iyi uygulanmış bir hali mi olacak? Sadece yeni bir teknolojiyi öğrenmek için mi? Deneysel mi olacak ya da eğlenceli mi? Yoksa maddi bir getirisi olacak mı? Bu proje ürün olursa kimler kullanacak? Ürünü kullanacak kişilere erişip geri bildirim alabilecek miyim? . . . Bu soruların doğru bir cevabı yok, cevaplar size bağlı. Ama proje bir amaca hizmet edip bir ihtiyacı çözecekse, hele birde maddi getirisi olacaksa motivasyonunuz yükselecektir. Bunun yanında sadece eğlence amaçlı olan deneysel bir proje yapmak stressiz bir öğrenme ortamı sağlayacaktır. Gün içinde proje için aklınıza gelen her şeyi not alın. Not almazsan