Ejemplo n.º 1
0
$from = $wx['frombaroYday'];
$ws['baroMinYday'] = wsConvertBaro($wx['baroMinYday'], $from);
$ws['baroMinYdayTime'] = $wx['baroMinYdayTime'];
$ws['baroMaxYday'] = wsConvertBaro($wx['baroMaxYday'], $from);
$ws['baroMaxYdayTime'] = $wx['baroMaxYdayTime'];
# hum
$ws['humiMinYday'] = $wx['humiMinYday'];
$ws['humiMinYdayTime'] = $wx['humiMinYdayTime'];
$ws['humiMaxYday'] = $wx['humiMaxYday'];
$ws['humiMaxYdayTime'] = $wx['humiMaxYdayTime'];
$from = $wx['fromrainYday'];
$ws['rainRateYday'] = wsConvertRainfall($wx['rainRateYday'], $from);
$ws['rainYday'] = wsConvertRainfall($wx['rainYday'], $from);
$ws['etYday'] = wsConvertRainfall($wx['etYday'], $from);
$from = $wx['fromwindYday'];
$ws['gustMaxYday'] = wsConvertWindspeed($wx['gustMaxYday'], $from);
$ws['gustMaxYdayTime'] = $wx['gustMaxYdayTime'];
# sun
$ws['uvMaxYday'] = $wx['uvMaxYday'];
$ws['uvMaxYdayTime'] = $wx['uvMaxYdayTime'];
$ws['solarMaxYday'] = $wx['solarMaxYday'];
$ws['solarMaxYdayTime'] = $wx['solarMaxYdayTime'];
# ---------------------
$ws['check_ok'] = '3.00';
#
if ($test) {
    print_r($ws);
    exit;
}
function wswindate($datetime)
{
Ejemplo n.º 2
0
                $smin = $value;
            }
        }
    }
}
// eo for every line
$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;
}
Ejemplo n.º 3
0
    $wdirTrends = explode('#', $ws['wdirTrends']);
    $humiTrends = explode('#', $ws['humiTrends']);
    $baroTrends = explode('#', $ws['baroTrends']);
    $rainTrends = explode('#', $ws['rainTrends']);
    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);
