<?php
ini_set('display_errors', '1');

function gettieinfo(){
global $rdata;
$rfi = "/home/web3/subdomains/nwn/cache/roadfitest.json";
  if (filesize($rfi) > 2 and (filemtime($rfi) + 1000) > time()) {
    $rdata = file_get_contents($rfi);
  }else{
    $rdata = file_get_contents("http://tieinfo.mustcode.fi/tieinfo/saa/paikkakunta/laukaa?json");
    file_put_contents($rfi, $rdata);
    chmod($rfi, 0666);
  }
}
gettieinfo();
if(filesize($rfi) > 2) {
  sleep(2); 
  gettieinfo();
}

$data = json_decode($rdata,true);
$howman = count($data);
//print_r($data[0]); // Näyttää ensimmäisen aseman raakadatan

for($i=0;$i<$howman;$i++){
  $station = $data[$i];
  $airtemp = $station[airTemperature];
  $avgwind = $station[averageWindspeed];
  $maxwind = $station[maxWindspeed];
  $wdir = wdir($station[windDirection]);
  $hum = $station[humidity];
  if(is_numeric($hum)){$dew = dewpoint($airtemp,$hum);}else{$dew='';}
  $roadtemp = $station[groundTemperature];
  $lat = $station[latitude];
  $lon = $station[longitude];
  $time = $station[measurementtime];
  $time = strtotime($time);
  $rtime = date('Y-m-d H:i:s',$time);
  $utime = gmdate('Y-m-d H:i:s',$time);
  $daynight = $station[sunup];
  $name = utf8_decode($station[tsaName]);
  $city = utf8_decode($station[cityName]);
  $area = fixarea(utf8_decode($station[area]));
  $tie = gettie($name);
  $name = fixname($name);
  if($city == "Kotikuntaa vailla olevat"){$city=$name;}
  if($city<>$name){$name = $city.', '.$name;}
  $rcond = rcond($station[roadSurfaceConditions1]);
  $visib = $station[visibility];
  $cond = conda($station[precipitation]);
  $precint = $station[precipitationintensity];
  $prectype = condtype($station[precipitationtype]);
  $precsum = $station[precipitationsum];
  $statid = $station[stationId];
  $cameras = $station[cameras];
  if(count($cameras)>0){
  $cam = $station[cameras][0][imageUrl];
  }

echo $name.'|'.$airtemp.'|'.count($cameras).' cameras|'.$cam.'<br/>
<img src="'.$cam.'" /><br/><br/>';

}

###################################################
function fixarea($raw){
  global $city;
  if($raw=="Lappi"){return $city;}
  elseif($raw=="Turku"){return "Varsinais-Suomi";}
  elseif($raw=="Vaasa"){return "Pohjanmaa";}
  else{return $raw;}
}
function fixname($raw){
  $tie = substr($raw, strpos($raw,"_")+1,strlen($raw));
  $th = array("_Opt","_P","_R","_O","_K","_S");
  $tie = str_replace($th, "", $tie);
  return str_replace("_", " ", $tie);
}
function gettie($raw){
  $tie = substr($raw, 0, strpos($raw,"_"));
  $th = array("vt","kt","yt","st");
  return str_replace($th, "", $tie);
}
function rcond($raw){
  if($raw==0){return "--";}
  elseif($raw==1){return "Kuiva";}
  elseif($raw==2){return "Kostea";}
  elseif($raw==3){return "Märkä";}
  elseif($raw==4){return "Märkä, suolattu";}
  elseif($raw==5){return "Kuura";}
  elseif($raw==6){return "Luminen";}
  elseif($raw==7){return "Jäinen";}
  elseif($raw==8){return "Mahd. liukas";}
  else {return $raw;}
}
function conda($raw){
  if($raw==0){return "Pouta";}
  elseif($raw==1){return "Heikko";}
  elseif($raw==2){return "Kohtalainen";}
  elseif($raw==3){return "Runsas";}
  elseif($raw==4){return "Heikko";}
  elseif($raw==5){return "Kohtalainen";}
  elseif($raw==6){return "Runsas";}
  else {return "--";}
}
function condtype($raw){
  if($raw==7){return "P";}
  elseif($raw==8){return "Hyvin heikko sade";}
  elseif($raw==9){return "Tihku";}
  elseif($raw==10){return "Vesisade";}
  elseif($raw==11){return "Lumisade";}
  elseif($raw==12){return "Märkä räntä";}
  elseif($raw==13){return "Räntä";}
  elseif($raw==14){return "Rakeita";}
  elseif($raw==15){return "Jääkiteitä";}
  elseif($raw==16){return "Lumijyväsiä";}
  elseif($raw==17){return "Lumirakeita";}
  elseif($raw==18){return "Jäätävä tihku";}
  elseif($raw==19){return "Jäätävä sade";}
  else {return '--';}
}
function wdir ($degrees) {
  $windlabel = array ("N","NNE", "NE", "ENE", "E", "ESE", "SE", "SSE", "S","SSW","SW", "WSW", "W", "WNW", "NW", "NNW", "N");
  $dir = $windlabel[ (int) ($degrees / 22.5) ];
  return $dir;
}

function dewpoint($tc, $rh) {
$dew = $tc-((14.55+0.114*$tc)*(1-0.01*$rh)+pow((2.5+0.007*$tc)*(1-0.01*$rh),3)+(15.9+0.117*$tc)*pow((1-0.01*$rh),14));
return sprintf("%01.1f",$dew);
}
?>