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

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

Yazılımcı Bulamayan Girişimci

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