Ejemplo n.º 4
0
             } else {
                 $long_text .= langtransstr('Varies') . ' ';
                 $dirlabel = 'calm';
             }
         }
         // eo wind
         if (isset($mtr['wind_speed_kt']) && $mtr['wind_speed_kt'] != 0) {
             $speed = round(wsConvertWindspeed($mtr['wind_speed_kt'], 'kts', $SITE["uomWind"]), $SITE["decWind"]);
             $long_text .= $speed . $SITE["uomWind"];
         } else {
             $long_text .= langtransstr('Calm') . ' ';
             $dirlabel = 'calm';
         }
         // eo wind_speed
         if (isset($mtr['gust_speed'])) {
             $speed = round(wsConvertWindspeed($mtr['wind_speed_kt'], 'kts', $SITE["uomWind"]), $SITE["decWind"]);
             $long_text .= '<br />' . langtransstr('Gust to') . ' ' . $speed . $SITE["uomWind"];
         }
         // eo gust
         $mtr['wind_text'] = $long_text;
         ws_message('<!-- module metarDisplay.php (' . __LINE__ . '):' . ' ' . $key . '  = ' . $long_text . ' -->');
     }
     // eo wind
 }
 // end clean up, translate etc
 ws_message('<!-- module metarDisplay.php (' . __LINE__ . '):' . print_r($mtr, true) . '  -->');
 // time to format the output for display
 if ($thisCol >= $maxCols) {
     echo '</tr>' . PHP_EOL;
     echo '<tr><td colspan="' . $maxCols . '"></td></tr>' . PHP_EOL;
     echo '<tr>' . PHP_EOL;
Ejemplo n.º 5
0
 if (wsFound($WXSIMwind[$i], '&rarr;')) {
     $arr = explode('&rarr;', $WXSIMwind[$i]);
     $wind = explode('-', $arr[1]);
     if ($wind[0] > $wind1) {
         $wind1 = $wind[0];
     }
 }
 echo '<!-- PP wind = ' . $WXSIMwind[$i] . ' result wind = ' . $wind1 . 'units = ' . $WXSIMwindunits[$i] . ' -->' . PHP_EOL;
 if (wsFound($WXSIMwindunits[$i], 'kp')) {
     $WXSIMwindunits[$i] = 'kmh';
 }
 if (wsFound($WXSIMwindunits[$i], 'km')) {
     $WXSIMwindunits[$i] = 'kmh';
 }
 $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;')) {
Ejemplo n.º 6
0
function mtr_get_wind($part)
{
    # Decodes wind direction and speed information.
    # Format is dddssKT where ddd = degrees from North, ss = speed,
    # KT for knots  or dddssGggKT where G stands for gust and gg = gust speed.
    #       ss or gg can be a 3-digit number.)
    #       KT can be replaced with MPS for meters per second or KMH for  kilometers per hour.
    # Also possible   VRBssKT  VRB03KT
    #
    global $metarPtr, $group, $script, $result;
    $function = $script . '-mtr_get_wind';
    if (preg_match('/^([0-9G]{5,10}|VRB[0-9G]{2,7})(KT|MPS|KMH)$/', $part, $pieces)) {
        ws_message('<!-- module ' . $function . ' (' . __LINE__ . '): windspeed present -->');
        $part = $pieces[1];
        $unit = $pieces[2];
        if ($part == '00000') {
            $result['wind_speed_kt'] = 0;
        } else {
            preg_match('/([0-9]{3}|VRB)([0-9]{2,3})G?([0-9]{2,3})?/', $part, $pieces);
            if ($pieces[1] == 'VRB') {
                $result['wind_dir'] = 'varies';
            } else {
                $result['wind_dir'] = (int) $pieces[1];
            }
            # [wind_speed_kt]
            # [gust_speed]
            if (isset($pieces[3]) && $pieces[3] != 0) {
                $result['gust_speed'] = $pieces[3];
            }
            if ($unit == 'KT') {
                $result['wind_speed_kt'] = $pieces[2];
                $result['wind_unit_org'] = 'kts';
                $result['wind_speed_org'] = $pieces[2];
            } elseif ($unit == 'MPS') {
                $result['wind_speed_kt'] = wsConvertWindspeed($pieces[2], 'ms', 'kts');
                $result['wind_unit_org'] = 'ms';
                $result['wind_speed_org'] = $pieces[2];
            } else {
                $result['wind_speed_kt'] = wsConvertWindspeed($pieces[2], 'kmh', 'kts');
                $result['wind_unit_org'] = 'kmh';
                $result['wind_speed_org'] = $pieces[2];
            }
        }
        // eo else calm
        $metarPtr++;
        ws_message('<!-- module ' . $function . ' (' . __LINE__ . '): $metarPtr set to ' . $metarPtr . ' -->');
    }
    $group++;
    ws_message('<!-- module ' . $function . ' (' . __LINE__ . '): $group set to ' . $group . ' -->');
}
Ejemplo n.º 7
0
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    -->');
    }
}
Ejemplo n.º 8
0
 public function getWeatherData($userLocation = '')
 {
     global $SITE, $pageName, $dayNight;
     #----------------------------------------------------------------------------------------------
     # clean user input
     #----------------------------------------------------------------------------------------------
     # location should be 8 chars without any special characters
     #
     $userLocation = trim($userLocation);
     if (strlen($userLocation) > 3) {
         $this->location = $userLocation;
     }
     #----------------------------------------------------------------------------------------------
     # check if data (location and unit) is in cache
     $filename = str_replace('/', '.', $userLocation);
     $this->cachePath = $SITE['cacheDir'];
     $string = $pageName . $this->lang . $userLocation . $SITE['uomTemp'] . $SITE['uomWind'] . $SITE['uomBaro'] . $SITE['uomDistance'];
     $from = array('&deg;', '�', '/', ' ', '.', '-');
     $to = '';
     $string = str_replace($from, $to, $string);
     if ($SITE['uomTemp'] != '&deg;C') {
         $this->apiUrlpart[3] = 'f';
     }
     $this->cacheFile = $this->cachePath . $string . '.txt';
     if ($this->enableCache && !empty($this->cachePath)) {
         $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 valid data and return to calling program
     }
     // eo check cache
     #----------------------------------------------------------------------------------------------
     # combine everything into required url
     #----------------------------------------------------------------------------------------------
     #
     $this->apiUrlpart[1] = $this->location;
     $this->weatherApiUrl = '';
     for ($i = 0; $i < count($this->apiUrlpart); $i++) {
         $this->weatherApiUrl .= $this->apiUrlpart[$i];
     }
     #----------------------------------------------------------------------------------------------
     if ($this->makeRequest()) {
         // load xml from url and process
         $this->rawData = str_replace('<yweather:', '<yweather', $this->rawData);
         // clean up unneeded ":" =  Namespace Elements
         $xml = new SimpleXMLElement($this->rawData);
         // process xml
         $returnArray = array();
         #--------------------------------------------------------------------------------------------------
         # first, get and save request infor / units etc
         #--------------------------------------------------------------------------------------------------
         $i = 0;
         $returnArray['request_info'][$i]['type'] = 'type';
         $returnArray['request_info'][$i]['city'] = 'city';
         $returnArray['request_info'][$i]['time'] = 'unixTime';
         $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 = 0;
         $returnArray['request_info'][$i]['type'] = (string) $xml->channel->title;
         $returnArray['request_info'][$i]['city'] = (string) $xml->channel->yweatherlocation['city'] . ' - ' . (string) $xml->channel->yweatherlocation['country'];
         $returnArray['request_info'][$i]['time'] = (string) $xml->channel->lastBuildDate;
         # yweather:units temperature="F" distance="mi" pressure="in" speed="mph"
         # yweather:units temperature="C" distance="km" pressure="mb" speed="km/h"
         $returnArray['request_info'][$i]['uomTemp'] = $this->uomTemp = (string) $xml->channel->yweatherunits['temperature'];
         $returnArray['request_info'][$i]['uomDistance'] = $this->uomDistance = (string) $xml->channel->yweatherunits['distance'];
         $returnArray['request_info'][$i]['uomBaro'] = $this->uomBaro = (string) $xml->channel->yweatherunits['pressure'];
         $returnArray['request_info'][$i]['uomWind'] = $this->uomWind = (string) $xml->channel->yweatherunits['speed'];
         // <lastBuildDate>Tue, 10 Sep 2013 2:25 pm CEST</lastBuildDate>
         // <yweather:location city="Leuven" region="" country="Belgium"/>
         #--------------------------------------------------------------------------------------------------
         # get current condition descriptions
         #--------------------------------------------------------------------------------------------------
         $i = 0;
         $returnArray['ccn'][$i]['humidity'] = 'humidity';
         $returnArray['ccn'][$i]['baroNU'] = 'baro';
         $returnArray['ccn'][$i]['baro'] = 'baro';
         $returnArray['ccn'][$i]['baroTrend'] = 'baroTrend';
         $returnArray['ccn'][$i]['visibNU'] = 'visibility';
         $returnArray['ccn'][$i]['visib'] = 'visibility';
         $returnArray['ccn'][$i]['windNU'] = 'wind';
         $returnArray['ccn'][$i]['wind'] = 'wind';
         $returnArray['ccn'][$i]['windDeg'] = 'windDeg';
         $returnArray['ccn'][$i]['description'] = 'description';
         $returnArray['ccn'][$i]['tempNU'] = 'temp';
         $returnArray['ccn'][$i]['temp'] = 'temp';
         $returnArray['ccn'][$i]['icon'] = 'icon';
         $returnArray['ccn'][$i]['iconUrl'] = 'iconUrl';
         $returnArray['ccn'][$i]['date'] = 'date';
         $returnArray['ccn'][$i]['timestamp'] = 'timestamp';
         $i = 1;
         $returnArray['ccn'][$i]['humidity'] = (string) $xml->channel->yweatheratmosphere['humidity'];
         $amount = (string) $xml->channel->yweatheratmosphere['pressure'];
         $returnArray['ccn'][$i]['baroNU'] = $result = (string) wsConvertBaro($amount, $this->uomBaro, $SITE['uomBaro']);
         $returnArray['ccn'][$i]['baro'] = $result . $SITE['uomBaro'];
         $returnArray['ccn'][$i]['baroTrend'] = (string) $xml->channel->yweatheratmosphere['rising'];
         $amount = (string) $xml->channel->yweatheratmosphere['visibility'];
         $returnArray['ccn'][$i]['visibNU'] = $result = (string) wsConvertDistance($amount, $this->uomDistance, $SITE['uomDistance']);
         $returnArray['ccn'][$i]['visib'] = $result . $SITE['uomDistance'];
         $amount = (string) $xml->channel->yweatherwind['speed'];
         $returnArray['ccn'][$i]['windNU'] = $result = (string) wsConvertWindspeed($amount, $this->uomWind, $SITE['uomWind']);
         $returnArray['ccn'][$i]['wind'] = $result . $SITE['uomWind'];
         $returnArray['ccn'][$i]['windDeg'] = (string) $xml->channel->yweatherwind['direction'];
         $returnArray['ccn'][$i]['text'] = (string) $xml->channel->item->yweathercondition['text'];
         $amount = (string) $xml->channel->item->yweathercondition['temp'];
         $returnArray['ccn'][$i]['tempNU'] = $result = (string) wsConvertTemperature($amount, $this->uomTemp, $SITE['uomTemp']);
         $returnArray['ccn'][$i]['temp'] = $result . $SITE['uomTemp'];
         $yaIconNr = (int) 1.0 * $xml->channel->item->yweathercondition['code'];
         if (!isset($dayNight)) {
             $dayNight = 'daylight';
         }
         $search = array('26', '28', '30', '32', '34');
         $repl = array('27', '27', '29', '31', '33');
         if ($dayNight == 'nighttime') {
             $yaIconNr = str_replace($search, $repl, $yaIconNr);
             // night is icon minus 1 for certain conditions
             if ($returnArray['ccn'][$i]['text'] == 'Sunny') {
                 $returnArray['ccn'][$i]['text'] = 'Clear';
             }
         } else {
             $yaIconNr = str_replace($repl, $search, $yaIconNr);
             // night is icon minus 1 for certain conditions
             if ($returnArray['ccn'][$i]['text'] == 'Clear') {
                 $returnArray['ccn'][$i]['text'] = 'Sunny';
             }
         }
         $returnArray['ccn'][$i]['icon'] = $yaIconNr;
         $returnArray['ccn'][$i]['iconUrl'] = $this->icons_url . $yaIconNr . $this->icons_ext;
         $returnArray['ccn'][$i]['date'] = (string) $xml->channel->item->yweathercondition['date'];
         $returnArray['ccn'][$i]['timestamp'] = strtotime((string) $xml->channel->item->yweathercondition['date']);
         ws_message('<!-- module yahoo.weather2.php (' . __LINE__ . ') Condition text: ' . $returnArray['ccn'][$i]['text'] . '  icon: ' . $yaIconNr . '       -->');
         #--------------------------------------------------------------------------------------------------
         #  get forecast info
         #--------------------------------------------------------------------------------------------------
         $i = 0;
         $returnArray['forecast'][$i]['weekday'] = 'day';
         $returnArray['forecast'][$i]['date'] = 'date';
         $returnArray['forecast'][$i]['timestamp'] = 'timestamp';
         $returnArray['forecast'][$i]['tempLowNU'] = 'tempLow';
         $returnArray['forecast'][$i]['tempLow'] = 'tempLow';
         $returnArray['forecast'][$i]['tempHighNU'] = 'tempHigh';
         $returnArray['forecast'][$i]['tempHigh'] = 'tempHigh';
         $returnArray['forecast'][$i]['icon'] = 'icon';
         $returnArray['forecast'][$i]['condition'] = 'text';
         for ($i = 1; $i <= count($xml->channel->item->yweatherforecast); $i++) {
             $data = $xml->channel->item->yweatherforecast[$i - 1];
             $returnArray['forecast'][$i]['weekday'] = (string) $data['day'];
             $returnArray['forecast'][$i]['date'] = (string) $data['date'];
             $returnArray['forecast'][$i]['timestamp'] = strtotime((string) $data['date']);
             $amount = (string) $data['low'];
             $returnArray['forecast'][$i]['tempLowNU'] = $result = (string) wsConvertTemperature($amount, $this->uomTemp, $SITE['uomTemp']);
             $returnArray['forecast'][$i]['tempLow'] = $result . $SITE['uomTemp'];
             $amount = (string) $data['high'];
             $returnArray['forecast'][$i]['tempHighNU'] = $result = (string) wsConvertTemperature($amount, $this->uomTemp, $SITE['uomTemp']);
             $returnArray['forecast'][$i]['tempHigh'] = $result . $SITE['uomTemp'];
             $returnArray['forecast'][$i]['icon'] = (string) $data['code'];
             $returnArray['forecast'][$i]['condition'] = (string) $data['text'];
             $returnArray['forecast'][$i]['iconUrl'] = $this->icons_url . $returnArray['forecast'][$i]['icon'] . $this->icons_ext;
         }
         // eo for loop forecast
     } else {
         // eo makerequest processing
         ws_message('<!-- module yahoo.weather2.php (' . __LINE__ . ') weatherdata not available, try to load (' . $this->cacheFile . ')  from cache  -->');
         $this->cacheTime = 100 * $this->cacheTime;
         $returnArray = $this->loadFromCache();
         return $returnArray;
     }
     #--------------------------------------------------------------------------------------------------
     #  write to cache
     #--------------------------------------------------------------------------------------------------
     if ($this->enableCache && !empty($this->cachePath)) {
         $this->writeToCache($returnArray);
     }
     return $returnArray;
 }
