Example #1
0
    if ($haveUV) {
        $uvTrends = explode('#', $ws['uvTrends']);
    }
    if ($haveSolar) {
        $solarTrends = explode('#', $ws['solarTrends']);
    }
    $end_trends = count($minutes);
    for ($i = 0; $i < $end_trends; $i++) {
        $wsTrends[$i]['min'] = $minutes[$i];
        $wsTrends[$i]['temp'] = wsConvertTemperature($tempTrends[$i], $from_temp);
        $wsTrends[$i]['wind'] = wsConvertWindspeed($windTrends[$i], $from_wind);
        $wsTrends[$i]['gust'] = wsConvertWindspeed($gustTrends[$i], $from_wind);
        $wsTrends[$i]['dir'] = wsConvertWinddir($wdirTrends[$i]);
        $wsTrends[$i]['hum'] = $humiTrends[$i];
        $wsTrends[$i]['baro'] = wsConvertBaro($baroTrends[$i], $from_baro);
        $wsTrends[$i]['rain'] = wsConvertRainfall($rainTrends[$i], $from_rain);
        if ($haveUV) {
            $wsTrends[$i]['uv'] = $uvTrends[$i];
        }
        if ($haveSolar) {
            $wsTrends[$i]['sol'] = $solarTrends[$i];
        }
    }
}
if ($wp == 'MB') {
    // clean rain
    $count = count($wsTrends);
    for ($i = 1; $i < $count; $i++) {
        $wsTrends[$i]['rain'] = $ws['rainToday'] - $wsTrends[$i]['rain'];
    }
}
Example #2
0
$ws['rainRateMaxYday'] = wsConvertRainfall($wx['rainRateMaxYday'], $from_rain);
$ws['lastRainTip'] = $ws['lastRained'] = date('YmdHis', strtotime($wx['lastRained']));
$ws['rainToday'] = wsConvertRainfall($wx['rainToday'], $from_rain);
$ws['rainYday'] = wsConvertRainfall($wx['rainYday'], $from_rain);
#$ws['rainWeek']                = wsConvertRainfall     ($wx['rainWeek']),$from_rain);
$ws['rainMonth'] = wsConvertRainfall($wx['rainMonth'], $from_rain);
$ws['rainYear'] = wsConvertRainfall($wx['rainYear'], $from_rain);
#$ws['rainTodayLow']	        = wsConvertRainfall     ($wx['rainTodayLow'],$from_rain);
#$ws['rainYdayLow']	        = wsConvertRainfall     ($wx['rainYdayLow'],$from_rain);
#$ws['rainYdayHigh']	        = wsConvertRainfall     ($wx['rainYdayHigh'],$from_rain);
#$ws['rainRateYday']	        = wsConvertRainfall     ($wx['rainRateYday'],$from_rain);
#$ws['rainDayMnth'] 		=                        $wx['rainDayMnth']*1.0;
#$ws['rainDayYear'] 		=                        $wx['rainDayYear']*1.0;
#$ws['rainDaysWithNo'] 		=                        $wx['rainDaysWithNo']*1.0;
# ------------------------------------------ EVAPOTRANSPIRATION --------
$ws['etToday'] = wsConvertRainfall($wx['etToday'], $from_rain);
#$ws['etYday'] 		        = wsConvertRainfall     ($wx['etYday'],$from_rain);
#$ws['etMonth'] 		= wsConvertRainfall     ($wx['etMonth'],$from_rain);
#$ws['etYear'] 		        = wsConvertRainfal      l($wx['etYear'],$from_rain);
# ------------------------------------------ wind  ---------------------
$from_wind = trim(strtolower($wx['fromwind']));
//  "m/s", "mph", "km/h", "kts" ?? 'kmh' 'Bft'??  windrun  "km", "miles",
$ws['windAct'] = wsConvertWindspeed($wx['windAct'], $from_wind);
$ws['gustAct'] = wsConvertWindspeed($wx['gustAct'], $from_wind);
$ws['windActDsc'] = wsConvertWinddir($wx['windActDir']);
// $wx['windActDsc']
$ws['windActDir'] = $wx['windActDir'];
$ws['windAvgDir'] = $wx['windAvgDir'];
$ws['windBeafort'] = $wx['windBeafort'];
$ws['gustMaxToday'] = wsConvertWindspeed($wx['gustMaxToday'], $from_wind);
$ws['gustMaxTodayTime'] = cu_time($wx['gustMaxTodayTime']);
Example #3
0
$ws['rainHourAct'] = $ws['rainHour'] = wsConvertRainfall($wx['rainHourAct'], $from_rain);
$ws['rainRateMaxToday'] = wsConvertRainfall($wx['rainRateMaxToday'], $from_rain);
$ws['rainRateMaxYday'] = '';
#wsConvertRainfall     ($wx['rainRateMaxYday'],$from_rain);
$ws['lastRainTip'] = '';
#$ws['lastRained']    = date('YmdHis',strtotime($wx['lastRained']));
$ws['rainToday'] = wsConvertRainfall($wx['rainToday'], $from_rain);
$ws['rainYday'] = wsConvertRainfall($wx['rainYday'], $from_rain);
#$ws['rainWeek']                 = wsConvertRainfall     ($wx['rainWeek'],$from_rain);
$ws['rainMonth'] = wsConvertRainfall($wx['rainMonth'], $from_rain);
$ws['rainYear'] = wsConvertRainfall($wx['rainYear'], $from_rain);
$ws['rainAll'] = wsConvertRainfall($wx['rainAll'], $from_rain);
$ws['rainTodayLow'] = wsConvertRainfall($wx['rainTodayLow'], $from_rain);
$ws['rainYdayLow'] = wsConvertRainfall($wx['rainYdayLow'], $from_rain);
$ws['rainYdayHigh'] = wsConvertRainfall($wx['rainYdayHigh'], $from_rain);
$ws['rainRateYday'] = wsConvertRainfall($wx['rainRateYday'], $from_rain);
$ws['rainDayMnth'] = $wx['rainDayMnth'] * 1.0;
$ws['rainDayYear'] = $wx['rainDayYear'] * 1.0;
$ws['rainDaysWithNo'] = $wx['rainDaysWithNo'] * 1.0;
# ------------------------------------------ EVAPOTRANSPIRATION --------
$ws['etToday'] = '';
# wsConvertRainfall     ($wx['etToday'],$from_rain);
$ws['etYday'] = '';
$ws['etMonth'] = '';
$ws['etYear'] = '';
$ws['etAll'] = '';
# ------------------------------------------ wind  ---------------------
$from_wind = trim(strtolower($wx['fromwind']));
//  "m/s", "mph", "km/h", "kts" ?? 'kmh' 'Bft'??  windrun  "km", "miles",
$ws['windAct'] = wsConvertWindspeed($wx['windAct'], $from_wind);
$ws['gustAct'] = wsConvertWindspeed($wx['gustAct'], $from_wind);
Example #4
0
$ws['rainTodayLow'] = wsConvertRainfall($wx['rainTodayLow'], $from_rain);
$ws['rainYdayLow'] = wsConvertRainfall($wx['rainYdayLow'], $from_rain);
$ws['rainYdayHigh'] = wsConvertRainfall($wx['rainYdayHigh'], $from_rain);
$ws['rainRateYday'] = wsConvertRainfall($wx['rainRateYday'], $from_rain);
$ws['rainDayMnth'] = 'n/a';
#               $wx['rainDayMnth']*1.0;
$ws['rainDayYear'] = 'n/a';
#               $wx['rainDayYear']*1.0;
$ws['rainDaysWithNo'] = 'n/a';
#               $wx['rainDaysWithNo']*1.0;
# ------------------------------------------ EVAPOTRANSPIRATION --------
$ws['etToday'] = wsConvertRainfall($wx['etToday'], $from_rain);
$ws['etYday'] = wsConvertRainfall($wx['etYday'], $from_rain);
$ws['etMonth'] = wsConvertRainfall($wx['etMonth'], $from_rain);
$ws['etYear'] = wsConvertRainfall($wx['etYear'], $from_rain);
$ws['etAll'] = wsConvertRainfall($wx['etAll'], $from_rain);
# ------------------------------------------ wind  ---------------------
$from_wind = trim(strtolower($wx['fromwind']));
//  "m/s", "mph", "km/h", "kts" ?? 'kmh' 'Bft'??  windrun  "km", "miles",
$ws['windAct'] = wsConvertWindspeed($wx['windAct'], $from_wind);
$ws['gustAct'] = wsConvertWindspeed($wx['gustAct'], $from_wind);
$ws['windActDsc'] = $wx['windActDsc'];
//NNE
$ws['windActDir'] = $wx['windActDir'] * 1.0;
// 20 deg
$ws['windAvgDir'] = $wx['windAvgDir'] * 1.0;
$ws['windBeafort'] = $wx['windBeafort'];
$ws['gustMaxToday'] = wsConvertWindspeed($wx['gustMaxToday'], $from_wind);
$ws['gustMaxTodayTime'] = mbdate($wx['gustMaxTodayTime']);
$ws['gustMaxYday'] = wsConvertWindspeed($wx['gustMaxYday'], $from_wind);
$ws['gustMaxYdayTime'] = mbdate($wx['gustMaxYTime']);
Example #5
0
// 4 		Days with rain for the month
$ws['rainDayYear'] = '65';
// 65	Days with rain for the year
$ws['rainRateAct'] = wsConvertRainfall('0.0', $from);
$ws['rainRateToday'] = wsConvertRainfall('0.0', $from);
$ws['rainHour'] = wsConvertRainfall('0.0', $from);
$ws['rainToday'] = wsConvertRainfall('0.0', $from);
$ws['rainYday'] = wsConvertRainfall('0.0', $from);
$ws['rainMonth'] = wsConvertRainfall('2.0 mm', $from);
$ws['rainYear'] = wsConvertRainfall('168.4 mm', $from);
$ws['rainDaysWithNo'] = '2';
$ws['rainWeek'] = wsConvertRainfall('1.8', $from);
# ------------------------------------------ EVAPOTRANSPIRATION --------
$ws['etToday'] = wsConvertRainfall('0.0', $from);
$ws['etYday'] = wsConvertRainfall('0.0', $from);
$ws['etMonth'] = wsConvertRainfall('0.0', $from);
# ------------------------------------------ wind  ---------------------
$to = $SITE['uomWind'];
$from = 'kts';
//  = 'kts','mph','kmh','km/h','m/s','Bft'
$ws['windActDsc'] = 'WSW';
$ws['windBeafort'] = '0';
$ws['gustMaxTodayTime'] = wdDate('08:58');
$ws['gustMaxYdayTime'] = wdDate('16:59');
$ws['gustMaxMonthTime'] = wdYMD('2015', '4', '1');
$ws['gustMaxYearTime'] = wdYMD('2015', '3', '31');
$ws['windAct'] = wsConvertWindspeed('1.1', $from);
$ws['gustAct'] = wsConvertWindspeed('0.0', $from);
$ws['gustMaxHour'] = wsConvertWindspeed('19:12', $from);
$ws['gustMaxToday'] = wsConvertWindspeed('5.2 kts', $from);
$ws['gustMaxYday'] = wsConvertWindspeed('13.0', $from);
Example #6
0
$windlimit = 6;
# At wich (average) windspeed in Beaufort the extra Beaufort text is shown?
#
# Soil & Grass-forecast
$sgdepth1 = '4';
$sgdepth2 = '8';
if (isset($SITE['soilUsed']) && $SITE['soilUsed'] == true) {
    # we have soilsensors in use
    $sgdepth1 = $SITE['soilDepth_1'];
    if ($SITE['soilCount'] > 1) {
        $sgdepth2 = $SITE['soilDepth_2'];
    }
}
$sgdepth1 = wsConvertRainfall($sgdepth1, $uoms[4], $uomsTo[4]) . $SITE['uomSnow'];
# Depth for Soil 1
$sgdepth2 = wsConvertRainfall($sgdepth2, $uoms[4], $uomsTo[4]) . $SITE['uomSnow'];
# Depth for Soil 2
#
$soilWanted = true;
// set to false if no soil table is wanted even if wxsim supplies the data
#
# array with all possible fields and their specifications
$fields = array();
# for every field there are the folowings specs
# loc 		= location in data row = fieldnumber. 0 = not used
# unit		= unit of measurement. For lastret.txt equals to defaults in settings. latest.csv contains own uom
# nameTxt	= fieldname used in  lastret.txt
# nameCsv	= fieldname used in latest.csv
$fields['temp'] = array('loc' => 0, 'unit' => 0, 'nameTxt' => 'AIR', 'nameCsv' => 'Temperature');
$fields['hum'] = array('loc' => 0, 'unit' => '%', 'nameTxt' => '%RH', 'nameCsv' => 'Rel.Hum.');
$fields['tempMax'] = array('loc' => 0, 'unit' => 0, 'nameTxt' => 'TMAX', 'nameCsv' => 'Hi Temp');
function load_realtime_file($realtime_all, &$error_display)
{
    global $SITE, $ws, $wsDebug, $fileTimeUpload;
    #
    if ($SITE['realtime'] != 'none') {
        if (!isset($SITE['realtime_file'])) {
            $error_display = 'realtime = ' . $SITE['realtime'] . ' but: no realtime-file specified. ';
            ws_message($realtime_all . '(' . __LINE__ . '): ' . $error_display . '- continue  -->');
            return;
        }
        if (!is_file($SITE['realtime_file'])) {
            $error_display = 'realtime = ' . $SITE['realtime'] . ' but: no ' . $SITE['realtime_file'] . ' found. ';
            ws_message($realtime_all . '(' . __LINE__ . '): ' . $error_display . '- continue  -->');
            return;
        }
        if (isset($SITE['realtime_file2']) && !is_file($SITE['realtime_file2'])) {
            $error_display = 'realtime file 2 = ' . $SITE['realtime_file2'] . ' but: no ' . $SITE['realtime_file2'] . ' found. ';
            ws_message($realtime_all . '(' . __LINE__ . '): ' . $error_display . '- continue  -->');
        }
    }
    ws_message($realtime_all . '(' . __LINE__ . '): ' . $SITE['realtime_file'] . ' try to load.  -->');
    $string = file_get_contents($SITE['realtime_file']);
    $filetime = filemtime($SITE['realtime_file']);
    if (isset($fileTimeUpload)) {
        if (30 + $filetime < $fileTimeUpload) {
            ws_message($realtime_all . '(' . __LINE__ . '): realtime file to old Tagfile = ' . $fileTimeUpload . ' realtimefile = ' . $filetime . ' -->');
            return;
        }
    }
    #
    switch ($SITE['realtime']) {
        case 'wflash':
            $pos = strpos(substr($string, 0, 10), 'F=');
            if (!$pos === false) {
                $string = substr($string, $pos + 2);
            }
            $arr_rt = explode(",", $string);
            $fromTemp = 'F';
            // ='&deg;C', ='&deg;F'
            $fromWind = 'mPh';
            // =' km/h', =' kts', =' m/s', =' mph'
            $fromRain = 'in';
            // =' mm', =' in'
            $fromBaro = 'inHg';
            // =' hPa', =' mb', =' inHg'
            #
            $ws['rtTime'] = wdDate(trim($arr_rt[1]));
            $ws['tempAct'] = (string) wsConvertTemperature($arr_rt[9], $fromTemp);
            $ws['tempActInside'] = (string) wsConvertTemperature($arr_rt[8], $fromTemp);
            #               $ws['tempDelta']	= (string)wsConvertTemperature($arr_rt[37],    $fromTemp);
            $temp1hourAgo = (string) wsConvertTemperature($arr_rt[9], $fromTemp, $fromTemp) - (string) wsConvertTemperature($arr_rt[37], $fromTemp, $fromTemp);
            $ws['tempDelta'] = $ws['tempAct'] - wsConvertTemperature($temp1hourAgo, $fromTemp);
            $ws['dewpAct'] = (string) wsConvertTemperature($arr_rt[24], $fromTemp);
            $ws['appTemp'] = (string) wsConvertTemperature($arr_rt[29], $fromTemp);
            # ??
            $ws['chilAct'] = (string) wsConvertTemperature($arr_rt[21], $fromTemp);
            $ws['heatAct'] = (string) wsConvertTemperature($arr_rt[23], $fromTemp);
            $ws['windAct'] = (string) wsConvertWindspeed($arr_rt[4], $fromWind);
            $ws['windActDir'] = 1.0 * $arr_rt[3];
            $ws['gustAct'] = (string) wsConvertWindspeed($arr_rt[5], $fromWind);
            $ws['windBeafort'] = (string) wsBeaufortNumber($ws['windAct'], $SITE['uomWind']);
            $ws['windActDir'] = (string) round($arr_rt[3]);
            $ws['baroAct'] = (string) wsConvertBaro($arr_rt[25], $fromBaro);
            $ws['baroDelta'] = (string) wsConvertBaro($arr_rt[53], $fromBaro);
            $ws['humiAct'] = (string) round($arr_rt[7]);
            $ws['humiInAct'] = (string) round($arr_rt[6]);
            $ws['uvAct'] = (string) round($arr_rt[19], 1);
            #               $ws['uvMaxToday']       = (string)round($arr_rt[46],1);
            $ws['solarAct'] = (string) round($arr_rt[20], 1);
            # process wflash2.txt
            if (isset($SITE['realtime_file2'])) {
                ws_message($realtime_all . '(' . __LINE__ . '): ' . $SITE['realtime_file2'] . ' try to load.  -->');
                $string = file_get_contents($SITE['realtime_file2']);
                $pos = strpos(substr($string, 0, 10), 'S=');
                if (!$pos === false) {
                    $string = substr($string, 9);
                }
                $arr_rt = explode(",", substr($string, 2));
                $rtdate = wdDate(trim($arr_rt[0]));
                if ($rtdate > $ws['rtTime']) {
                    $ws['rtTime'] = $rtdate;
                }
                $ws['tempMinToday'] = (string) wsConvertTemperature($arr_rt[92], $fromTemp);
                $ws['tempMaxToday'] = (string) wsConvertTemperature($arr_rt[36], $fromTemp);
                $ws['dewpMinToday'] = (string) wsConvertTemperature($arr_rt[107], $fromTemp);
                $ws['dewpMaxToday'] = (string) wsConvertTemperature($arr_rt[51], $fromTemp);
                $ws['chilMinToday'] = (string) wsConvertTemperature($arr_rt[104], $fromTemp);
                $ws['heatMaxToday'] = (string) wsConvertTemperature($arr_rt[50], $fromTemp);
                $ws['gustMaxToday'] = (string) wsConvertWindspeed($arr_rt[32], $fromWind);
                $ws['windAvgDir'] = (string) $arr_rt[2];
                $ws['baroMinToday'] = (string) wsConvertBaro($arr_rt[108], $fromBaro);
                $ws['baroMaxToday'] = (string) wsConvertBaro($arr_rt[52], $fromBaro);
                $ws['rainToday'] = (string) wsConvertRainfall($arr_rt[254], $fromRain);
                $ws['rainRateAct'] = (string) wsConvertRainfall($arr_rt[257], $fromRain);
                $ws['rainRateToday'] = (string) wsConvertRainfall($arr_rt[150], $fromRain);
                $ws['humiMinToday'] = (string) round($arr_rt[90]);
                $ws['humiMaxToday'] = (string) round($arr_rt[34]);
                $ws['windAvgDir'] = (string) round($arr_rt[2]);
                $ws['solarMaxToday'] = (string) $arr_rt[47];
                $ws['uvMaxToday'] = (string) round($arr_rt[46], 1);
            }
            // eo realtimefile 2
            break;
        case 'json':
            $oldDegree = iconv('UTF-8', 'windows-1252//TRANSLIT', '°');
            // clean for nonjson characters
            $from = array('&deg;', '°', $oldDegree);
            $string = str_replace($from, '', $string);
            #
            if ($SITE['WXsoftware'] == 'WC') {
                // uses decimal , no point
                $string = str_replace(',', '.', $string);
                $string = str_replace('|', ',', $string);
            }
            $arr_rt = json_decode($string, true);
            $fromTemp = str_replace('&#176;', '', $arr_rt['tempunit']);
            $fromWind = $arr_rt['windunit'];
            $fromRain = $arr_rt['rainunit'];
            $fromBaro = $arr_rt['pressunit'];
            $ws['rtTime'] = wdDate($arr_rt['date']);
            $ws['tempAct'] = (string) wsConvertTemperature($arr_rt['temp'], $fromTemp);
            // "temp":"4,6",
            $ws['tempActInside'] = (string) wsConvertTemperature($arr_rt['intemp'], $fromTemp);
            // "intemp":"18,7",
            $ws['dewpAct'] = (string) wsConvertTemperature($arr_rt['dew'], $fromTemp);
            // "dew":"3,3",
            $ws['appTemp'] = (string) wsConvertTemperature($arr_rt['apptemp'], $fromTemp);
            $ws['chilAct'] = (string) wsConvertTemperature($arr_rt['wchill'], $fromTemp);
            $ws['windAct'] = (string) wsConvertWindspeed($arr_rt['wlatest'], $fromWind);
            $ws['windBeafort'] = (string) wsBeaufortNumber($ws['windAct'], $SITE['uomWind']);
            $ws['gustAct'] = (string) wsConvertWindspeed($arr_rt['wgust'], $fromWind);
            $ws['windActDir'] = (string) $arr_rt['bearing'];
            $ws['windAvgDir'] = (string) $arr_rt['avgbearing'];
            $ws['baroAct'] = (string) wsConvertBaro($arr_rt['press'], $fromBaro);
            $ws['rainToday'] = (string) wsConvertRainfall($arr_rt['rfall'], $fromRain);
            $ws['rainRateAct'] = (string) wsConvertRainfall($arr_rt['rrate'], $fromRain);
            $ws['humiAct'] = (string) $arr_rt['hum'];
            $ws['humiInAct'] = (string) $arr_rt['inhum'];
            $ws['uvAct'] = (string) $arr_rt['UV'];
            if ($ws['uvAct'] > $ws['uvMaxToday']) {
                $ws['uvMaxToday'] = $ws['uvAct'];
            }
            $ws['solarAct'] = (string) $arr_rt['SolarRad'];
            if ($ws['solarAct'] > $ws['solarMaxToday']) {
                $ws['solarMaxToday'] = $ws['solarAct'];
            }
            break;
        case 'cltrw':
            $oldDegree = iconv('UTF-8', 'windows-1252//TRANSLIT', '°');
            $from = array('&deg;', '°', $oldDegree);
            $string = trim(str_replace($from, '', $string));
            $string = preg_replace("/[\r\n]+[\\s\t]*[\r\n]+/", "\n", $string);
            $arr_rt = explode(" ", $string);
            if ($arr_rt[0] != '12345') {
                $errorfile = substr($string, 0, 20);
                ws_message($realtime_all . '(' . __LINE__ . '): This file (' . $SITE['realtime_file'] . ') seems not to be a ' . $SITE['realtime'] . ' type file  
' . $errorfile . ' -->');
                return;
            }
            $fromTemp = 'c';
            $fromWind = 'kts';
            $fromRain = 'mm';
            $fromBaro = 'hpa';
            $arr = explode('-', $arr_rt['32']);
            $last = count($arr) - 1;
            $time = trim(str_replace('_', ' ', $arr[$last]));
            $ws['rtTime'] = wdDate($time);
            $ws['tempAct'] = (string) wsConvertTemperature($arr_rt['4'], $fromTemp);
            $ws['tempActInside'] = (string) wsConvertTemperature($arr_rt['12'], $fromTemp);
            $ws['dewpAct'] = (string) wsConvertTemperature($arr_rt['72'], $fromTemp);
            $ws['appTemp'] = (string) wsConvertTemperature($arr_rt['130'], $fromTemp);
            $ws['chilAct'] = (string) wsConvertTemperature($arr_rt['44'], $fromTemp);
            $ws['windAct'] = (string) wsConvertWindspeed($arr_rt['1'], $fromWind);
            $ws['windBeafort'] = (string) wsBeaufortNumber($ws['windAct'], $SITE['uomWind']);
            $ws['gustAct'] = (string) wsConvertWindspeed($arr_rt['2'], $fromWind);
            $ws['windActDir'] = (string) $arr_rt['3'];
            $ws['windAvgDir'] = (string) $arr_rt['117'];
            $ws['baroAct'] = (string) wsConvertBaro($arr_rt['6'], $fromBaro);
            $ws['rainToday'] = (string) wsConvertRainfall($arr_rt['7'], $fromRain);
            $ws['rainRateAct'] = (string) wsConvertRainfall($arr_rt['10'], $fromRain);
            $ws['humiAct'] = (string) $arr_rt['5'];
            $ws['uvAct'] = (string) $arr_rt['79'];
            $ws['solarAct'] = (string) $arr_rt['127'];
            break;
        case 'http':
            $pos = strpos(substr($string, 0, 20), '|', 0);
            if (!$pos) {
                $split_char = ',';
            } else {
                $split_char = '|';
            }
            $arr_rt = explode($split_char, $string);
            #	$arr_rt[nr]
            #       0       1		2		3		4       5		6		7		8		9
            # [hh]:[mm],[th0temp-act],[th0temp-dmin],[th0temp-dmax],[thb0temp-act],[th0dew-act],[th0dew-dmin],[th0dew-dmax],[wind0chill-act],[wind0chill-dmin],
            #	10		11			12		13		14		15		16		17			18		19
            # [wind0wind-act],[wind0avgwind-act],[wind0wind-max10],[wind0wind-dmax],[wind0dir-act],[wind0dir-avg10:--],[thb0seapress-act],[thb0seapress-dmin],[thb0seapress-dmax],[thb0seapress-ymin],
            #	20		21			22		23		24	   25		26		27		28		29
            # [thb0seapress-ymax],[rain0total-daysum],[rain0rate-act],[rain0rate-dmax],[th0hum-act],[th0hum-dmin],[th0hum-dmax],[thb0hum-act],[th0temp-val60:--],[th0temp-dmintime],
            #	30		31			32		33		34			35		36		37				38			39
            # [th0temp-dmaxtime],[th0dew-dmintime],[th0dew-dmaxtime],[wind0chill-dmin],[rain0rate-dmaxtime],[th0hum-dmintime],[th0hum-dmaxtime],[thb0seapress-dmintime],[thb0seapress-dmaxtime],[thb0seapress-val60:--],
            #		40		41			42		43		44		45		46			47		48				49
            # [wind0wind-act=bft.0],[wind0wind-dmaxtime],[wind0avgwind-dmax],[uv0index-act:--],[sol0rad-act:--],[sol0rad-hmax:--],[sol0rad-dmax:--],[mbsystem-swversion],[mbsystem-buildnum],[YYYY]:[MM]:[DD]:[Uhh]:[Umm]:[Uss]
            #       50
            #[forecast-text]
            $ws['rtTime'] = wdDate(trim($arr_rt['0']));
            $ws['tempAct'] = (string) wsConvertTemperature($arr_rt[1], 'c');
            $ws['dewpAct'] = (string) wsConvertTemperature($arr_rt[5], 'c');
            $ws['chilAct'] = (string) wsConvertTemperature($arr_rt[8], 'c');
            $ws['chilMinToday'] = (string) wsConvertTemperature($arr_rt[9], 'c');
            $ws['windAct'] = (string) wsConvertWindspeed($arr_rt[11], 'm/s');
            $ws['windBeafort'] = (string) wsBeaufortNumber($ws['windAct'], $SITE['uomWind']);
            $ws['gustAct'] = (string) wsConvertWindspeed($arr_rt[12], 'm/s');
            $ws['windActDir'] = (string) $arr_rt[14];
            $ws['windAvgDir'] = (string) $arr_rt[15];
            $ws['baroAct'] = (string) wsConvertBaro($arr_rt[16], 'hpa');
            $ws['rainToday'] = (string) wsConvertRainfall($arr_rt[21], 'mm');
            $ws['rainRateAct'] = (string) wsConvertRainfall($arr_rt[22], 'mm');
            $ws['humiAct'] = (string) $arr_rt[24];
            $ws['humiInAct'] = (string) $arr_rt[27];
            $ws['uvAct'] = (string) $arr_rt[43];
            $ws['solarAct'] = (string) $arr_rt[44];
            break;
        case 'weatherlink':
            #echo $string; exit;
            $arr = explode("\n", $string);
            #                var_dump ($arr); exit;
            $end = count($arr);
            for ($n = 0; $n < $end; $n++) {
                $line = trim($arr[$n]);
                if ($line == '') {
                    continue;
                }
                $substr = substr($line, 1, 5);
                if ($substr == '-----') {
                    continue;
                }
                if (substr($line, 0, 1) != '|') {
                    continue;
                }
                list($skip, $name, $content) = explode('|', $line . '|');
                $name = trim($name);
                $content = trim($content);
                #                       if ($content  == '' ) {ws_message (  $startEcho.$tagsScript.'('.__LINE__.'):empty line '.$n.' name '.$name .$endEcho.PHP_EOL;continue; }
                $arr_rt[$name] = $content;
            }
            #                var_dump ($arr_rt); exit;
            $oldDegree = iconv('UTF-8', 'windows-1252//TRANSLIT', '°');
            $from = array('&deg;', '°', $oldDegree);
            $arr_rt['tempunit'] = str_replace($from, '', $arr_rt['tempunit']);
            $arr_rt['windunit'] = str_replace('r', '', $arr_rt['windunit']);
            $fromTemp = $arr_rt['tempunit'];
            $fromWind = $arr_rt['windunit'];
            $fromRain = $arr_rt['rainunit'];
            $fromBaro = $arr_rt['pressunit'];
            $ws['rtTime'] = wdDate($arr_rt['date']);
            $ws['rtVersion'] = $arr_rt['rtVersion'];
            $ws['tempAct'] = (string) wsConvertTemperature($arr_rt['temp'], $fromTemp);
            // "temp":"4,6",
            $ws['tempActInside'] = (string) wsConvertTemperature($arr_rt['intemp'], $fromTemp);
            // "intemp":"18,7",
            $ws['dewpAct'] = (string) wsConvertTemperature($arr_rt['dew'], $fromTemp);
            // "dew":"3,3",
            $ws['chilAct'] = (string) wsConvertTemperature($arr_rt['wchill'], $fromTemp);
            $ws['windAct'] = (string) wsConvertWindspeed($arr_rt['wlatest'], $fromWind);
            $ws['windBeafort'] = (string) wsBeaufortNumber($ws['windAct'], $SITE['uomWind']);
            $ws['gustAct'] = (string) wsConvertWindspeed($arr_rt['wgust'], $fromWind);
            $ws['windActDir'] = (string) $arr_rt['bearing'];
            $ws['windAvgDir'] = (string) $arr_rt['avgbearing'];
            $ws['baroAct'] = (string) wsConvertBaro($arr_rt['press'], $fromBaro);
            $ws['rainToday'] = (string) wsConvertRainfall($arr_rt['rfall'], $fromRain);
            $ws['rainRateAct'] = (string) wsConvertRainfall($arr_rt['rrate'], $fromRain);
            $ws['humiAct'] = (string) $arr_rt['hum'];
            $ws['uvAct'] = (string) $arr_rt['UV'];
            if ($ws['uvAct'] > $ws['uvMaxToday']) {
                $ws['uvMaxToday'] = $ws['uvAct'];
            }
            $ws['solarAct'] = (string) $arr_rt['SolarRad'];
            if ($ws['solarAct'] > $ws['solarMaxToday']) {
                $ws['solarMaxToday'] = $ws['solarAct'];
            }
            break;
        default:
            ws_message($realtime_all . '(' . __LINE__ . '): unknown realtime type ' . $SITE['realtime'] . ' found    -->');
    }
}
Example #8
0
$ws['rainYday'] = wsConvertRainfall($wx['rainYday'], $from_rain);
$ws['rainWeek'] = wsConvertRainfall($wx['rainWeek'], $from_rain);
$ws['rainMonth'] = wsConvertRainfall($wx['rainMonth'], $from_rain);
$ws['rainYear'] = wsConvertRainfall($wx['rainYear'], $from_rain);
$ws['rainTodayLow'] = wsConvertRainfall($wx['rainTodayLow'], $from_rain);
$ws['rainYdayLow'] = wsConvertRainfall($wx['rainYdayLow'], $from_rain);
$ws['rainYdayHigh'] = wsConvertRainfall($wx['rainYdayHigh'], $from_rain);
$ws['rainRateYday'] = wsConvertRainfall($wx['rainRateYday'], $from_rain);
$ws['rainDayMnth'] = $wx['rainDayMnth'] * 1.0;
$ws['rainDayYear'] = $wx['rainDayYear'] * 1.0;
$ws['rainDaysWithNo'] = $wx['rainDaysWithNo'] * 1.0;
# ------------------------------------------ EVAPOTRANSPIRATION --------
$ws['etToday'] = wsConvertRainfall($wx['etToday'], $from_rain);
$ws['etYday'] = wsConvertRainfall($wx['etYday'], $from_rain);
$ws['etMonth'] = wsConvertRainfall($wx['etMonth'], $from_rain);
$ws['etYear'] = wsConvertRainfall($wx['etYear'], $from_rain);
# ------------------------------------------ wind  ---------------------
$from_wind = trim(strtolower($wx['fromwind']));
//  "m/s", "mph", "km/h", "kts" ?? 'kmh' 'Bft'??  windrun  "km", "miles",
$ws['windAct'] = wsConvertWindspeed($wx['windAct'], $from_wind);
$ws['gustAct'] = wsConvertWindspeed($wx['gustAct'], $from_wind);
$ws['gustMaxHour'] = wsConvertWindspeed($wx['gustMaxHour'], $from_wind);
$ws['windActDsc'] = $wx['windActDsc'];
//NNE
$ws['windActDir'] = $wx['windActDir'] * 1.0;
// 20 deg
$ws['windAvgDir'] = $wx['windAvgDir'] * 1.0;
$ws['windBeafort'] = $wx['windBeafort'];
$ws['gustMaxToday'] = wsConvertWindspeed($wx['gustMaxToday'], $from_wind);
$ws['gustMaxTodayTime'] = wdDate($wx['gustMaxTodayTime']);
$ws['gustMaxYday'] = wsConvertWindspeed($wx['gustMaxYday'], $from_wind);
Example #9
0
function checkConvertData($textData, $type, $backData)
{
    global $textData, $type, $backData, $iconsWD;
    $input = trim($textData);
    if ($input === '-') {
        return;
    }
    if ($input === '_') {
        $input = '-';
        return;
    }
    switch ($type) {
        case 'B':
            break;
        case 'C':
            if (!is_numeric($input)) {
                $backData = 'yellow';
                return;
            }
            if ($input <= -30 || $input >= 40) {
                $textData .= ' exceptional data? ';
                $backData = 'yellow';
                return;
            }
            $convert = wsConvertTemperature($input, $type, 'f');
            $textData = $input . '&deg;C ( = ' . $convert . ' &deg;F )';
            break;
        case 'D':
            if (!is_numeric($input)) {
                $backData = 'yellow';
                return;
            }
            if ($input < 0 || $input >= 360.1) {
                $textData .= ' exceptional data? ';
                $backData = 'yellow';
                return;
            }
            $convert = wsConvertWinddir($input);
            $textData = $input . '&deg;( = ' . $convert . ' )';
            break;
        case 'F':
            if (!is_numeric($input)) {
                $backData = 'yellow';
                return;
            }
            if ($input < 0 || $input >= 30000) {
                $textData .= ' exceptional data? ';
                $backData = 'yellow';
                return;
            }
            $convert = round($input / 3.28084, 0);
            $textData = $input . ' feet ( = ' . $convert . ' meter )';
            break;
        case 'H':
            if (!is_numeric($input)) {
                $backData = 'yellow';
                return;
            }
            if ($input <= 900 || $input >= 1400) {
                $textData .= ' exceptional data? ';
                $backData = 'yellow';
                return;
            }
            $convertMb = wsConvertBaro($input, 'hpa', 'mb');
            $convertMmhg = wsConvertBaro($input, 'hpa', 'mmhg');
            $convertInhg = wsConvertBaro($input, 'hpa', 'inhg');
            $textData = $input . ' hPa ( = ' . $convertMb . ' mb; ' . $convertMmhg . ' mmHg; ' . $convertInhg . ' inHg )';
            break;
        case 'I':
            if (!is_numeric($input)) {
                $backData = 'yellow';
                return;
            }
            if ($input < 0 || $input > 36) {
                $textData .= ' exceptional data? ';
                $backData = 'yellow';
                return;
            }
            $textData = $input . ' ( ' . $iconsWD[$input]['iconDescription'] . ' )';
            break;
        case 'K':
            if (!is_numeric($input)) {
                $backData = 'yellow';
                return;
            }
            if ($input < 0 || $input >= 100) {
                $textData .= ' exceptional data? ';
                $backData = 'yellow';
                return;
            }
            $convertKmh = wsConvertWindspeed($input, 'kts', 'kmh');
            $convertMs = wsConvertWindspeed($input, 'kts', 'ms');
            $convertMph = wsConvertWindspeed($input, 'kts', 'mph');
            $textData = $input . ' kts ( = ' . $convertKmh . ' k/H; ' . $convertMs . ' ms; ' . $convertMph . ' m/H )';
            break;
        case 'M':
            if (!is_numeric($input)) {
                $backData = 'yellow';
                return;
            }
            if ($input < 0 || $input >= 300) {
                $textData .= ' exceptional data? ';
                $backData = 'yellow';
                return;
            }
            $convert = wsConvertRainfall($input, 'mm', 'in');
            $textData = $input . ' mm ( = ' . $convert . ' in )';
            break;
        case 'N':
            if (!is_numeric($input)) {
                $backData = 'yellow';
                return;
            }
            break;
        case 'P':
            $textData = $input . '%';
            break;
        case 'T':
            if ($input == 0) {
                return;
            }
            $time = strtotime($input);
            $string = date('H:i', $time);
            if ($string != $input) {
                $textData = $string . ' <> ' . $input . ' exceptional data? ';
                $backData = 'yellow';
                return;
            }
            break;
        case 'U':
            break;
    }
}
 public function getWeatherData($userLocation = '')
 {
     global $SITE, $pageName;
     #----------------------------------------------------------------------------------------------
     # clean user input
     #----------------------------------------------------------------------------------------------
     $lat = round($SITE['latitude'], 2);
     $lon = round($SITE['longitude'], 2);
     $this->location = $userLocation = $lat . ',' . $lon;
     #----------------------------------------------------------------------------------------------
     # try loading data from cache
     #----------------------------------------------------------------------------------------------
     $toTemp = $SITE['uomTemp'];
     $toWind = $SITE['uomWind'];
     $toRain = $SITE['uomRain'];
     $this->cachePath = $SITE['cacheDir'];
     if ($this->enableCache) {
         $filename = $pageName . '_' . $lat . '_' . $lon . '_' . $toTemp . '_' . $toWind . '_' . $toRain;
         $from = array('.', ',');
         $filename = str_replace($from, '_', $filename);
         $from = array('&deg;', '∞', '/', ' ');
         $filename = str_replace($from, '', $filename);
         $this->cacheFile = $this->cachePath . $filename;
         $returnArray = $this->loadFromCache();
         // load from cache returns data only when its data is valid
         if ($returnArray) {
             // if data is in cache and valid return data to calling program
             return $returnArray;
         }
         // eo return to calling program
     }
     // eo check cache
     # echo $this->cacheFile; exit;
     #----------------------------------------------------------------------------------------------
     $this->apiUrlpart[1] = $this->location;
     $this->apiUrlpart[3] = $this->key;
     // key as supplied by weatherservice
     for ($i = 0; $i < count($this->apiUrlpart); $i++) {
         $this->weatherApiUrl .= $this->apiUrlpart[$i];
     }
     #----------------------------------------------------------------------------------------------
     #		echo $this->weatherApiUrl; exit;
     $good_data = $this->makeRequest();
     if (!$good_data) {
         echo '<!-- <br />Could not load weatherdata (' . $this->weatherApiUrl . ') - no information returned -->' . PHP_EOL;
         if ($this->enableCache && !empty($this->cachePath)) {
             echo '<!-- Try to use the cache if it is not too old  -->' . PHP_EOL;
             $this->cacheTime = $this->cacheTime * 5;
             return $this->loadFromCache();
         }
         return false;
     }
     $xml = new SimpleXMLElement($this->rawData);
     # echo '<pre>';	print_r ($xml);
     $returnArray = array();
     #--------------------------------------------------------------------------------------------------
     # first, get and save request info / units etc
     #--------------------------------------------------------------------------------------------------
     $returnArray['request_info']['type'] = (string) $xml->request->type;
     $returnArray['request_info']['query'] = (string) $xml->request->query;
     $returnArray['request_info']['time'] = (string) $xml->current_condition->observation_time;
     #--------------------------------------------------------------------------------------------------
     # get current condition descriptions
     #--------------------------------------------------------------------------------------------------
     $returnArray['current_condition']['time'] = (string) $xml->current_condition->observation_time;
     $returnArray['current_condition']['weatherCode'] = (string) $xml->current_condition->weatherCode;
     $returnArray['current_condition']['iconUrl'] = trim((string) $xml->current_condition->weatherIconUrl);
     $returnArray['current_condition']['weatherDesc'] = (string) $xml->current_condition->weatherDesc;
     if (!strpos($SITE['uomTemp'], 'C')) {
         $to_temp = 'f';
     } else {
         $to_temp = 'c';
     }
     if ($to_temp == 'c') {
         $returnArray['current_condition']['temp'] = (string) (string) $xml->current_condition->temp_C;
         $returnArray['current_condition']['feelsLike'] = (string) (string) $xml->current_condition->FeelsLikeC;
     } else {
         $returnArray['current_condition']['temp'] = (string) (string) $xml->current_condition->temp_F;
         $returnArray['current_condition']['feelsLike'] = (string) (string) $xml->current_condition->FeelsLikeF;
     }
     $amount = (string) $xml->current_condition->windspeedKmph;
     $returnArray['current_condition']['wind'] = (string) wsConvertWindspeed($amount, $this->uomWind);
     $amount = (string) $xml->current_condition->precipMM;
     $returnArray['current_condition']['rain'] = (string) wsConvertRainfall($amount, $this->uomRain);
     $amount = (string) $xml->current_condition->pressure;
     $returnArray['current_condition']['baro'] = (string) wsConvertBaro($amount, $this->uomBaro);
     $returnArray['current_condition']['humidity'] = (string) $xml->current_condition->humidity;
     $returnArray['current_condition']['windDir'] = (string) $xml->current_condition->winddir16Point;
     $returnArray['current_condition']['windDeg'] = (string) $xml->current_condition->winddirDegree;
     $returnArray['current_condition']['cloudCover'] = (string) $xml->current_condition->cloudcover;
     // ?  ??  percent ?
     $returnArray['current_condition']['visibility'] = (string) $xml->current_condition->visibility;
     // miles ?
     #--------------------------------------------------------------------------------------------------
     #  get forecast info
     #--------------------------------------------------------------------------------------------------
     $end_weather = count($xml->weather);
     for ($i = 0; $i < $end_weather; $i++) {
         $returnArray['forecast'][$i] = array();
         $object = $xml->weather[$i];
         $returnArray['forecast'][$i]['date'] = strtotime($object->date);
         if ($to_temp == 'c') {
             $returnArray['forecast'][$i]['tempLow'] = (string) $object->mintempC;
             $returnArray['forecast'][$i]['tempHigh'] = (string) $object->maxtempC;
         } else {
             $returnArray['forecast'][$i]['tempLow'] = (string) $object->mintempF;
             $returnArray['forecast'][$i]['tempHigh'] = (string) $object->maxtempF;
         }
         $returnArray['forecast'][$i]['UV'] = (string) $object->uvIndex;
         $object = $object->hourly[0];
         $returnArray['forecast'][$i]['weatherCode'] = (string) $object->weatherCode;
         $returnArray['forecast'][$i]['iconUrl'] = trim((string) $object->weatherIconUrl);
         $returnArray['forecast'][$i]['weatherDesc'] = (string) $object->weatherDesc;
         $amount = (string) $object->windspeedKmph;
         $returnArray['forecast'][$i]['wind'] = (string) wsConvertWindspeed($amount, $this->uomWind);
         $amount = (string) $object->precipMM;
         $returnArray['forecast'][$i]['rain'] = (string) wsConvertRainfall($amount, $this->uomRain);
         $returnArray['forecast'][$i]['rainChance'] = (string) $object->chanceofrain;
         $returnArray['forecast'][$i]['windDir'] = (string) $object->winddir16Point;
         $returnArray['forecast'][$i]['windDeg'] = (string) $object->winddirDegree;
     }
     // eo for loop forecasts
     if ($this->enableCache && !empty($this->cachePath)) {
         $this->writeToCache($returnArray);
     }
     $this->rawdata = '';
     return $returnArray;
 }
Example #11
0
$limit_high = (string) wsConvertBaro('1050', 'hpa');
$limit_high = round(5 * floor($limit_high / 5), 1);
$string .= ' 
  <pressure unit="' . $uomBaro . '" label="' . langtransstr('Pressure') . '">
        <min dt="' . WStime($ws['baroMinTodayTime']) . '" uabbr=" hpa" label="' . langtransstr('Lowest ') . '">' . $ws['baroMinToday'] . '</min>
        <max dt="' . WStime($ws['baroMaxTodayTime']) . '" uabbr=" hpa" label="' . langtransstr('Highest ') . '">' . $ws['baroMaxToday'] . '</max>
        <current dt="' . WStime($ws['actTime']) . '">' . $ws['baroAct'] . '</current>
        <limits min="' . $limit_low . '" max="' . $limit_high . '"> </limits>
  </pressure>';
$string .= '		
  <humidity unit="%" label="' . langtransstr('Humidity') . '">
        <min dt="' . WStime($ws['humiMinTodayTime']) . '" uabbr="%" label="' . langtransstr('Lowest') . '">' . $ws['humiMinToday'] . '</min>
        <max dt="' . WStime($ws['humiMaxTodayTime']) . '" uabbr="%" label="' . langtransstr('Highest') . '">' . $ws['humiMaxToday'] . '</max>
        <current dt="' . WStime($ws['actTime']) . '">' . $ws['humiAct'] . '</current>
  </humidity>';
$limit_high = (string) wsConvertRainfall('50', 'hpa');
if ($ws['rainMonth'] > $limit_high) {
    $limit_high = 5 * ceil($ws['rainMonth'] / 5);
}
$limit_high = round(5 * floor($limit_high / 5), 1);
if (!isset($ws['rainHour'])) {
    $ws['rainHour'] = 0;
}
$string .= '
  <precipitation unit="' . $uomRain . '" label="' . langtransstr('Precipitation') . '">  
        <current    dt="' . WStime($ws['actTime']) . '"  uabbr="' . $uomRain . '" label="' . langtransstr('Today') . '">' . $ws['rainToday'] . '</current>
        <interval1h dt="1 ' . langtransstr('Hour') . '" uabbr="' . $uomRain . '" label="' . langtransstr('Last hour') . '">' . $ws['rainHour'] . '</interval1h>
        <interval6h dt="' . langtransstr('Month') . '"  uabbr="' . $uomRain . '" label="' . langtransstr('This month') . '">' . $ws['rainMonth'] . '</interval6h>
        <limits min="0" max="' . $limit_high . '"> </limits>
  </precipitation>';
$string .= '	
Example #12
0
                    break;
                case 1:
                    // rain
                    $wsWxsimArray[$i][$arrConvert[$n]] = wsConvertRainfall($amount, $usedunit);
                    break;
                case 2:
                    // wind
                    $wsWxsimArray[$i][$arrConvert[$n]] = wsConvertWindspeed($amount, $usedunit);
                    break;
                case 3:
                    // baro
                    $wsWxsimArray[$i][$arrConvert[$n]] = wsConvertBaro($amount, $usedunit);
                    break;
                case 4:
                    // snow
                    $wsWxsimArray[$i][$arrConvert[$n]] = wsConvertRainfall($amount, $usedunit);
                    break;
                case 5:
                    // distance
                    $wsWxsimArray[$i][$arrConvert[$n]] = wsConvertDistance($amount, $usedunit);
                    break;
                    echo '<!-- unsupported conversion in ' . $pageName . ' -->' . PHP_EOL;
            }
            // eo switch convert
        }
        // eo for every field to be converted
    }
    // eo every line
}
// eo convert
# save array in cache
Example #13
0
function convert_testtags()
{
    global $ymd, $ws, $wsTrends, $SITE, $pageFile, $my_date_format;
    echo '<!-- module ' . $pageFile . ' loading  ' . $SITE['wsTags'] . ' -->' . PHP_EOL;
    $ws['originated'] = 'leuven testtags.php -';
    include $SITE['wsTags'];
    // load testtags.php
    if (isset($ws['actTime'])) {
        // it is a leuven one
        $ws['wsVersion'] = str_replace('---', '', $ws['wsVersion']);
        if (!isset($ws['tempActExtra2'])) {
            $ws['tempActExtra2'] = '';
        }
        return;
    }
    # the testtags.php is a Saratoga one ! not leuven
    $ws['originated'] = 'saratoga testtags.php - ' . $date . ' - ' . $time;
    #
    echo '<!-- module ' . $pageFile . ' probable Saratoga testtags - converting -->' . PHP_EOL;
    #
    ob_start();
    $weathercond = $weathercond;
    $ws['wdCurCond'] = $Currentsolardescription;
    $ws['wdCurIcon'] = $iconnumber;
    // Current icon number
    $ws['wdMetarCcn'] = $weatherreport;
    // Current weather conditions from selected METAR
    $ws['wdMetarCld'] = '';
    // Cloud METAR label from the metargif
    # ------------------------------------------ units ---------------------
    if (!isset($uomtemp)) {
        $from_temp = $SITE['uomTemp'];
    } else {
        $from_temp = $uomtemp;
    }
    //  = 'C', 'F',  (or  '�C', '�F', or '&deg;C', '&deg;F' )
    if (!isset($uombaro)) {
        $from_baro = $SITE['uomBaro'];
    } else {
        $from_baro = $uombaro;
    }
    //  = 'inHg', 'hPa', 'kPa', 'mb'
    if (!isset($uomrain)) {
        $from_rain = $SITE['uomRain'];
    } else {
        $from_rain = $uomrain;
    }
    //  = 'mm', 'in'$from	= $uomrain;
    if (!isset($uomwind)) {
        $from_wind = $SITE['uomWind'];
    } else {
        $from_wind = $uomwind;
    }
    //  = 'kts','mph','kmh','km/h','m/s','Bft'
    if (!isset($uomdistance)) {
        $wdDist = $SITE['uomDistance'];
    } else {
        $wdDist = $uomdistance;
    }
    // = 'mi','km'  (for windrun variables)
    # ------------------------------------------- date - time --------------
    if (!isset($datefmt)) {
        $wdDatefmt = $SITE['uomDistance'];
    } else {
        $wdDatefmt = $datefmt;
    }
    //  = 'd/m/y', 'm/d/y'
    $wdSeconds = '00';
    $wdMinute = $time_minute;
    $wdHour = $time_hour;
    $wdDay = $date_day;
    $wdMonth = $date_month;
    $wdYear = $date_year;
    $ymd = (string) $wdYear . $wdMonth . $wdDay;
    //
    $ws['actTime'] = (string) $ymd . $wdHour . $wdMinute . $wdSeconds;
    // '20120523113945';
    # ------------------------------------------ temperature ---------------------------------
    $from = $from_temp;
    $ws['tempMinTodayTime'] = wdDate($mintempt);
    $ws['tempMinYdayTime'] = wdDate($mintempyestt);
    $ws['tempMinMonthTime'] = wdYMD($mrecordlowtempyear, $mrecordlowtempmonth, $mrecordlowtempday);
    $ws['tempMinYearTime'] = wdYMD($yrecordlowtempyear, $yrecordlowtempmonth, $yrecordlowtempday);
    $ws['tempMaxTodayTime'] = wdDate($maxtempt);
    $ws['tempMaxYdayTime'] = wdDate($maxtempyestt);
    //yday
    $ws['tempMaxMonthTime'] = wdYMD($mrecordhightempyear, $mrecordhightempmonth, $mrecordhightempday);
    $ws['tempMaxYearTime'] = wdYMD($yrecordhightempyear, $yrecordhightempmonth, $yrecordhightempday);
    $ws['dewpMinTodayTime'] = wdDate($mindewt);
    $ws['dewpMinYdayTime'] = wdDate($mindewyestt);
    //yday
    $ws['dewpMaxTodayTime'] = wdDate($maxdewt);
    $ws['dewpMaxYdayTime'] = wdDate($maxdewyestt);
    // yday
    $ws['heatMaxTodayTime'] = wdDate($maxheatt);
    $ws['heatMaxYdayTime'] = wdDate($maxheatyestt);
    $ws['heatMaxMonthTime'] = wdYMD($mrecordhighheatindexyear, $mrecordhighheatindexmonth, $mrecordhighheatindexday);
    $ws['heatMaxYearTime'] = wdYMD($yrecordhighheatindexyear, $yrecordhighheatindexmonth, $yrecordhighheatindexday);
    $ws['chilMinTodayTime'] = wdDate($minwindcht);
    $ws['chilMinYdayTime'] = wdDate($minchillyestt);
    // yday
    $ws['chilMinMonthTime'] = wdYMD($mrecordlowchillyear, $mrecordlowchillmonth, $mrecordlowchillday);
    $ws['chilMinYearTime'] = wdYMD($yrecordlowchillyear, $yrecordlowchillmonth, $yrecordlowchillday);
    $ws['tempAct'] = wsConvertTemperature($temperature, $from);
    // convert and clean of units
    if (isset($indoortemp)) {
        $ws['tempActInside'] = wsConvertTemperature($indoortemp, $from);
    } else {
        $ws['tempActInside'] = '';
    }
    if (isset($generalextratemp1)) {
        $ws['tempActExtra1'] = wsConvertTemperature($generalextratemp1, $from);
    } else {
        $ws['tempActExtra1'] = '';
    }
    if (isset($generalextratemp2)) {
        $ws['tempActExtra2'] = wsConvertTemperature($generalextratemp2, $from);
    } else {
        $ws['tempActExtra2'] = '';
    }
    $ws['tempDelta'] = wsConvertTemperature($tempchangehour, $from);
    $ws['tempToday'] = wsConvertTemperature($avtempsincemidnight, $from);
    $ws['tempMinToday'] = wsConvertTemperature($mintemp, $from);
    $ws['tempMinYday'] = wsConvertTemperature($mintempyest, $from);
    $ws['tempMinMonth'] = wsConvertTemperature($mrecordlowtemp, $from);
    $ws['tempMinYear'] = wsConvertTemperature($yrecordlowtemp, $from);
    $ws['tempMaxToday'] = wsConvertTemperature($maxtemp, $from);
    $ws['tempMaxYday'] = wsConvertTemperature($maxtempyest, $from);
    $ws['tempMaxMonth'] = wsConvertTemperature($mrecordhightemp, $from);
    $ws['tempMaxYear'] = wsConvertTemperature($yrecordhightemp, $from);
    $ws['dewpAct'] = wsConvertTemperature($dewpt, $from);
    $ws['dewpDelta'] = wsConvertTemperature($dewchangelasthour, $from);
    $ws['dewpMinToday'] = wsConvertTemperature($mindew, $from);
    $ws['dewpMinYday'] = wsConvertTemperature($mindewyest, $from);
    $ws['dewpMaxToday'] = wsConvertTemperature($maxdew, $from);
    $ws['dewpMaxYday'] = wsConvertTemperature($maxdewyest, $from);
    $ws['heatAct'] = wsConvertTemperature($heati, $from);
    $ws['heatDelta'] = 0;
    $ws['heatMaxToday'] = wsConvertTemperature($maxheat, $from);
    $ws['heatMaxYday'] = wsConvertTemperature($maxheatyest, $from);
    $ws['heatMaxMonth'] = wsConvertTemperature($mrecordhighheatindex, $from);
    $ws['heatMaxYear'] = wsConvertTemperature($yrecordhighheatindex, $from);
    $ws['chilAct'] = wsConvertTemperature($windch, $from);
    $ws['chilDelta'] = 0;
    $ws['chilMinToday'] = wsConvertTemperature($minwindch, $from);
    $ws['chilMinYday'] = wsConvertTemperature($minchillyest, $from);
    $ws['chilMinMonth'] = wsConvertTemperature($mrecordlowchill, $from);
    $ws['chilMinYear'] = wsConvertTemperature($yrecordlowchill, $from);
    $ws['hudxAct'] = wsConvertTemperature($humidexcelsius, 'C');
    $ws['hudxDelta'] = 0;
    $ws['hudxMaxToday'] = wsConvertTemperature($todayhihumidex, 'C');
    # ------------------------------------------ extreme temp   ------------------------------
    $ws['daysXHigh'] = $daysTmaxGT30C;
    $ws['daysHigh'] = $daysTmaxGT25C;
    $ws['daysLow'] = $daysTminLT0C;
    $ws['daysXLow'] = $daysTminLTm15C;
    # ------------------------------------------ pressure / baro -----------------------------
    $from = $from_baro;
    $ws['baroMinTodayTime'] = wdDate($lowbarot);
    $ws['baroMinYdayTime'] = wdDate($minbaroyestt);
    // ytd
    $ws['baroMinMonthTime'] = wdYMD($mrecordlowbaroyear, $mrecordlowbaromonth, $mrecordlowbaroday);
    $ws['baroMinYearTime'] = wdYMD($yrecordlowbaroyear, $yrecordlowbaromonth, $yrecordlowbaroday);
    $ws['baroMaxTodayTime'] = wdDate($highbarot);
    $ws['baroMaxYdayTime'] = wdDate($maxbaroyestt);
    // ytd
    $ws['baroMaxMonthTime'] = wdYMD($mrecordhighbaroyear, $mrecordhighbaromonth, $mrecordhighbaroday);
    $ws['baroMaxYearTime'] = wdYMD($yrecordhighbaroyear, $yrecordhighbaromonth, $yrecordhighbaroday);
    $ws['baroAct'] = wsConvertBaro($baro, $from);
    $ws['baroDelta'] = wsConvertBaro($trend, $from);
    $ws['baroMinToday'] = wsConvertBaro($lowbaro, $from);
    $ws['baroMinYday'] = wsConvertBaro($minbaroyest, $from);
    $ws['baroMinMonth'] = wsConvertBaro($mrecordlowbaro, $from);
    $ws['baroMinYear'] = wsConvertBaro($yrecordlowbaro, $from);
    $ws['baroMaxToday'] = wsConvertBaro($highbaro, $from);
    $ws['baroMaxYday'] = wsConvertBaro($maxbaroyest, $from);
    $ws['baroMaxMonth'] = wsConvertBaro($mrecordhighbaro, $from);
    $ws['baroMaxYear'] = wsConvertBaro($yrecordhighbaro, $from);
    # ------------------------------------------ humidity  -----------------------------------
    $ws['humiMinTodayTime '] = wdDate($lowhumt);
    $ws['humiMinYdayTime '] = wdDate($minhumyestt);
    // ytd
    $ws['humiMaxTodayTime'] = wdDate($highhumt);
    $ws['humiMaxYdayTime'] = wdDate($maxhumyestt);
    // ytd
    $ws['humiAct'] = $humidity * 1.0;
    $ws['humiExtra'] = '';
    # $generalextrahum1*1.0;
    $ws['humiDelta'] = $humchangelasthour * 1.0;
    $ws['humiMinToday'] = $lowhum * 1.0;
    $ws['humiMinYday'] = $minhumyest * 1.0;
    $ws['humiMaxToday'] = $highhum * 1.0;
    $ws['humiMaxYday'] = $maxhumyest * 1.0;
    # ------------------------------------------ rain  ---------------------------------------
    $from = $from_rain;
    $ws['rainDayMnth'] = $dayswithrain;
    // %dayswithrain% 		Days with rain for the month
    $ws['rainDayYear'] = $dayswithrainyear;
    // %dayswithrainyear%	Days with rain for the year
    $ws['rainRateAct'] = wsConvertRainfall($currentrainratehr, $from);
    $ws['rainRateToday'] = wsConvertRainfall($maxrainrate, $from);
    $ws['rainHour'] = wsConvertRainfall($hourrn, $from);
    $ws['rainToday'] = wsConvertRainfall($dayrn, $from);
    $ws['rainYday'] = wsConvertRainfall($yesterdayrain, $from);
    $ws['rainMonth'] = wsConvertRainfall($monthrn, $from);
    $ws['rainYear'] = wsConvertRainfall($yearrn, $from);
    $ws['rainDaysWithNo'] = $dayswithnorain;
    $ws['rainWeek'] = wsConvertRainfall($raincurrentweek, $from);
    # ------------------------------------------ EVAPOTRANSPIRATION --------------------------
    $ws['etToday'] = wsConvertRainfall($VPet, $from);
    $ws['etYday'] = wsConvertRainfall($yesterdaydaviset, $from);
    $ws['etMonth'] = wsConvertRainfall($VPetmonth, $from);
    # ------------------------------------------ wind  ---------------------------------------
    $from = $from_wind;
    $ws['windActDsc'] = $dirlabel;
    $ws['windBeafort'] = $beaufortnum;
    $ws['gustMaxTodayTime'] = wdDate($maxgstt);
    $ws['gustMaxYdayTime'] = wdDate($maxgustyestt);
    $ws['gustMaxMonthTime'] = wdYMD($mrecordhighgustyear, $mrecordhighgustmonth, $mrecordhighgustday);
    $ws['gustMaxYearTime'] = wdYMD($yrecordhighgustyear, $yrecordhighgustmonth, $yrecordhighgustday);
    $ws['windAct'] = wsConvertWindspeed($avgspd, $from);
    $ws['gustAct'] = wsConvertWindspeed($gstspd, $from);
    $ws['gustMaxHour'] = wsConvertWindspeed($maxgsthr, $from);
    $ws['gustMaxToday'] = wsConvertWindspeed($maxgst, $from);
    $ws['gustMaxYday'] = wsConvertWindspeed($maxgustyest, $from);
    $ws['gustMaxMonth'] = wsConvertWindspeed($mrecordwindgust, $from);
    $ws['gustMaxYear'] = wsConvertWindspeed($yrecordwindgust, $from);
    if ($ws['gustAct'] <= $ws['windAct']) {
        $ws['gustAct'] = $ws['windAct'];
    }
    # ------------------------------------------  UV   ---------------------------------------
    $ws['uvMaxTodayTime'] = wdDate($highuvtime);
    $ws['uvMaxYdayTime'] = wdDate($highuvyesttime);
    $ws['uvMaxMonthTime'] = wdYMD($mrecordhighuvyear, $mrecordhighuvmonth, $mrecordhighuvday);
    $ws['uvMaxYearTime'] = wdYMD($yrecordhighuvyear, $yrecordhighuvmonth, $yrecordhighuvday);
    $ws['uvAct'] = $VPuv;
    $ws['uvMaxToday'] = $highuv;
    $ws['uvMaxYday'] = $highuvyest;
    $ws['uvMaxMonth'] = $mrecordhighuv;
    $ws['uvMaxYear'] = $yrecordhighuv;
    # ------------------------------------------ Solar  --------------------------------------
    $ws['solarMaxTodayTime'] = wdDate($highsolartime);
    $ws['solarMaxYdayTime'] = wdDate($highsolaryesttime);
    $ws['solarMaxMonthTime'] = wdYMD($mrecordhighsolaryear, $mrecordhighsolarmonth, $mrecordhighsolarday);
    $ws['solarMaxYearTime'] = wdYMD($yrecordhighsolaryear, $yrecordhighsolarmonth, $yrecordhighsolarday);
    $ws['solarAct'] = $VPsolar * 1.0;
    $ws['solActPerc'] = $currentsolarpercent;
    $ws['solarMaxToday'] = $highsolar;
    $ws['solarMaxYday'] = $highsolaryest;
    $ws['solarMaxMonth'] = $mrecordhighsolar;
    $ws['solarMaxYear'] = $yrecordhighsolar;
    # ------------------------------------------ cloud height --------------------------------
    $from = 'ft';
    $ws['cloudHeight'] = wsConvertDistance($cloudheightfeet, $from);
    # ------------------------------------------ forecasts -----------------------------------
    $ws['fcstWD'] = $iconnumber;
    $ws['fcstTxt'] = $vpforecasttext;
    # ------------------------------------------ sun and moon --------------------------------
    $ws['sunrise'] = date($SITE['timeOnlyFormat'], strtotime($sunrise));
    $ws['sunset'] = date($SITE['timeOnlyFormat'], strtotime($sunset));
    $ws['moonrise'] = date($SITE['timeOnlyFormat'], strtotime($moonrise));
    $ws['moonset'] = date($SITE['timeOnlyFormat'], strtotime($moonset));
    $ws['lunarPhasePerc'] = $moonphase * 1.0;
    $ws['lunarAge'] = substr($moonage, 9, 3);
    // %moonphasename% %moonlunation%
    # ------------------------------------------ some more -----------------------------------
    $ws['wsVersion'] = "version {$wdversiononly} b {$wdbuild}";
    $ws['wsHardware'] = '';
    // unknown
    $ws['wsUptime'] = $windowsuptime;
    if (!isset($wsTrends)) {
        $wsTrends = array();
    }
    $i = 0;
    $wsTrends[$i]['min'] = 0;
    $wsTrends[$i]['temp'] = $temp0minuteago;
    $wsTrends[$i]['wind'] = $wind0minuteago;
    $wsTrends[$i]['gust'] = $gust0minuteago;
    $wsTrends[$i]['dir'] = langtransstr($dir0minuteago);
    $wsTrends[$i]['hum'] = $hum0minuteago;
    $wsTrends[$i]['dew'] = $dew0minuteago;
    $wsTrends[$i]['baro'] = $baro0minuteago;
    $wsTrends[$i]['rain'] = $rain0minuteago;
    $wsTrends[$i]['sol'] = $VPsolar0minuteago;
    $wsTrends[$i]['uv'] = $VPuv0minuteago;
    $i = 1;
    $wsTrends[$i]['min'] = 5;
    $wsTrends[$i]['temp'] = $temp5minuteago;
    $wsTrends[$i]['wind'] = $wind5minuteago;
    $wsTrends[$i]['gust'] = $gust5minuteago;
    $wsTrends[$i]['dir'] = langtransstr($dir5minuteago);
    $wsTrends[$i]['hum'] = $hum5minuteago;
    $wsTrends[$i]['dew'] = $dew5minuteago;
    $wsTrends[$i]['baro'] = $baro5minuteago;
    $wsTrends[$i]['rain'] = $rain5minuteago;
    $wsTrends[$i]['sol'] = $VPsolar5minuteago;
    $wsTrends[$i]['uv'] = $VPuv5minuteago;
    $i = 2;
    $wsTrends[$i]['min'] = 10;
    $wsTrends[$i]['temp'] = $temp10minuteago;
    $wsTrends[$i]['wind'] = $wind10minuteago;
    $wsTrends[$i]['gust'] = $gust10minuteago;
    $wsTrends[$i]['dir'] = langtransstr($dir10minuteago);
    $wsTrends[$i]['hum'] = $hum10minuteago;
    $wsTrends[$i]['dew'] = $dew10minuteago;
    $wsTrends[$i]['baro'] = $baro10minuteago;
    $wsTrends[$i]['rain'] = $rain10minuteago;
    $wsTrends[$i]['sol'] = $VPsolar10minuteago;
    $wsTrends[$i]['uv'] = $VPuv10minuteago;
    $i = 3;
    $wsTrends[$i]['min'] = 15;
    $wsTrends[$i]['temp'] = $temp15minuteago;
    $wsTrends[$i]['wind'] = $wind15minuteago;
    $wsTrends[$i]['gust'] = $gust15minuteago;
    $wsTrends[$i]['dir'] = langtransstr($dir15minuteago);
    $wsTrends[$i]['hum'] = $hum15minuteago;
    $wsTrends[$i]['dew'] = $dew15minuteago;
    $wsTrends[$i]['baro'] = $baro15minuteago;
    $wsTrends[$i]['rain'] = $rain15minuteago;
    $wsTrends[$i]['sol'] = $VPsolar15minuteago;
    $wsTrends[$i]['uv'] = $VPuv15minuteago;
    $i = 4;
    $wsTrends[$i]['min'] = 20;
    $wsTrends[$i]['temp'] = $temp20minuteago;
    $wsTrends[$i]['wind'] = $wind20minuteago;
    $wsTrends[$i]['gust'] = $gust20minuteago;
    $wsTrends[$i]['dir'] = langtransstr($dir20minuteago);
    $wsTrends[$i]['hum'] = $hum20minuteago;
    $wsTrends[$i]['dew'] = $dew20minuteago;
    $wsTrends[$i]['baro'] = $baro20minuteago;
    $wsTrends[$i]['rain'] = $rain20minuteago;
    $wsTrends[$i]['sol'] = $VPsolar20minuteago;
    $wsTrends[$i]['uv'] = $VPuv20minuteago;
    $i = 5;
    $wsTrends[$i]['min'] = 30;
    $wsTrends[$i]['temp'] = $temp30minuteago;
    $wsTrends[$i]['wind'] = $wind30minuteago;
    $wsTrends[$i]['gust'] = $gust30minuteago;
    $wsTrends[$i]['dir'] = langtransstr($dir30minuteago);
    $wsTrends[$i]['hum'] = $hum30minuteago;
    $wsTrends[$i]['dew'] = $dew30minuteago;
    $wsTrends[$i]['baro'] = $baro30minuteago;
    $wsTrends[$i]['rain'] = $rain30minuteago;
    $wsTrends[$i]['sol'] = $VPsolar30minuteago;
    $wsTrends[$i]['uv'] = $VPuv30minuteago;
    $i = 6;
    $wsTrends[$i]['min'] = 45;
    $wsTrends[$i]['temp'] = $temp45minuteago;
    $wsTrends[$i]['wind'] = $wind45minuteago;
    $wsTrends[$i]['gust'] = $gust45minuteago;
    $wsTrends[$i]['dir'] = langtransstr($dir45minuteago);
    $wsTrends[$i]['hum'] = $hum45minuteago;
    $wsTrends[$i]['dew'] = $dew45minuteago;
    $wsTrends[$i]['baro'] = $baro45minuteago;
    $wsTrends[$i]['rain'] = $rain45minuteago;
    $wsTrends[$i]['sol'] = $VPsolar45minuteago;
    $wsTrends[$i]['uv'] = $VPuv45minuteago;
    $i = 7;
    $wsTrends[$i]['min'] = 60;
    $wsTrends[$i]['temp'] = $temp60minuteago;
    $wsTrends[$i]['wind'] = $wind60minuteago;
    $wsTrends[$i]['gust'] = $gust60minuteago;
    $wsTrends[$i]['dir'] = langtransstr($dir60minuteago);
    $wsTrends[$i]['hum'] = $hum60minuteago;
    $wsTrends[$i]['dew'] = $dew60minuteago;
    $wsTrends[$i]['baro'] = $baro60minuteago;
    $wsTrends[$i]['rain'] = $rain60minuteago;
    $wsTrends[$i]['sol'] = $VPsolar60minuteago;
    $wsTrends[$i]['uv'] = $VPuv60minuteago;
    $i = 8;
    $wsTrends[$i]['min'] = 75;
    $wsTrends[$i]['temp'] = $temp75minuteago;
    $wsTrends[$i]['wind'] = $wind75minuteago;
    $wsTrends[$i]['gust'] = $gust75minuteago;
    $wsTrends[$i]['dir'] = langtransstr($dir75minuteago);
    $wsTrends[$i]['hum'] = $hum75minuteago;
    $wsTrends[$i]['dew'] = $dew75minuteago;
    $wsTrends[$i]['baro'] = $baro75minuteago;
    $wsTrends[$i]['rain'] = $rain75minuteago;
    $wsTrends[$i]['sol'] = $VPsolar75minuteago;
    $wsTrends[$i]['uv'] = $VPuv75minuteago;
    $i = 9;
    $wsTrends[$i]['min'] = 90;
    $wsTrends[$i]['temp'] = $temp90minuteago;
    $wsTrends[$i]['wind'] = $wind90minuteago;
    $wsTrends[$i]['gust'] = $gust90minuteago;
    $wsTrends[$i]['dir'] = langtransstr($dir90minuteago);
    $wsTrends[$i]['hum'] = $hum90minuteago;
    $wsTrends[$i]['dew'] = $dew90minuteago;
    $wsTrends[$i]['baro'] = $baro90minuteago;
    $wsTrends[$i]['rain'] = $rain90minuteago;
    $wsTrends[$i]['sol'] = $VPsolar90minuteago;
    $wsTrends[$i]['uv'] = $VPuv90minuteago;
    $i = 10;
    $wsTrends[$i]['min'] = 105;
    $wsTrends[$i]['temp'] = $temp105minuteago;
    $wsTrends[$i]['wind'] = $wind105minuteago;
    $wsTrends[$i]['gust'] = $gust105minuteago;
    $wsTrends[$i]['dir'] = langtransstr($dir105minuteago);
    $wsTrends[$i]['hum'] = $hum105minuteago;
    $wsTrends[$i]['dew'] = $dew105minuteago;
    $wsTrends[$i]['baro'] = $baro105minuteago;
    $wsTrends[$i]['rain'] = $rain105minuteago;
    $wsTrends[$i]['sol'] = $VPsolar105minuteago;
    $wsTrends[$i]['uv'] = $VPuv105minuteago;
    $i = 11;
    $wsTrends[$i]['min'] = 120;
    $wsTrends[$i]['temp'] = $temp120minuteago;
    $wsTrends[$i]['wind'] = $wind120minuteago;
    $wsTrends[$i]['gust'] = $gust120minuteago;
    $wsTrends[$i]['dir'] = langtransstr($dir120minuteago);
    $wsTrends[$i]['hum'] = $hum120minuteago;
    $wsTrends[$i]['dew'] = $dew120minuteago;
    $wsTrends[$i]['baro'] = $baro120minuteago;
    $wsTrends[$i]['rain'] = $rain120minuteago;
    $wsTrends[$i]['sol'] = $VPsolar120minuteago;
    $wsTrends[$i]['uv'] = $VPuv120minuteago;
    for ($i = 0; $i < 12; $i++) {
        $wsTrends[$i]['temp'] = wsConvertTemperature($wsTrends[$i]['temp'], $from_temp);
        $wsTrends[$i]['dew'] = wsConvertTemperature($wsTrends[$i]['dew'], $from_temp);
        $wsTrends[$i]['baro'] = wsConvertBaro($wsTrends[$i]['baro'], $from_baro);
        $wsTrends[$i]['rain'] = wsConvertRainfall($wsTrends[$i]['rain'], $from_rain);
        $wsTrends[$i]['wind'] = wsConvertWindspeed($wsTrends[$i]['wind'], $from_wind);
        $wsTrends[$i]['gust'] = wsConvertWindspeed($wsTrends[$i]['gust'], $from_wind);
    }
    $ws['check_ok'] = '3.00';
    if (!isset($SITE['soilUsed']) || $SITE['soilUsed'] == false) {
        ob_clean();
        return;
    }
    $from = $uomtemp;
    # Temp sensor 1 actual value
    $ws['soilTempAct'][1] = wsConvertTemperature($soiltemp, $from);
    // convert and clean of units
    # Temp sensor 1 maximum value for today month and year
    $ws['soilTempMaxToday'][1] = wsConvertTemperature($maxsoiltemp, $from);
    $ws['soilTempMaxMonth'][1] = wsConvertTemperature($mrecordhighsoil, $from);
    $ws['soilTempMaxMonthTime'][1] = wdYMD($mrecordhighsoilyear, $mrecordhighsoilmonth, $mrecordhighsoilday);
    $ws['soilTempMaxYear'][1] = wsConvertTemperature($yrecordhighsoil, $from);
    $ws['soilTempMaxYearTime'][1] = wdYMD($yrecordhighsoilyear, $yrecordhighsoilmonth, $yrecordhighsoilday);
    $ws['soilTempMaxAlltime'][1] = wsConvertTemperature($recordhighsoil, $from);
    $ws['soilTempMaxAlltimeTime'][1] = wdYMD($recordhighsoilyear, $recordhighsoilmonth, $recordhighsoilday);
    # Temp sensor 1 minimum value for today month and year
    $ws['soilTempMinToday'][1] = wsConvertTemperature($minsoiltemp, $from);
    $ws['soilTempMinMonth'][1] = wsConvertTemperature($mrecordlowsoil, $from);
    $ws['soilTempMinMonthTime'][1] = wdYMD($mrecordlowsoilyear, $mrecordlowsoilmonth, $mrecordlowsoilday);
    $ws['soilTempMinYear'][1] = wsConvertTemperature($yrecordlowsoil, $from);
    $ws['soilTempMinYearTime'][1] = wdYMD($yrecordlowsoilyear, $yrecordlowsoilmonth, $yrecordlowsoilday);
    $ws['soilTempMinAlltime'][1] = wsConvertTemperature($recordlowsoil, $from);
    $ws['soilTempMinAlltimeTime'][1] = wdYMD($recordlowsoilyear, $recordlowsoilmonth, $recordlowsoilday);
    # Temp sensor 2 actual value & Values and time for  min and max  for today - month and year
    $ws['soilTempAct'][2] = wsConvertTemperature($VPsoiltemp2, $from);
    // convert and clean of units
    $ws['soilTempMaxToday'][2] = wsConvertTemperature($hiVPsoiltemp2, $from);
    $ws['soilTempMaxMonth'][2] = wsConvertTemperature($mrecordhighsoil2, $from);
    $ws['soilTempMaxMonthTime'][2] = wdYMD($mrecordhighsoilyear2, $mrecordhighsoilmonth2, $mrecordhighsoilday2);
    $ws['soilTempMaxYear'][2] = wsConvertTemperature($yrecordhighsoil2, $from);
    $ws['soilTempMaxYearTime'][2] = wdYMD($yrecordhighsoilyear2, $yrecordhighsoilmonth2, $yrecordhighsoilday2);
    $ws['soilTempMaxAlltime'][2] = wsConvertTemperature($recordhighsoil2, $from);
    $ws['soilTempMaxAlltimeTime'][2] = wdYMD($recordhighsoilyear2, $recordhighsoilmonth2, $recordhighsoilday2);
    $ws['soilTempMinToday'][2] = wsConvertTemperature($loVPsoiltemp2, $from);
    $ws['soilTempMinMonth'][2] = wsConvertTemperature($mrecordlowsoil2, $from);
    $ws['soilTempMinMonthTime'][2] = wdYMD($mrecordlowsoilyear2, $mrecordlowsoilmonth2, $mrecordlowsoilday2);
    $ws['soilTempMinYear'][2] = wsConvertTemperature($yrecordlowsoil2, $from);
    $ws['soilTempMinYearTime'][2] = wdYMD($yrecordlowsoilyear2, $yrecordlowsoilmonth2, $yrecordlowsoilday2);
    $ws['soilTempMinAlltime'][2] = wsConvertTemperature($recordlowsoil2, $from);
    $ws['soilTempMinAlltimeTime'][2] = wdYMD($recordlowsoilyear2, $recordlowsoilmonth2, $recordlowsoilday2);
    # Temp sensor 3 actual value & Values and time for  min and max  for today - month and year
    $ws['soilTempAct'][3] = wsConvertTemperature($VPsoiltemp3, $from);
    // convert and clean of units
    $ws['soilTempMaxToday'][3] = wsConvertTemperature($hiVPsoiltemp3, $from);
    $ws['soilTempMaxMonth'][3] = wsConvertTemperature($mrecordhighsoil3, $from);
    $ws['soilTempMaxMonthTime'][3] = wdYMD($mrecordhighsoilyear3, $mrecordhighsoilmonth3, $mrecordhighsoilday3);
    $ws['soilTempMaxYear'][3] = wsConvertTemperature($yrecordhighsoil3, $from);
    $ws['soilTempMaxYearTime'][3] = wdYMD($yrecordhighsoilyear3, $yrecordhighsoilmonth3, $yrecordhighsoilday3);
    $ws['soilTempMaxAlltime'][3] = wsConvertTemperature($recordhighsoil3, $from);
    $ws['soilTempMaxAlltimeTime'][3] = wdYMD($recordhighsoilyear3, $recordhighsoilmonth3, $recordhighsoilday3);
    $ws['soilTempMinToday'][3] = wsConvertTemperature($loVPsoiltemp3, $from);
    $ws['soilTempMinMonth'][3] = wsConvertTemperature($mrecordlowsoil3, $from);
    $ws['soilTempMinMonthTime'][3] = wdYMD($mrecordlowsoilyear3, $mrecordlowsoilmonth3, $mrecordlowsoilday3);
    $ws['soilTempMinYear'][3] = wsConvertTemperature($yrecordlowsoil3, $from);
    $ws['soilTempMinYearTime'][3] = wdYMD($yrecordlowsoilyear3, $yrecordlowsoilmonth3, $yrecordlowsoilday3);
    $ws['soilTempMinAlltime'][3] = wsConvertTemperature($recordlowsoil3, $from);
    $ws['soilTempMinAlltimeTime'][3] = wdYMD($recordlowsoilyear3, $recordlowsoilmonth3, $recordlowsoilday3);
    # Temp sensor 4 actual value & Values and time for  min and max  for today - month and year
    $ws['soilTempAct'][4] = wsConvertTemperature($VPsoiltemp4, $from);
    // convert and clean of units
    $ws['soilTempMaxToday'][4] = wsConvertTemperature($hiVPsoiltemp4, $from);
    $ws['soilTempMaxMonth'][4] = wsConvertTemperature($mrecordhighsoil4, $from);
    $ws['soilTempMaxMonthTime'][4] = wdYMD($mrecordhighsoilyear4, $mrecordhighsoilmonth4, $mrecordhighsoilday4);
    $ws['soilTempMaxYear'][4] = wsConvertTemperature($yrecordhighsoil4, $from);
    $ws['soilTempMaxYearTime'][4] = wdYMD($yrecordhighsoilyear4, $yrecordhighsoilmonth4, $yrecordhighsoilday4);
    $ws['soilTempMaxAlltime'][4] = wsConvertTemperature($recordhighsoil4, $from);
    $ws['soilTempMaxAlltimeTime'][4] = wdYMD($recordhighsoilyear4, $recordhighsoilmonth4, $recordhighsoilday4);
    $ws['soilTempMinToday'][4] = wsConvertTemperature($loVPsoiltemp4, $from);
    $ws['soilTempMinMonth'][4] = wsConvertTemperature($mrecordlowsoil4, $from);
    $ws['soilTempMinMonthTime'][4] = wdYMD($mrecordlowsoilyear4, $mrecordlowsoilmonth4, $mrecordlowsoilday4);
    $ws['soilTempMinYear'][4] = wsConvertTemperature($yrecordlowsoil4, $from);
    $ws['soilTempMinYearTime'][4] = wdYMD($yrecordlowsoilyear4, $yrecordlowsoilmonth4, $yrecordlowsoilday4);
    $ws['soilTempMinAlltime'][4] = wsConvertTemperature($recordlowsoil4, $from);
    $ws['soilTempMinAlltimeTime'][4] = wdYMD($recordlowsoilyear4, $recordlowsoilmonth4, $recordlowsoilday4);
    #
    # Moisture sensor 1 actual value
    $ws['moistAct'][1] = $VPsoilmoisture;
    # Moisture sensor 1 maximum value for today month and year
    $ws['moistMaxToday'][1] = $hiVPsoilmoisture;
    $ws['moistMaxMonth'][1] = $mrecordhighsoilmoist;
    $ws['moistMaxMonthTime'][1] = wdYMD($mrecordhighsoilmoistyear, $mrecordhighsoilmoistmonth, $mrecordhighsoilmoistday);
    $ws['moistMaxYear'][1] = $yrecordhighsoilmoist;
    $ws['moistMaxYearTime'][1] = wdYMD($yrecordhighsoilmoistyear, $yrecordhighsoilmoistmonth, $yrecordhighsoilmoistday);
    $ws['moistMaxAlltime'][1] = $recordhighsoilmoist;
    $ws['moistMaxAlltimeTime'][1] = wdYMD($recordhighsoilmoistyear, $recordhighsoilmoistmonth, $recordhighsoilmoistday);
    # Moisture sensor 1 mimimum value for today
    $ws['moistMinToday'][1] = $loVPsoilmoisture;
    # Moisture sensor 1 date/time maximum occured
    # Moisture sensor 2 actual value & Values and time for  min and max  for today - month and year
    $ws['moistAct'][2] = $VPsoilmoisture2;
    $ws['moistMaxToday'][2] = $hiVPsoilmoisture2;
    $ws['moistMinToday'][2] = $loVPsoilmoisture2;
    # Moisture sensor 3 actual value & Values and time for  min and max  for today - month and year
    $ws['moistAct'][3] = $VPsoilmoisture3;
    $ws['moistMaxToday'][3] = $hiVPsoilmoisture3;
    $ws['moistMinToday'][3] = $loVPsoilmoisture3;
    # Moisture sensor 4 actual value & Values and time for  min and max  for today - month and year
    $ws['moistAct'][4] = $VPsoilmoisture4;
    $ws['moistMaxToday'][4] = $hiVPsoilmoisture4;
    $ws['moistMinToday'][4] = $loVPsoilmoisture4;
    #
    $ws['moistAvMonth'][1] = $avtempjansoil;
    // Average soil temperature for january from your data
    $ws['moistAvMonth'][2] = $avtempfebsoil;
    $ws['moistAvMonth'][3] = $avtempmarsoil;
    $ws['moistAvMonth'][4] = $avtempaprsoil;
    $ws['moistAvMonth'][5] = $avtempmaysoil;
    $ws['moistAvMonth'][6] = $avtempjunsoil;
    $ws['moistAvMonth'][7] = $avtempjulsoil;
    $ws['moistAvMonth'][8] = $avtempaugsoil;
    $ws['moistAvMonth'][9] = $avtempsepsoil;
    $ws['moistAvMonth'][10] = $avtempoctsoil;
    $ws['moistAvMonth'][11] = $avtempnovsoil;
    $ws['moistAvMonth'][12] = $avtempdecsoil;
    $ws['moistAvMonthThisyear'][1] = $avtempjannowsoil;
    // Average soil temperature for january from your data, this year
    $ws['moistAvMonthThisyear'][2] = $avtempfebnowsoil;
    $ws['moistAvMonthThisyear'][3] = $avtempmarnowsoil;
    $ws['moistAvMonthThisyear'][4] = $avtempaprnowsoil;
    $ws['moistAvMonthThisyear'][5] = $avtempmaynowsoil;
    $ws['moistAvMonthThisyear'][6] = $avtempjunnowsoil;
    $ws['moistAvMonthThisyear'][7] = $avtempjulnowsoil;
    $ws['moistAvMonthThisyear'][8] = $avtempaugnowsoil;
    $ws['moistAvMonthThisyear'][9] = $avtempsepnowsoil;
    $ws['moistAvMonthThisyear'][10] = $avtempoctnowsoil;
    $ws['moistAvMonthThisyear'][11] = $avtempnovnowsoil;
    $ws['moistAvMonthThisyear'][12] = $avtempdecnowsoil;
    #-----------------------------------------------------------------------------------------
    # leaf sensor 1 - 4
    $ws['leafAct'][1] = $VPleaf;
    $ws['leafWetLast10'][1] = $leafminlast10min;
    // Minutes last 10 minutes leaf wetness was above zero
    $ws['leafWetLast60'][1] = $leafminlast60min;
    // Minutes last 10 minutes leaf wetness was above zero
    $ws['leafMaxToday'][1] = $hiVPleaf;
    $ws['leafMinToday'][1] = $loVPleaf;
    $ws['leafMaxMonth'][1] = $mrecordhighleaf;
    $ws['leafMaxYear'][1] = $yrecordhighleaf;
    $ws['leafMaxMonthTime'][1] = wdYMD($mrecordhighleafyear, $mrecordhighleafmonth, $mrecordhighleafday);
    $ws['leafMaxYearTime'][1] = wdYMD($yrecordhighleafyear, $yrecordhighleafmonth, $yrecordhighleafday);
    $ws['leafAct'][2] = $VPleaf2;
    $ws['leafHighToday'][2] = $hiVPleaf2;
    $ws['leafLowToday'][2] = $loVPleaf2;
    $ws['leafWetLast10'][2] = $leafminlast10min2;
    // Minutes last 10 minutes leaf wetness was above zero
    $ws['leafWetLast60'][2] = $leafminlast60min2;
    // Minutes last 10 minutes leaf wetness was above zero
    $ws['leafAct'][3] = $VPleaf3;
    $ws['leafAct'][4] = $VPleaf4;
    #-----------------------------------------------------------------------------------------
    ob_clean();
}
Example #14
0
$arr = array();
$arr['temp'] = '[' . $tstr;
$arr['tmax'] = wsConvertTemperature($tmax, $wu_unit_temp);
$arr['tmin'] = wsConvertTemperature($tmin, $wu_unit_temp);
$arr['hum'] = '[' . $hstr;
$arr['hmax'] = $hmax;
$arr['hmin'] = $hmin;
$arr['wind'] = '[' . $wstr;
$arr['wmax'] = wsConvertWindspeed($wmax, $wu_unit_wind);
$arr['wmin'] = wsConvertWindspeed($wmin, $wu_unit_wind);
$arr['baro'] = '[' . $bstr;
$arr['bmax'] = wsConvertBaro($bmax, $wu_unit_baro);
$arr['bmin'] = wsConvertBaro($bmin, $wu_unit_baro);
$arr['rain'] = '[' . $rstr;
$arr['rmax'] = wsConvertRainfall($rmax, $wu_unit_rain);
$arr['rmin'] = wsConvertRainfall($rmin, $wu_unit_rain);
$arr['solr'] = '[' . $sstr;
$arr['smax'] = $smax;
$arr['smin'] = $smin;
$string = serialize($arr);
if (file_put_contents($cachefile, $string)) {
    echo "<!-- wu weatherarray {$cachefile} saved to cache  -->" . PHP_EOL;
} else {
    echo PHP_EOL . "<!-- \nWARNING Could not save data ({$cachefile}) to cache (" . $SITE['cacheDir'] . "). \nWARNING Please make sure your cache directory exists and is writable. -->" . PHP_EOL;
}
$temp = $arr['temp'];
$hum = $arr['hum'];
$wind = $arr['wind'];
$rain = $arr['rain'];
$baro = $arr['wind'];
$solr = $arr['solr'];
 public function getWeatherData($userLocation = '')
 {
     global $SITE, $pageName;
     #----------------------------------------------------------------------------------------------
     $this->location = $userLocation = $SITE['latitude'] . ',' . $SITE['longitude'];
     #----------------------------------------------------------------------------------------------
     # try loading data from cache
     #----------------------------------------------------------------------------------------------
     if ($this->enableCache && !empty($SITE['cacheDir'])) {
         $this->cachePath = $SITE['cacheDir'];
         $uoms = $SITE['uomTemp'] . '_' . $SITE['uomWind'] . '_' . $SITE['uomRain'];
         $from = array('&deg;', '∞', '/', ' ', ',');
         $name = $pageName . '_' . $this->location . '_' . $uoms;
         $name = str_replace($from, '', $name);
         $this->cacheFile = $this->cachePath . $name;
         $returnArray = $this->loadFromCache();
         // load from cache returns data only when its data is valid
         if (!empty($returnArray)) {
             // if data is in cache and valid return data to calling program
             return $returnArray;
         }
         // eo return to calling program
     }
     // eo check cache
     #----------------------------------------------------------------------------------------------
     # combine user constants and input (1)location (2)units for temp etc  to required url
     #http://free.worldweatheronline.com/feed/weather.ashx?q=leuven,belgium&format=xml&num_of_days=5&key=0f9bf9919c100150121001
     #----------------------------------------------------------------------------------------------
     $this->apiUrlpart[1] = $this->location;
     $this->apiUrlpart[3] = $this->key;
     for ($i = 0; $i < count($this->apiUrlpart); $i++) {
         $this->weatherApiUrl .= $this->apiUrlpart[$i];
     }
     #----------------------------------------------------------------------------------------------
     if ($this->makeRequest()) {
         $xml = new SimpleXMLElement($this->rawData);
         $returnArray = array();
         #--------------------------------------------------------------------------------------------------
         # first, get and save request info / units etc
         #--------------------------------------------------------------------------------------------------
         $i = 0;
         // headings
         $returnArray['request_info'][$i]['type'] = 'type';
         $returnArray['request_info'][$i]['city'] = 'city';
         $returnArray['request_info'][$i]['time'] = 'time';
         $returnArray['request_info'][$i]['uomTemp'] = 'uomTemp';
         $returnArray['request_info'][$i]['uomDistance'] = 'uomDistance';
         $returnArray['request_info'][$i]['uomBaro'] = 'uomBaro';
         $returnArray['request_info'][$i]['uomWind'] = 'uomWind';
         $i = 1;
         // data
         $returnArray['request_info'][$i]['type'] = (string) $xml->request->type;
         $returnArray['request_info'][$i]['city'] = (string) $xml->request->query;
         $returnArray['request_info'][$i]['time'] = (string) $xml->current_condition->observation_time;
         $returnArray['request_info'][$i]['uomTemp'] = '&deg;C';
         $returnArray['request_info'][$i]['uomDistance'] = ' km';
         $returnArray['request_info'][$i]['uomBaro'] = ' hpa';
         $returnArray['request_info'][$i]['uomWind'] = ' km/h';
         #--------------------------------------------------------------------------------------------------
         # get current condition descriptions
         #--------------------------------------------------------------------------------------------------
         $i = 0;
         // headings
         $returnArray['current_condition'][$i]['time'] = 'time';
         $returnArray['current_condition'][$i]['weatherCode'] = 'weatherCode';
         $returnArray['current_condition'][$i]['iconUrl'] = 'iconUrl';
         $returnArray['current_condition'][$i]['weatherDesc'] = 'description';
         $returnArray['current_condition'][$i]['tempNU'] = 'temp';
         $returnArray['current_condition'][$i]['temp'] = 'temp';
         $returnArray['current_condition'][$i]['windNU'] = 'wind';
         $returnArray['current_condition'][$i]['wind'] = 'wind';
         $returnArray['current_condition'][$i]['rainNU'] = 'rain';
         $returnArray['current_condition'][$i]['rain'] = 'rain';
         $returnArray['current_condition'][$i]['baroNU'] = 'baro';
         $returnArray['current_condition'][$i]['baro'] = 'baro';
         $returnArray['current_condition'][$i]['humidity'] = 'humidity';
         $returnArray['current_condition'][$i]['windDir'] = 'windDir';
         $returnArray['current_condition'][$i]['windDeg'] = 'windDeg';
         $returnArray['current_condition'][$i]['cloudCover'] = 'cloudCover';
         // ?  ??  percent ?
         $i = 1;
         // data
         $returnArray['current_condition'][$i]['time'] = (string) $xml->current_condition->observation_time;
         $returnArray['current_condition'][$i]['weatherCode'] = (string) $xml->current_condition->weatherCode;
         $returnArray['current_condition'][$i]['iconUrl'] = (string) $xml->current_condition->weatherIconUrl;
         $returnArray['current_condition'][$i]['weatherDesc'] = (string) $xml->current_condition->weatherDesc;
         $amount = (string) $xml->current_condition->temp_C;
         $returnArray['current_condition'][$i]['tempNU'] = (string) wsConvertTemperature($amount, $this->uomTemp, $SITE['uomTemp']);
         $returnArray['current_condition'][$i]['temp'] = (string) wsConvertTemperature($amount, $this->uomTemp, $SITE['uomTemp']) . $SITE['uomTemp'];
         $amount = (string) $xml->current_condition->windspeedKmph;
         $returnArray['current_condition'][$i]['windNU'] = (string) wsConvertWindspeed($amount, $this->uomWind, $SITE['uomWind']);
         $returnArray['current_condition'][$i]['wind'] = (string) wsConvertWindspeed($amount, $this->uomWind, $SITE['uomWind']) . $SITE['uomWind'];
         $amount = (string) $xml->current_condition->precipMM;
         $returnArray['current_condition'][$i]['rainNU'] = (string) wsConvertRainfall($amount, $this->uomRain, $SITE['uomRain']);
         $returnArray['current_condition'][$i]['rain'] = (string) wsConvertRainfall($amount, $this->uomRain, $SITE['uomRain']) . $SITE['uomRain'];
         $amount = (string) $xml->current_condition->pressure;
         $returnArray['current_condition'][$i]['baroNU'] = (string) wsConvertBaro($amount, $this->uomBaro, $SITE['uomBaro']);
         $returnArray['current_condition'][$i]['baro'] = (string) wsConvertBaro($amount, $this->uomBaro, $SITE['uomBaro']) . $SITE['uomBaro'];
         $returnArray['current_condition'][$i]['humidityNU'] = (string) $xml->current_condition->humidity;
         $returnArray['current_condition'][$i]['humidity'] = (string) $xml->current_condition->humidity . ' %';
         $returnArray['current_condition'][$i]['windDir'] = (string) $xml->current_condition->winddir16Point;
         $returnArray['current_condition'][$i]['windDeg'] = (string) $xml->current_condition->winddirDegree;
         $returnArray['current_condition'][$i]['cloudCover'] = (string) $xml->current_condition->cloudcover;
         // ?  ??  percent ?
         #--------------------------------------------------------------------------------------------------
         #  get forecast info
         #--------------------------------------------------------------------------------------------------
         $i = 0;
         $returnArray['forecast'][$i]['date'] = 'date';
         $returnArray['forecast'][$i]['weatherCode'] = 'weatherCode';
         $returnArray['forecast'][$i]['iconUrl'] = 'iconUrl';
         $returnArray['forecast'][$i]['weatherDesc'] = 'description';
         $returnArray['forecast'][$i]['tempLowNU'] = 'tempLow';
         $returnArray['forecast'][$i]['tempLow'] = 'tempLow';
         $returnArray['forecast'][$i]['tempHighNU'] = 'tempHigh';
         $returnArray['forecast'][$i]['tempHigh'] = 'tempHigh';
         $returnArray['forecast'][$i]['windNU'] = 'wind';
         $returnArray['forecast'][$i]['wind'] = 'wind';
         $returnArray['forecast'][$i]['rainNU'] = 'rain';
         $returnArray['forecast'][$i]['rain'] = 'rain';
         $returnArray['forecast'][$i]['windDir'] = 'windDir';
         $returnArray['forecast'][$i]['windDeg'] = 'windDeg';
         $i2 = count($xml->weather);
         for ($i = 1; $i <= $i2; $i++) {
             $returnArray['forecast'][$i]['date'] = strtotime((string) $xml->weather[$i - 1]->date);
             $returnArray['forecast'][$i]['weatherCode'] = (string) $xml->weather[$i - 1]->weatherCode;
             $returnArray['forecast'][$i]['iconUrl'] = (string) $xml->weather[$i - 1]->weatherIconUrl;
             $returnArray['forecast'][$i]['weatherDesc'] = langtransstr((string) $xml->weather[$i - 1]->weatherDesc);
             $amount = (string) $xml->weather[$i - 1]->tempMinC;
             $returnArray['forecast'][$i]['tempLowNU'] = (string) wsConvertTemperature($amount, $this->uomTemp, $SITE['uomTemp']);
             $returnArray['forecast'][$i]['tempLow'] = (string) $returnArray['forecast'][$i]['tempLowNU'] . $SITE['uomTemp'];
             $amount = (string) $xml->weather[$i - 1]->tempMaxC;
             $returnArray['forecast'][$i]['tempHighNU'] = (string) wsConvertTemperature($amount, $this->uomTemp, $SITE['uomTemp']);
             $returnArray['forecast'][$i]['tempHigh'] = (string) $returnArray['forecast'][$i]['tempHighNU'] . $SITE['uomTemp'];
             $amount = (string) $xml->weather[$i - 1]->windspeedKmph;
             $returnArray['forecast'][$i]['windNU'] = (string) wsConvertWindspeed($amount, $this->uomWind, $SITE['uomWind']);
             $returnArray['forecast'][$i]['wind'] = (string) $returnArray['forecast'][$i]['windNU'] . $SITE['uomWind'];
             $amount = (string) $xml->weather[$i - 1]->precipMM;
             $returnArray['forecast'][$i]['rainNU'] = (string) wsConvertRainfall($amount, $this->uomRain, $SITE['uomRain']);
             $returnArray['forecast'][$i]['rain'] = (string) $returnArray['forecast'][$i]['rainNU'] . $SITE['uomRain'];
             $returnArray['forecast'][$i]['windDir'] = (string) $xml->weather[$i - 1]->winddir16Point;
             $returnArray['forecast'][$i]['windDeg'] = (string) $xml->weather[$i - 1]->winddirDegree;
         }
         // eo for loop forecasts
         if ($this->enableCache && !empty($this->cachePath)) {
             $this->writeToCache($returnArray);
         }
         $this->rawdata = '';
         return $returnArray;
     }
     // eo makeRequest processing
     return false;
 }
