OpenHab Hissedilen Sıcaklık Hesabı
Bizler gibi OpenHab üzerinde akıllı ev sistemleriyle uğraşanlar için faydalı olması adına Hissedilen Sıcaklık nasıl hesapladığıma dair yapılandırmaları paylaşmak istedik.
Hissedilen Sıcaklık hesabı, ölçüm yapılan bölgenin coğrafi konumuna göre değişiklik gösterebilmekte. Aynı şekilde, hesaplama sonucu elde edilen derecenin konfor değerine dönüştürülmesi de.
Hissedilen sıcaklığı ölçmek için öncelikle ortamın sıcaklık ve değerlerine ihtiyacımız olacak. Örneğimizde, Salonumda bulunan AeonLabs MultiSensor 6‘dan okunan değerler kullanılmıştır. Bu değerler her değiştiğinde hissedilen sıcaklığın yeniden hesaplanması gerektiği için weather.rules adıyla bir kural oluşturduk. Bu dosyanın içeriği şu şekilde;
import org.eclipse.smarthome.core.library.types.DecimalType
rule "Hissedilen sicakligi hesapla"
when
Item sensor_sicaklik changed or
Item sensor_nem changed
then
var double sonuc
var double sicaklik
var double sicaklikF
var double sicaklikF2
var double nem
var double nem2
sicaklik = 0
nem = 0
if (sensor_sicaklik.state instanceof DecimalType) {
sicaklik = (sensor_sicaklik.state as DecimalType).doubleValue
}
if (sensor_nem.state instanceof DecimalType) {
nem = (sensor_nem.state as DecimalType).doubleValue
}
sicaklikF = (sicaklik * 1.8) + 32
sicaklikF2 = Math::pow(sicaklikF,2)
nem2 = Math::pow(nem,2)
sonuc = ((0 - 42.379 + 2.04901523 * sicaklikF + 10.1433127 * nem - 0.22475541 * sicaklikF * nem - 0.00683783 * sicaklikF2 - 0.05481717 * nem2 + 0.00122874 * sicaklikF2 * nem + 0.00085282 * sicaklikF * nem2 - 0.00000199 * sicaklikF2 * nem2) - 32.0) / 1.8
sicaklik_hissedilen.postUpdate(sonuc)
end
Bu kural yardımıyla hesapladığım hissedilen sıcaklık değerini sicaklik_hissedilen alanına atıyoruz. Daha sonrada bu alanı site haritası üzerinde aşağıdaki şekilde gösteriyoruz.
Text label="Hissedilen Sıcaklık Değeri [%.1f °C]" item=sicaklik_hissedilen icon=temperature Text label="Hissedilen Sıcaklık [SCALE(humidex.scale):%s]" item=sicaklik_hissedilen icon=temperature
Dikkat ederseniz ikinci girdi de hissedilen sıcaklık değeri için konfor değeri’ni yazmaktayız. Bunun için aşağıdaki scale dönüşüm dosyasını (humidex.scale) kullanıyoruz;
[..-1[=Tanımsız [-1..27[=Soğuk/Serin [27..32[=Sıcak [32..41[=Çok Sıcak [41..54[=Tehlikeli Sıcak [54..100]=Çok Tehlikeli Sıcak ]100..]=Tanımsız