Ejemplo n.º 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;
    }
}
Ejemplo n.º 10
0
 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;
 }
Ejemplo n.º 11
0
 for ($n = 0; $n < count($arrConvert); $n++) {
     $number = $fields[$arrConvert[$n]]['unit'];
     $usedunit = $uoms[$number];
     $amount = $wsWxsimArray[$i][$arrConvert[$n]];
     switch ($number) {
         case 0:
             // temp
             $wsWxsimArray[$i][$arrConvert[$n]] = wsConvertTemperature($amount, $usedunit);
             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;
     }
Ejemplo n.º 12
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();
}
Ejemplo n.º 13
0
$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);
$ws['gustMaxMonth'] = wsConvertWindspeed('18.3', $from);
$ws['gustMaxYear'] = wsConvertWindspeed('25.2', $from);
if ($ws['gustAct'] <= $ws['windAct']) {
    $ws['gustAct'] = $ws['windAct'];
}
# ------------------------------------------  UV   ---------------------
$ws['uvMaxTodayTime'] = wdDate('10:59');
$ws['uvMaxYdayTime'] = wdDate('13:01');
$ws['uvMaxMonthTime'] = wdYMD('2015', '4', '11');
$ws['uvMaxYearTime'] = wdYMD('2015', '4', '11');
$ws['uvAct'] = '2.0';
$ws['uvMaxToday'] = '2.0';
$ws['uvMaxYday'] = '3.7';
$ws['uvMaxMonth'] = '4.0';
$ws['uvMaxYear'] = '4.0';
# ------------------------------------------ Solar  --------------------
$ws['solarMaxTodayTime'] = wdDate('11:02');
Ejemplo n.º 14
0
function convertWind($wind)
{
    global $doWindConvert, $Units, $uom_in;
    if ($wind == '-') {
        return $wind;
    }
    if ($doWindConvert == false) {
        return $wind;
    }
    return wsConvertWindspeed($wind, $uom_in['wind'], $Units['wind']);
}
Ejemplo n.º 15
0
 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;
 }
