Многие погодные сайты предлагают такую опцию
Решил что считать надо "надому"
Как реализовал -
создал метод calculate_realfeel для объекта WeatherStations>ws
и прописал запуск этого метода при изменении свойств
ws.tempOutside и ws.relHumOutside
в которые у меня пишутся данные от уличного датчика Температуры/влажности
Данные ветра пока беру из прогноза (у меня из openWeather)
но если у вас есть данные по ветру от погодной станции то лучше брать ws.windAverage
А вот сам метод
Код: Выделить всё
$t = $this->getProperty('tempOutside '); // температура на улице
$h = $this->getProperty('relHumOutside'); // влажность на улице
//$w = $this->getProperty('windAverage'); // усредненное значение скорости ветра на улице
$w = gg('ow_day0.wind_speed'); // данные о ветре из прогноза OpenWeather
$tF = $t *1.8+32; // перевод температуры в Farenheit
if ($t > 26.6){
// Считаем HeatIndex
$_f=-42.379 + 2.04901523*$tF + 10.14333127*$h - 0.22475541*$tF*$h - 0.00683783*$tF*$tF - 0.05481717*$h*$h + 0.00122874*$tF*$tF*$h + 0.00085282*$tF*$h*$h -0.00000199*$tF*$tF*$h*$h;
}else if ($t <= 10){
// Считаем фактор WindChild
$_f = 35.74+(0.6215*$tF)-(35.75*($w*0.16))+((0.4275*$tF)*($w*0.16));
}else{
//считаем по Rothfusz
$_f = 0.5*($tF+61+(($tF-68)*1.2)+($h*0.094));
}
// переводим в цельсии
$rf = round(($_f-32)/1.8,1);
//и пропишем значение
$this->setProperty('reelFeel',$rf);
HeatIndex считаем при Т более 26,6 градусов
WindChild при Т менее 10 градусов
а в диапазоне 10-26.6 считаем по Rothfusz
PS: Тестируем и комментируем.
PPS: Формулы нашел только в Farenheit поэтому просчеты веду в них и лишь потом обратно в C