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

Uluslararası Yazılım Firmasında Çalışmak

Türkiye merkezli 5 ülkede ofisi olan 50’den fazla mühendisi bulunan ve müşterileri hariç 8 farklı milliyetten kişiler bulunan bir yazılım firmasında yaklaşık 11 aydır çalışmaktayım. Bu süreç boyunca hem çalıştığım şirkette hem de iletişimde bulunduğum diğer uluslararası şirketlerde gözlemlediğim noktaları paylaşmak istedim. Buradaki görüşlerim tamamen kişiseldir ve firmadan firmaya değişebilir. Eleştiriyi önce en günahsız olanınız yapsın! Photo by Kyle Glenn on Unsplash İşe giriş ve mülakat süreçleri zor. İş ilanlarını mantıklı ve açıklayıcı olarak açılıyorlar. Öyle her şeyden anlayan süper yazılımcı aramıyorlar. Şirketin ihtiyacını göz önüne alarak ve her yazılımcının şirkette kullanılan teknolojileri bilemeyeceğini göz önüne alınarak iş ilanını açılıyor. Özgeçmişimde yazan her kelime ile ilgili sorguya çekildim. Başvurduğum pozisyon için gereken yeteneklerle ilgili zor sorular soruldu. Nasıl yaptılar bilmiyorum ama şirket kültürüne uyumumu ve iletişim yeteneğimi de ölçmüşler. Açık

Kamuda Yazılımcı Ol(ma)mak

Yazılımcı olarak 8 yıl kamuda, 2 yıl özel sektörde çalıştım. Bir yandan da freelance olarak çalıştım. Yurtdışındaki firmalarla da güzel yurdumun esnafıyla da çalıştım. En garip manzara bence kamudaki yazılım manzarası. Şu anda bir kamu kurumu için geliştirilen yazılım projesini yönetiyorum. Girdiğim toplantılarda, aldığım e-postalarda, yaptığım telefon konuşmalarında eski kamu anılarım depreşti. Kağıtların arasında hayalleri yıkılmış bir yazılımcı bulabilirsiniz Kamuda çalışırken hem benim hem de arkadaşlarımın başına gelen olaylardan ve şu anda kamuda çalışmaya devam eden tanıdıklarımdan aldığım bilgilerle, kamudaki yazılım dünyasını size sanayi diliyle aktarmaya çalışacağım. Bu yazı şahsi görüşlerimi içerir. Yine de kamuda 8 yılın yeterince objektif bir bakış açısı sunacağını düşünüyorum. Kamuya yazılım projesi geliştirirken karşılaşabileceğiniz durumlar: Bir kamu kurumu ile görüşmeye başlamak için bağlantı gerekir. Kamu kurumuna “sizin şöyle bir ihtiyacınız var ben bunu çözen yazılı