EYDefterEmre Yakut
← tüm yazılar
Ölçüm · Protokol · derin

Bir ısı sayacını okumanın üç yolu

Apartmanın kaloriferindeki sayaç ne kadar ısı harcadığını biliyor. Onu oradan almanın üç yolu var: gözle, optik kafayla, ve radyoyla. Üçünü de yazdım — ve üçü de ayrı bir dünya.

128.4ısı sayacı gözteknisyen daireye girer4.000 kapı · bir ay optik kafakızılötesi pencere · serigeçmiş dönemler · hata kaydı radyosayaç yayınlar, alıcı dinlerbinanın önünden geçerekaynı sayı, üç ayrı dünya — ve üçü de aynı uygulamanın içindeokunamayan sayaç "0" değildir; "okunamadı"dır

Kaloriferin üstünde küçük bir kutu var. Ekranında bir sayı yazıyor. O sayı, o dairenin o dönemde ne kadar ısı harcadığını gösteriyor — ve fatura tam olarak ondan çıkıyor.

Benim işimin büyük kısmı bu sayıyı oradan alıp bir veritabanına doğru şekilde koymak. Kulağa basit geliyor. Değil.

Üç yol

Birincisi göz. Teknisyen daireye girer, ekrana bakar, deftere yazar. Çalışır. Ama 4.000 daire varsa dört kişi bir ay boyunca kapı çalar, insanların yarısı evde olmaz, ve bir hanede rakam yanlış yazılırsa kimse fark etmez.

İkincisi optik kafa. Sayacın üstünde kızılötesi bir pencere var. Mıknatıslı bir okuma kafasını oraya yapıştırıyorsun, kafa sayaçla konuşuyor, sayaç kendi kayıtlarını veriyor. Sadece anlık değer değil: geçmiş dönemler, hata kayıtları, seri numarası, kalibrasyon bilgisi.

Üçüncüsü radyo. Modern sayaçlar verilerini kendiliğinden yayınlıyor. Teknisyen daireye girmiyor; binanın önünden geçerken alıcı yüzlerce sayacı topluyor. Buna sektörde walk-by deniyor; araçla yapılırsa drive-by, bina içine sabit alıcı konursa artık hiç kimse gelmiyor.

Üçü de aynı uygulamanın içinde. Uygulamanın adı ZENNER Meter Reader, .NET ile yazılı, teknisyenin dizüstünde ya da el terminalinde çalışıyor.

Optik kafanın dünyası

Optik arayüz çok eski bir standart üzerine kurulu ve bunu hissettiriyor. Seri port üzerinden, düşük hızda, adım adım konuşuyorsun:

okuyucu → sayaç :  uyanma dizisi
okuyucu → sayaç :  "kimsin?"
sayaç   → okuyucu: üretici, sürüm, desteklenen hız
okuyucu → sayaç :  "hızı yükseltelim"
okuyucu → sayaç :  "verileri ver"
sayaç   → okuyucu: kayıt bloğu

En sinsi kısım hız pazarlığı. Sayaç yavaş bir hızda başlıyor, sonra ikisi daha yükseğinde anlaşıyor. İki taraf da hızı aynı anda değiştirmek zorunda — biri erken, biri geç geçerse bağlantı sessizce ölüyor ve elinde sadece çöp bayt kalıyor.

sahada öğrendiğim

Bu tür bir hatanın masada tekrar üretilmesi neredeyse imkânsız. Laboratuvarda çalışıyor, binada çalışmıyor. Sebep genelde bayat bir seri port sürücüsü, uzatma kablosundaki gecikme, ya da USB dönüştürücünün kendi tamponu oluyor. Bu yüzden uygulamaya ham bayt kaydı koydum: ne gönderildi, ne geldi, kaç milisaniye sonra. Sahada bir okuma tutmadığında teknisyen dosyayı bana atıyor ve nedeni orada görünüyor.

Radyonun dünyası

Radyo tarafı tamamen farklı bir zihniyet. Burada kimse kimseye soru sormuyor.

Sayaç, belirli aralıklarla kısa bir telgraf yayınlıyor ve susuyor. Alıcı sadece dinliyor. Sayacın alıcıdan haberi yok, alıcının cevap verme imkânı yok. Bir telgrafı kaçırırsan bir sonrakini beklersin.

Telgrafın içi de sıkıştırılmış. Her alan bir veri kaydı: ne ölçüldüğü, hangi birimde, hangi katsayıyla, hangi zaman dilimine ait. Örneğin bir kaydın başlığı “enerji, kilowatt-saat, çarpan 10, geçen dönem” diyor olabiliyor.

[ başlık ]   üretici · seri no · sürüm · cihaz tipi
[ şifreli gövde ]
   → çöz
[ veri kayıtları ]
   kayıt 1 : enerji        · 128.4 kWh  · güncel
   kayıt 2 : enerji        · 96.1 kWh   · geçen dönem
   kayıt 3 : hacim         · 41.2 m³
   kayıt 4 : gidiş sıcaklığı · 54 °C
   kayıt 5 : hata bayrakları · 0x00

Gövde şifreli, çünkü tüketim verisi kişisel veri. Bir binanın önünden geçen herkes kimin ne kadar ısıttığını okuyabilseydi bu bir mahremiyet sorunu olurdu. Her sayacın kendi anahtarı var ve okuyucu o anahtarı yalnız yetkili olduğu sayaçlar için alıyor.

Lisans tarafı: yazılım kimin?

Bu noktada teknik olmayan bir sorun çıkıyor. Okuma kütüphanesi üretici lisansına tabi. Yani uygulamayı kurduğun her cihaz için ayrı bir hak gerekiyor.

Çözüm bir lisans sunucusu oldu. Uygulama ilk açılışta cihazın donanım kimliğini üretiyor, sunucuya soruyor, karşılığında süreli bir anahtar alıyor. Süre dolduğunda yeniliyor. Sunucu tarafını sonradan ayrı bir servise taşıdım — BZT Service Console.

buradaki kural

Paylaşılan gizli anahtar asla istemciye inmez. İmzayı sunucu üretir, uygulama yalnız doğrular. Bu ayrımı bir kez bozarsan, uygulamayı inceleyen herkes kendi lisansını üretebilir hale gelir. Masaüstü bir uygulamada sır saklayamazsın — sadece sırrı gerektiren kararı başka yere taşıyabilirsin.

Ve donanımsız çözme

En çok işime yarayan özellik en sonda geldi: kaydedilmiş bir telgrafı, elinde hiç donanım olmadan yeniden çözebilen bir yönetici aracı.

Sebep şuydu: sahadan “bu sayacı okuyamıyoruz” diye bir bildirim geldiğinde tek yapabildiğim oraya gitmekti. Şimdi teknisyen ham telgrafı gönderiyor, ben masamda çözüyorum ve sorunun sayaçta mı, anahtarda mı, yoksa okuyucunun kendisinde mi olduğunu görüyorum.

Bu, sahadaki bir sorunu ofiste teşhis edebilmek demek. Bir ekip için bunun değeri, yazması geçen iki günden kat kat fazla.

Ne öğrendim

Ölçüm sistemlerinde asıl zorluk matematik değil, fiziksel dünyanın belirsizliği. Kablo gevşek olabilir, pil bitmiş olabilir, radyo telgrafı asansör boşluğunda kaybolabilir, sayaç ters takılmış olabilir.

Yazılımın işi bu belirsizliği yok saymak değil, kaydetmek. Okunamayan bir sayaç “0” değildir; “okunamadı”dır. Bu ikisini karıştıran bir sistem, birinin faturasını yanlış keser.

ÖlçümProtokol