Otonom enerji yönetimi için akıllı priz
Prize takılan cihazı harmonik imzasından tanıyan, kendi aralarında röle ağı kuran akıllı priz tasarımı. Yıldız Teknik'te yürüttüğümüz lisans çalışması, IEEE bildirisi olarak yayımlandı.
2018’de neden buradaydım
Makine öğrenmesiyle ilk ciddi işim bu oldu. 2018’de, ürün yönetimi diye bir hedefim yokken, Yıldız Teknik’te elektrik mühendisliği okurken. O dönemde makine öğrenmesi hâlâ çoğunlukla akademik bir konuydu; kütüphaneler vardı ama gömülü bir cihazın içinde çalıştırmak, veri toplamak ve etiketlemek elle yapılan işlerdi.
Bizim sorumuz basitti: bir evde hangi cihazın ne kadar enerji harcadığını, her prize ayrı sayaç koymadan bilebilir miyiz?
Çalışma Barış Eroğlu, Safa Karip ve danışmanımız Uğur Savaş Selamoğulları ile yürütüldü, IEEE formatında bir bildiri olarak yazıldı: Machine Learning Integrated Smart Plug Design for Autonomous Demand Response Implementation.
Problem
Şebeke tarafında talep yanıtı (demand response) uzun süredir konuşuluyor. Fikir şu: elektrik talebinin tepe yaptığı saatlerde bazı yükleri kısıp başka saatlere kaydırırsan şebekenin üzerindeki baskı azalıyor. Konut tarafı toplam talebin yaklaşık beşte biri, yani üzerinde oynanmaya değer bir pay.
Ama bunu otomatik yapabilmek için sistemin prize takılı şeyin ne olduğunu bilmesi gerekiyor. Çamaşır makinesini bir saat sonraya ötelemek mantıklı, buzdolabını ötelemek değil. Kullanıcıya “bu prize ne taktın” diye sormak işe yaramıyor, çünkü kimse doldurmuyor ve takılan şey sürekli değişiyor.
Bizim hedefimiz kullanıcı müdahalesini sıfıra indirmekti: priz, takılan cihazı kendisi tanısın.
Sistem
Üç parça var: ölçen donanım, birbirine veri taşıyan ağ ve tanıyan model.
Ölçüm
Prizin içinde CS5490 enerji ölçüm entegresi var. Gerilim, akım, aktif güç, reaktif güç, frekans ve güç faktörünü %1 hassasiyetle, varsayılan olarak 4000 örneklik pencerelerle ölçüyor. Bu entegrenin bizim için kritik özelliği harmonik bilgisini de verebilmesiydi; birazdan modelin başarısı buna bağlanacak.
Ölçüm verisi UART üzerinden ESP8266 ESP-01 modülüne, oradan wi-fi ile merkezî sunucuya gidiyor. ESP tarafı MicroPython ile yazıldı.
Röle ağı
Prototipte beklemediğimiz sorun kapsama oldu. Büyük evlerde bazı prizler ev wi-fi’sini yeterli seviyede görmüyor, veri gönderemiyor ve sistem o cihazı kaybediyor.
Çözüm için prizlerin birbirine yardım ettiği bir röle ağı kurduk. Her priz kendi sinyal gücünü (RSSI) ölçüyor ve eşiğe göre rol alıyor.
Sinyali eşiğin üzerinde olan priz access point moduna geçip soket sunucusu gibi davranıyor, zayıf sinyalli komşuları ona bağlanıyor. Sunucu priz kendi verisiyle birlikte istemcilerin verisini de eve bağlı wi-fi üzerinden API’ye iletiyor. API her priz için bir süre bekliyor; veri gelmezse o cihaz kayıp olarak işaretleniyor ve kullanıcıya bildiriliyor.
Bu parça bana beklediğimden fazla şey öğretti. Modelin doğruluğu ne olursa olsun, veri gelmiyorsa sistem çalışmıyor.
Arayüz ve veri
API dört uçtan ibaret: prizler veriyi /esp üzerinden yazıyor, arayüz güç değerlerini /getPowerValues ile okuyor, /turnOnOff ile cihaz açılıp kapanıyor, /missingPlug röle ağını yönetiyor. Veri MySQL’de iki tabloda tutuluyor: priz bazlı ölçümler ve cihaz bazlı tüketim.
Arayüz React ile yazılmış bir web uygulaması. Anlık akım, tüketim ve elektrik fiyatı üstte; altında priz bazlı grafikler ve cihazları tek tıkla açıp kapatabildiğin bir kontrol paneli.
Model
Cihaz tanıma için K en yakın komşu (K-NN) kullandık, scikit-learn ile. Girdi olarak akım, güç, aktif güç, reaktif güç ve harmonik bilgisi verildi. Ölçümler Yıldız Teknik’in akıllı ev laboratuvarında çamaşır makinesi, elektrikli süpürge, fırın, kettle gibi tipik ev aletleriyle toplandı.
Üç veri setini karşılaştırdık.
Birinci sette 3., 5., 7. ve 9. harmonikler var: en iyi sonuç %64,3. İkinci sette harmonik yok, yalnızca gerilim, akım, güç ve güç faktörü var: sonuç bütün K değerlerinde %51,6’da sabit kalıyor. Üçüncüsü bir kontrol denemesiydi; modeli test kümesiyle eğitip eğitim kümesinde denedik, %47,5’e düştü.
Aradaki fark asıl bulgu. Harmonikler, akım ve gerilimden daha ayırt edici. Sebebi de mantıklı: iki cihaz aynı gücü çekebilir ama motorlu bir süpürgenin ve rezistanslı bir ısıtıcının şebekeye bıraktığı bozulma aynı değil. Harmonik imza cihazın gücünü değil karakterini taşıyor.
K seçiminde tek sayıda kalmak gerekiyor ki oylama beraberliğe düşmesin. Küçük K gürültüye açık, büyük K aşırı öğrenmeye. Denemelerde K=7 civarını makul bulduk.
Ne çıkmadı
Bunu bir başarı hikâyesi olarak anlatmak isterdim ama %64 bir ürün için yeterli değil. Sistem talep yanıtını otonom yapacaksa yanlış tanıma oranının çok daha düşük olması gerekiyordu.
Bildiride de sonraki iş olarak K optimizasyonu ve veri setinin derinleştirilmesi yazıyor. Bugün baksam ilk deneyeceğim şey daha fazla veri toplamak ve tek bir anlık ölçüm yerine zaman serisi kullanmak olurdu. Cihazlar açılışta, çalışırken ve kapanışta farklı davranıyor; biz modele o davranışın yalnızca bir karesini veriyorduk.
Geriye dönüp bakınca
İki şey kaldı.
Birincisi, modelin doğruluğu sistemin en kırılgan yeri bile değildi. Wi-fi kapsaması, veri kaybı ve kullanıcının arayüzde gördüğü şey en az onun kadar belirleyiciydi. Yapay zekâ ürünlerinde bugün de savunduğum fikir buradan geliyor: model bir bileşen, ürün başka bir şey.
İkincisi, veriyi seçme işi modeli seçme işinden daha etkiliydi. Aynı algoritma, aynı cihazlar, aynı ev; sadece girdideki harmonik bilgisi %51’i %64’e taşıdı. Sonradan çalıştığım her yerde bu tekrar etti.
Bu proje aynı zamanda cihazda çalışan yapay zekâya olan ilgimin başladığı yer. Yedi yıl sonra Tacet ile aynı kısıtı yeniden seçiyorum: işlem, veriyi üreten cihazın üstünde kalsın.