Example #16
0
$fromYday = $wx['fromrainYday'];
$ws['rainRateAct'] = wsConvertRainfall($wx['rainRateAct'], $from);
$ws['rainRateMaxToday'] = $ws['rainRateAct'];
$ws['rainRateToday'] = $ws['rainRateAct'];
#$ws['lastRained']               = $wx['lastRained'];
$ws['rainToday'] = wsConvertRainfall($wx['rainToday'], $from);
$ws['rainHour'] = wsConvertRainfall($wx['rainHour'], $from);
$ws['rainYday'] = wsConvertRainfall($wx['rainYday'], $fromYday);
$ws['rainMonth'] = wsConvertRainfall($wx['rainMonth'], $from);
$ws['rainYear'] = wsConvertRainfall($wx['rainYear'], $from);
$ws['rainDayMnth'] = $wx['rainDayMnth'] * 1.0;
$ws['rainDayYear'] = $wx['rainDayYear'] * 1.0;
$ws['rainDaysWithNo'] = $wx['rainDaysWithNo'] * 1.0;
# ------------------------------------------ EVAPOTRANSPIRATION --------
$ws['etToday'] = wsConvertRainfall($wx['etToday'], $from);
$ws['etYday'] = wsConvertRainfall($wx['etYday'], $fromYday);
# ------------------------------------------ wind  ---------------------
$from = trim(strtolower($wx['fromwind']));
// =' km/h', =' kts', =' m/s', =' mph'
$fromYday = $wx['fromwindYday'];
$ws['windAct'] = wsConvertWindspeed($wx['windAct'], $from);
$ws['windActDsc'] = $wx['windActDsc'];
$ws['windActDir'] = $wx['windActDir'];
$ws['windAvgDir'] = $wx['windAvgDir'];
$ws['windBeafort'] = wsBeaufortNumber($wx['windAct'], $from);
$ws['gustAct'] = wsConvertWindspeed($wx['gustAct'], $from);
$ws['gustMaxToday'] = wsConvertWindspeed($wx['gustMaxToday'], $from);
$ws['gustMaxTodayTime'] = wview_time($wx['gustMaxTodayTime']);
$ws['gustMaxYday'] = wsConvertWindspeed($wx['gustMaxYday'], $fromYday);
$ws['gustMaxYdayTime'] = $wx['gustMaxYdayTime'];
$ws['gustMaxMonth'] = wsConvertWindspeed($wx['gustMaxMonth'], $from);
Example #17
0
    }
    $wsWxsimPlain[$i]['windSpeed'] = wsConvertWindspeed($wind1, $WXSIMwindunits[$i]);
    $wsWxsimPlain[$i]['gust'] = wsConvertWindspeed($WXSIMgust[$i], $WXSIMwindunits[$i]);
    $wsWxsimPlain[$i]['windDir'] = $WXSIMwinddiricon[$i];
    $from = array('&lt;', 'mm.', 'cm.', 'in.', 'mm', 'cm', 'in', '&gt;', '+');
    $string = str_replace($from, '', $WXSIMprecip[$i]);
    $wsWxsimPlain[$i]['rain'] = wsConvertRainfall($string, $uoms[1]);
    $wsWxsimPlain[$i]['rainExtra'] = '';
    if (wsFound($WXSIMprecip[$i], '&lt;')) {
        $wsWxsimPlain[$i]['rainExtra'] = langtransstr('&lt;');
    }
    if (wsFound($WXSIMprecip[$i], '&gt;')) {
        $wsWxsimPlain[$i]['rainExtra'] = langtransstr('&gt;');
    }
    $string = str_replace($from, '', $WXSIMsnow[$i]);
    $wsWxsimPlain[$i]['snow'] = wsConvertRainfall($string, $uoms[4], $SITE['uomSnow']);
    $wsWxsimPlain[$i]['snowExtra'] = '';
    if (wsFound($WXSIMsnow[$i], '&lt;')) {
        $wsWxsimPlain[$i]['snowExtra'] = langtransstr('&lt;');
    }
    if (wsFound($WXSIMsnow[$i], '&gt;')) {
        $wsWxsimPlain[$i]['snowExtra'] = langtransstr('&gt;');
    }
    $wsWxsimPlain[$i]['pop'] = $WXSIMpop[$i];
    $wsWxsimPlain[$i]['UV'] = $WXSIMuv[$i];
}
# save array in cache
#echo '<pre> date '.$d.PHP_EOL; print_r($wsWxsimPlain); exit;
$fileTime = time();
// save the time we processed this file and saved to cache
if (!file_put_contents($cacheFile, serialize($wsWxsimPlain))) {
Example #18
0
 public function getWeatherData($location = '')
 {
     global $SITE, $sunset, $sunrise, $pageName;
     $SITE['hwaIconsDir'] = 'wsHwa/hwa_icons/';
     # check if data (for this location) is in cache
     if ($this->enableCache && !empty($this->cachePath)) {
         $this->cachePath = $SITE['cacheDir'];
         $uoms = $SITE['uomTemp'] . '-' . $SITE['uomBaro'] . '-' . $SITE['uomRain'];
         $from = array('&deg;', '�', '/', ' ');
         $to = array('', '', '', '');
         $uoms = str_replace($from, $to, $uoms);
         $this->cacheFile = $this->cachePath . $pageName . '-' . $uoms;
         $returnArray = $this->loadFromCache();
         // load from cache returns data only when its data is valid
         if (!empty($returnArray)) {
             // if data is in cache and valid return data to calling program
             return $returnArray;
         }
         // eo return to calling program
     }
     // eo check cache
     #----------------------------------------------------------------------------------------------
     # combine user constants and input (1)location (2)units for temp etc  to required url
     #----------------------------------------------------------------------------------------------
     $this->apiUrlpart[0] = 'http://www.hetweeractueel.nl/includes/custom/mosfeed.php?id=';
     $this->apiUrlpart[1] = $SITE['hwaXmlId'];
     $this->apiUrlpart[2] = '&securitycode=';
     $this->apiUrlpart[3] = $SITE['hwaXmlKey'];
     $this->apiUrlpart[4] = '&extended=1';
     //		# combine thew params tinto a correct URL
     $this->weatherApiUrl = '';
     for ($i = 0; $i < count($this->apiUrlpart); $i++) {
         $this->weatherApiUrl .= $this->apiUrlpart[$i];
     }
     #----------------------------------------------------------------------------------------------
     if ($this->makeRequest()) {
         $xml = new SimpleXMLElement($this->rawData);
         //			echo "<pre>"; print_r ($xml);
         $returnArray = array();
         $rainSave = 0;
         $windSave = 0;
         $tempMaxSave = -100;
         $tempMinSave = +100;
         $windSave = 0;
         #--------------------------------------------------------------------------------------------------
         # first, get and save request info / units etc
         #--------------------------------------------------------------------------------------------------
         $i = 0;
         // headings
         $returnArray['request_info'][$i]['type'] = 'type';
         $returnArray['request_info'][$i]['city'] = 'city';
         $returnArray['request_info'][$i]['datum'] = 'date';
         $returnArray['request_info'][$i]['url'] = 'url';
         $returnArray['request_info'][$i]['timestamp'] = 'timestamp';
         $returnArray['request_info'][$i]['uomTemp'] = 'uomTemp';
         $returnArray['request_info'][$i]['uomBaro'] = 'uomBaro';
         $returnArray['request_info'][$i]['uomWind'] = 'uomWind';
         $returnArray['request_info'][$i]['uomRain'] = 'uomRain';
         $i = 1;
         // data
         $returnArray['request_info'][$i]['type'] = (string) $xml->Plaatsen->Plaats['id'];
         $returnArray['request_info'][$i]['city'] = (string) $xml->Plaatsen->Plaats['naam'];
         $returnArray['request_info'][$i]['datum'] = (string) $xml['aanmaakdatum'];
         $returnArray['request_info'][$i]['url'] = (string) $xml->Plaatsen->Plaats['alias'];
         $returnArray['request_info'][$i]['timestamp'] = strtotime($returnArray['request_info'][$i]['datum'] . (string) $xml['aanmaaktijd']);
         $returnArray['request_info'][$i]['uomTemp'] = '&deg;C';
         $returnArray['request_info'][$i]['uomBaro'] = 'hPa';
         $returnArray['request_info'][$i]['uomWind'] = ' bft';
         $returnArray['request_info'][$i]['uomRain'] = 'mm';
         #--------------------------------------------------------------------------------------------------
         #  get forecast info
         #--------------------------------------------------------------------------------------------------
         $i = 0;
         $returnArray['forecast'][$i]['date'] = 'date';
         $returnArray['forecast'][$i]['hour'] = 'hour';
         $returnArray['forecast'][$i]['timestamp'] = 'timestamp';
         #	EXTRA 12 hours data
         $returnArray['forecast'][$i]['iconL'] = 'icon';
         $returnArray['forecast'][$i]['iconUrlL'] = 'iconUrl';
         $returnArray['forecast'][$i]['weatherDescL'] = 'description';
         $returnArray['forecast'][$i]['part'] = 'Day/Night';
         $returnArray['forecast'][$i]['tempLowNU'] = 'tempLow';
         $returnArray['forecast'][$i]['tempLow'] = 'tempLow';
         $returnArray['forecast'][$i]['tempHighNU'] = 'tempHigh';
         $returnArray['forecast'][$i]['tempHigh'] = 'tempHigh';
         $returnArray['forecast'][$i]['rainChance'] = 'CoR';
         $returnArray['forecast'][$i]['snowChance'] = 'CoS';
         $returnArray['forecast'][$i]['thunderChance'] = 'CoT';
         #	6 hours data
         $returnArray['forecast'][$i]['rainNU'] = 'rain';
         $returnArray['forecast'][$i]['rain'] = 'rain';
         #   3 hours data
         $returnArray['forecast'][$i]['icon'] = 'icon';
         $returnArray['forecast'][$i]['iconUrl'] = 'iconUrl';
         $returnArray['forecast'][$i]['weatherDesc'] = 'description';
         $returnArray['forecast'][$i]['tempNU'] = 'temp';
         $returnArray['forecast'][$i]['temp'] = 'temp';
         $returnArray['forecast'][$i]['baro'] = 'baro';
         $returnArray['forecast'][$i]['windSpeedNU'] = 'wind';
         $returnArray['forecast'][$i]['windSpeed'] = 'wind';
         $returnArray['forecast'][$i]['windDir'] = 'windDir';
         $returnArray['forecast'][$i]['windDirIcon'] = 'windDirIcon';
         #
         $i2 = count($xml->Plaatsen->Plaats->Verwachtingen->Verwachting);
         $utcDiff = date('Z');
         // to help to correct utc differences
         for ($n = 1; $n <= $i2; $n++) {
             $arr = $xml->Plaatsen->Plaats->Verwachtingen->Verwachting[$n - 1];
             #				if (!isset($arr->weersymbool_12u) ){continue;}  // skip new 3 hour details
             $i++;
             $returnArray['forecast'][$i]['date'] = $datum = (string) $arr['datum'];
             // [date] => 20130424
             $returnArray['forecast'][$i]['hour'] = $hour = substr('00' . (string) $arr['uur'], -2);
             // [hour] => 12
             $timeString = $datum . 'T' . $hour . '0000';
             $returnArray['forecast'][$i]['timestamp'] = $timeOurs = $utcDiff + strtotime($timeString);
             $returnArray['forecast'][$i]['date'] = date('Ymd', $timeOurs);
             $returnArray['forecast'][$i]['hour'] = date('H', $timeOurs);
             #	12 hour forecast data
             if (isset($arr->weersymbool_12u)) {
                 $tekst = (string) $arr->weersymbool_12u;
                 $returnArray['forecast'][$i]['iconL'] = $tekst;
                 $returnArray['forecast'][$i]['iconUrlL'] = $SITE['hwaIconsDir'] . $tekst . $this->iconType;
                 $tekst = (string) $arr->weersomschrijving_12u;
                 if (!isset($this->descriptions[$tekst])) {
                     $returnArray['forecast'][$i]['weatherDescL'] = $tekst;
                 } else {
                     $returnArray['forecast'][$i]['weatherDescL'] = $this->descriptions[$tekst];
                 }
                 if (isset($arr->maximumtemperatuur)) {
                     $returnArray['forecast'][$i]['part'] = 'daytime';
                     $returnArray['forecast'][$i]['tempLow'] = $returnArray['forecast'][$i]['tempLowNU'] = '';
                     if ($amount < $tempMaxSave) {
                         $amount = $tempMaxSave;
                     }
                     $amount = (string) $arr->maximumtemperatuur;
                     $returnArray['forecast'][$i]['tempHighNU'] = $result = (string) wsConvertTemperature($amount, $this->uomTemp, $SITE['uomTemp']);
                     $returnArray['forecast'][$i]['tempHigh'] = $result . $SITE['uomTemp'];
                 } else {
                     $returnArray['forecast'][$i]['part'] = 'nighttime';
                     $amount = (string) $arr->minimumtemperatuur;
                     if ($amount > $tempMinSave) {
                         $amount = $tempMinSave;
                     }
                     $returnArray['forecast'][$i]['tempLowNU'] = $result = (string) wsConvertTemperature($amount, $this->uomTemp, $SITE['uomTemp']);
                     $returnArray['forecast'][$i]['tempLow'] = $result . $SITE['uomTemp'];
                     $returnArray['forecast'][$i]['tempHigh'] = $returnArray['forecast'][$i]['tempHighNU'] = '';
                 }
                 $returnArray['forecast'][$i]['rainChance'] = (int) $arr->neerslagkans;
                 $returnArray['forecast'][$i]['snowChance'] = (int) $arr->sneeuwkans;
                 $returnArray['forecast'][$i]['thunderChance'] = (int) $arr->onweerkans;
                 #
                 $amount = (string) $arr->neerslaghoeveelheid;
                 $result = (string) wsConvertRainfall($amount, $this->uomRain, $SITE['uomRain']);
                 $returnArray['forecast'][$i]['rainNUL'] = $result + $rainSave;
                 $returnArray['forecast'][$i]['rainL'] = $result + $rainSave . $SITE['uomRain'];
                 $amount = (int) $arr->windsnelheid;
                 if ($windSave > $amount) {
                     $amount = $windSave;
                 }
                 $returnArray['forecast'][$i]['windSpeedL'] = $amount . ' bft';
                 $returnArray['forecast'][$i]['windSpeedNUL'] = $amount;
                 #					echo '<!-- rain at '.$timeString.' '.($result + $rainSave).' == '.$returnArray['forecast'][$i]['rainL'] .'  -->'.PHP_EOL;
             }
             // eo 12 hour data
             # 	6 hours data
             if (isset($arr->neerslaghoeveelheid)) {
                 $amount = (string) $arr->neerslaghoeveelheid;
                 $returnArray['forecast'][$i]['rainNU'] = $result = (string) wsConvertRainfall($amount, $this->uomRain, $SITE['uomRain']);
                 $returnArray['forecast'][$i]['rain'] = $result . $SITE['uomRain'];
                 $rainSave = $rainSave + $result;
                 if (isset($arr->maximumtemperatuur)) {
                     $amount = (string) $arr->maximumtemperatuur;
                     $tempMaxSave = (string) wsConvertTemperature($amount, $this->uomTemp, $SITE['uomTemp']);
                 } else {
                     $amount = (string) $arr->minimumtemperatuur;
                     $tempMinSave = (string) wsConvertTemperature($amount, $this->uomTemp, $SITE['uomTemp']);
                 }
             }
             #	3 hours data
             $tekst = (string) $arr->weersymbool;
             if ($tekst == '') {
                 $string = '<!-- ' . $pageName . ' -- invalid input for ' . $timeString . ' -->' . PHP_EOL;
                 echo $string;
                 unset($returnArray['forecast'][$i]);
                 $i = $i - 1;
                 continue;
             }
             $returnArray['forecast'][$i]['icon'] = $tekst;
             $returnArray['forecast'][$i]['iconUrl'] = $SITE['hwaIconsDir'] . $tekst . $this->iconType;
             (string) $arr->weersymbool;
             $tekst = (string) $arr->weersomschrijving;
             if ($tekst == '') {
                 $string = '<!-- ' . $pageName . ' -- invalid input for ' . $timeString . ' -->' . PHP_EOL;
                 echo $string;
                 unset($returnArray['forecast'][$i]);
                 $i = $i - 1;
                 continue;
             }
             if (!isset($this->descriptions[$tekst])) {
                 $returnArray['forecast'][$i]['weatherDesc'] = $tekst;
             } else {
                 $returnArray['forecast'][$i]['weatherDesc'] = $this->descriptions[$tekst];
             }
             $amount = (string) $arr->temperatuur;
             $returnArray['forecast'][$i]['tempNU'] = $result = (string) wsConvertTemperature($amount, $this->uomTemp, $SITE['uomTemp']);
             $returnArray['forecast'][$i]['temp'] = $result . $SITE['uomTemp'];
             $amount = (string) $arr->luchtdruk;
             $returnArray['forecast'][$i]['baroNU'] = $result = (string) wsConvertBaro($amount, $this->uomBaro, $SITE['uomBaro']);
             $returnArray['forecast'][$i]['baro'] = (string) $arr->luchtdruk . $SITE['uomBaro'];
             $amount = (int) $arr->windsnelheid;
             $returnArray['forecast'][$i]['windSpeed'] = $amount . ' bft';
             $returnArray['forecast'][$i]['windSpeedNU'] = $amount;
             if ($amount > $windSave) {
                 $windSave = $amount;
             }
             $dir = strtoupper($arr->windrichting);
             if ($dir == '') {
                 $dir = 'N';
             }
             $returnArray['forecast'][$i]['windDir'] = $this->windDir[$dir];
             $returnArray['forecast'][$i]['windDirIcon'] = (string) $arr->windrichting;
             //				echo '<!--  '; print_r ($returnArray['forecast'][$i]);  echo ' -->';
             if (isset($arr->weersymbool_12u)) {
                 $rainSave = 0;
                 // 	used to gather 12 hour data for 6 hour data
                 $tempMaxSave = -100;
                 //  12 hours data from 3 hours data
                 $tempMinSave = +100;
                 //  same
                 $windSave = 0;
                 //  same
             }
         }
         // eo for loop forecasts
     }
     // eo makeRequest processing
     $this->rawdata = '';
     if (!isset($returnArray['forecast']) || count($returnArray['forecast']) < 3) {
         return $returnArray;
     }
     if ($this->enableCache && !empty($this->cachePath)) {
         $this->writeToCache($returnArray);
     }
     $this->rawdata = '';
     #		echo '<pre>'.PHP_EOL; print_r ($returnArray); exit;
     return $returnArray;
 }
Example #19
0
function wsConvertArray($kind, $array, $usedunit, $reqUnit)
{
    if ($usedunit == $reqUnit) {
        return $array;
    }
    foreach ($array as $key => $value) {
        switch ($kind) {
            case 'temp':
                $array[$key] = wsConvertTemperature($value, $usedunit, $reqUnit);
                break;
            case 'wind':
                $array[$key] = wsConvertWindspeed($value, $usedunit, $reqUnit);
                break;
            case 'rain':
                $array[$key] = wsConvertRainfall($value, $usedunit, $reqUnit);
                break;
            case 'baro':
                $array[$key] = wsConvertBaro($value, $usedunit, $reqUnit);
                break;
        }
        // end switch
    }
    // end foreach
    return $array;
}