Ejemplo n.º 16
0
$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);
$ws['gustMaxYdayTime'] = wdDate($wx['gustMaxYTime']);
$ws['gustMaxMonth'] = wsConvertWindspeed($wx['gustMaxMonth'], $from_wind);
$ws['gustMaxMonthTime'] = wd_ymd($wx['gustMaxMonthTime']);
$ws['gustMaxYear'] = wsConvertWindspeed($wx['gustMaxYear'], $from_wind);
$ws['gustMaxYearTime'] = wd_ymd($wx['gustMaxYearTime']);
$ws['gustMaxAll'] = wsConvertWindspeed($wx['gustMaxAll'], $from_wind);
$ws['gustMaxAllTime'] = wd_ymd($wx['gustMaxAllTime']);
if ($ws['gustAct'] < $ws['windAct']) {
    $ws['gustAct'] = $ws['windAct'];
}
$from_distance = trim(strtolower($wx['fromdistance']));
$ws['windrunToday'] = wsConvertDistance($wx['windrunToday'], $from_distance);
# ------------------------------------------  UV   ---------------------
$ws['uvAct'] = $wx['uvAct'] * 1.0;
$ws['uvMaxToday'] = $wx['uvMaxToday'] * 1.0;
$ws['uvMaxTodayTime'] = wdDate($wx['uvMaxTodayTime']);
$ws['uvMaxYday'] = $wx['uvMaxYday'] * 1.0;
$ws['uvMaxYdayTime'] = wdDate($wx['uvMaxYdayTime']);
$ws['uvMaxMonth'] = $wx['uvMaxMonth'] * 1.0;
$ws['uvMaxMonthTime'] = wd_ymd($wx['uvMaxMonthTime']);
$ws['uvMaxYear'] = $wx['uvMaxYear'] * 1.0;
Ejemplo n.º 17
0
function wsBeaufortNumber($inWind, $usedunit)
{
    global $wsDebug;
    $rawwind = $inWind;
    // first convert all winds to knots
    $amount = str_replace(',', '.', $rawwind);
    $wind0kts = 0.0;
    if (preg_match('/kts|knot/i', $usedunit)) {
        $wind0kts = $rawwind * 1.0;
    } elseif (preg_match('/mph/i', $usedunit)) {
        $wind0kts = wsConvertWindspeed($inWind, 'mph', 'kts');
        //  $wind0kts = $rawwind * 0.8689762;
    } elseif (preg_match('/mps|m\\/s/i', $usedunit)) {
        $wind0kts = wsConvertWindspeed($inWind, 'ms', 'kts');
        //  $wind0kts = $rawwind * 1.94384449;
    } elseif (preg_match('/kmh|km\\/h/i', $usedunit)) {
        $wind0kts = wsConvertWindspeed($inWind, 'kmh', 'kts');
        //  $wind0kts = $rawwind * 0.539956803;
    } else {
        if ($wsDebug) {
            echo "<!-- function wsBeaufortNumber unknown input unit '{$usedunit}' for wind = {$rawwind} -->" . PHP_EOL;
        }
        $wind0kts = $rawwind * 1.0;
    }
    // return a number for the beaufort scale based on wind in knots
    switch (TRUE) {
        case $wind0kts < 1:
            $return = 0;
            break;
        case $wind0kts < 4:
            $return = 1;
            break;
        case $wind0kts < 7:
            $return = 2;
            break;
        case $wind0kts < 11:
            $return = 3;
            break;
        case $wind0kts < 17:
            $return = 4;
            break;
        case $wind0kts < 22:
            $return = 5;
            break;
        case $wind0kts < 28:
            $return = 6;
            break;
        case $wind0kts < 34:
            $return = 7;
            break;
        case $wind0kts < 41:
            $return = 8;
            break;
        case $wind0kts < 48:
            $return = 9;
            break;
        case $wind0kts < 56:
            $return = 10;
            break;
        case $wind0kts < 64:
            $return = 11;
            break;
        case $wind0kts >= 64:
            $return = 12;
            break;
        default:
            $return = 'invalid';
    }
    // eo switch
    if ($wsDebug) {
        echo "<!-- module wsFunctions.php: function wsBeaufortNumber in = winspeed: {$amount} , unitFrom: {$usedunit}  out = {$return} -->\n";
    }
    return $return;
}