diff --git a/src/main/java/no/nibio/vips/logic/service/LogicService.java b/src/main/java/no/nibio/vips/logic/service/LogicService.java
index 2bf2f79d53e29d7d3d1660ac4d2dc2f89a61b856..ffd2d14c5bb4ec44c85c94027057245293dec13f 100644
--- a/src/main/java/no/nibio/vips/logic/service/LogicService.java
+++ b/src/main/java/no/nibio/vips/logic/service/LogicService.java
@@ -22,6 +22,8 @@ package no.nibio.vips.logic.service;
 import com.ibm.icu.util.ULocale;
 import java.util.TimeZone;
 import de.micromata.opengis.kml.v_2_2_0.Kml;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
 import java.text.DateFormat;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
@@ -66,6 +68,7 @@ import no.nibio.vips.util.CSVPrintUtil;
 import no.nibio.vips.util.ServletUtil;
 import no.nibio.vips.util.SolarRadiationUtil;
 import no.nibio.vips.util.weather.ALabDataParser;
+import no.nibio.vips.util.weather.FruitWebDavisDataParser;
 import no.nibio.vips.util.weather.MetosDataParser;
 import no.nibio.vips.util.weather.ParseWeatherDataException;
 import org.jboss.resteasy.client.jaxrs.ResteasyWebTarget;
@@ -537,6 +540,35 @@ public class LogicService {
         return Response.ok().entity(observations).build();
     }
     
+    @GET
+    @POST
+    @Path("weather/proxy/fruitwebdavis/{stationId}")
+    @Produces("application/json;charset=UTF-8")
+    public Response getFruitWebDavisWeatherData(
+            @PathParam("stationId") String stationId, 
+            @FormParam("timeZone") String timeZonePOST, 
+            @QueryParam("timeZone") String timeZoneGET, 
+            @FormParam("startDate") String startDatePOST,
+            @QueryParam("startDate") String startDateGET
+            )
+    {
+        List<WeatherObservation> observations;
+        try 
+        {
+            String timeZoneParam = timeZonePOST != null ? timeZonePOST : timeZoneGET != null ? timeZoneGET : "UTC";
+            TimeZone timeZone = TimeZone.getTimeZone(timeZoneParam);
+            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+            format.setTimeZone(timeZone);
+            String startDateParam = startDatePOST != null ? startDatePOST : startDateGET;
+            Date startDate1 = format.parse(startDateParam);
+            observations = new FruitWebDavisDataParser().getWeatherObservations(URLDecoder.decode(stationId, "UTF-8"), timeZone, startDate1);
+        } catch (ParseException | ParseWeatherDataException | NullPointerException | UnsupportedEncodingException ex) {
+            return Response.serverError().entity(ex).build();
+        }
+        return Response.ok().entity(observations).build();
+    }
+    
+    
     @GET
     @POST
     @Path("weather/proxy/alab/{stationId}")
diff --git a/src/main/java/no/nibio/vips/logic/util/Globals.java b/src/main/java/no/nibio/vips/logic/util/Globals.java
index 3e66ae872e4e97398820f786c2a1e449373c8e4f..7ef168ef4999efb360cde061dc251f82463aba17 100644
--- a/src/main/java/no/nibio/vips/logic/util/Globals.java
+++ b/src/main/java/no/nibio/vips/logic/util/Globals.java
@@ -76,7 +76,9 @@ public class Globals {
         "Europe/Sarajevo",
         "Europe/Stockholm",
         "Europe/Helsinki",
+        "Europe/Riga",
         "Europe/Sofia"
+        
     };
     
     public static int DEFAULT_UUID_VALIDITY_DURATION_DAYS = 30;
diff --git a/src/main/java/no/nibio/vips/util/weather/FruitWebDavisDataParser.java b/src/main/java/no/nibio/vips/util/weather/FruitWebDavisDataParser.java
index 50fb663d5e1965e108518e43b36db312f158134b..8f0c239ef2be7ffa0155d9faf41c074ed32f48ae 100644
--- a/src/main/java/no/nibio/vips/util/weather/FruitWebDavisDataParser.java
+++ b/src/main/java/no/nibio/vips/util/weather/FruitWebDavisDataParser.java
@@ -22,6 +22,7 @@ package no.nibio.vips.util.weather;
 import java.io.BufferedReader;
 import java.io.IOException;
 import java.io.InputStreamReader;
+import java.net.URISyntaxException;
 import java.net.URL;
 import java.text.MessageFormat;
 import java.text.ParseException;
@@ -71,9 +72,9 @@ public class FruitWebDavisDataParser {
         String[] headers;
         Map<Integer, Integer> elementOrdering = new HashMap<>();
         try {
-            URL metosURL = new URL(MessageFormat.format(FruitWebDavisDataParser.FRUITWEB_URL_TEMPLATE, stationID,urlDFormat.format(startDate)));
+            URL fruitwebDavisURL = new URL(MessageFormat.format(FruitWebDavisDataParser.FRUITWEB_URL_TEMPLATE, stationID,urlDFormat.format(startDate)));
             BufferedReader in = new BufferedReader(
-            new InputStreamReader(metosURL.openStream()));
+            new InputStreamReader(fruitwebDavisURL.openStream()));
 
             String inputLine;
             Date testTimestamp;
@@ -82,6 +83,7 @@ public class FruitWebDavisDataParser {
             // If the resolution is 30 minutes or 1 hour
             while ((inputLine = in.readLine()) != null)
             {
+                //System.out.println(inputLine);
                 String[] lineData = inputLine.split(";");
                 // Skip empty lines
                 if(lineData.length <= 1)
@@ -124,11 +126,12 @@ public class FruitWebDavisDataParser {
         
 
         // Data comes in half-hour chunks (resolution = 30 minutes)
+        // Unlike Metos, the hour starts at :30
         if(logIntervalId.equals(WeatherObservation.LOG_INTERVAL_ID_30M))
         {
-            Boolean shouldBe00Now = true;
-            String[] data00 = null;
+            Boolean shouldBe30Now = true;
             String[] data30 = null; 
+            String[] data00 = null;
             Date timestamp = null;
             for(String[] lineData: data)
             {
@@ -140,7 +143,14 @@ public class FruitWebDavisDataParser {
                 {
                     continue;
                 }
-                else if(lineData[1].split(":")[1].equals("00") && shouldBe00Now)
+                else if(lineData[1].split(":")[1].equals("30") && shouldBe30Now)
+                {
+                    data30 = lineData;
+                    
+                    shouldBe30Now = false;
+                    continue; // So that we summarize only after :00 data has been set too
+                }
+                else if(lineData[1].split(":")[1].equals("00") && !shouldBe30Now)
                 {
                     data00 = lineData;
                     try
@@ -151,20 +161,14 @@ public class FruitWebDavisDataParser {
                     {
                         throw new ParseWeatherDataException("Error with time stamp in weather data from Davis/FruitWeb station: " + ex.getMessage());
                     }
-                    shouldBe00Now = false;
-                    continue; // So that we summarize only after :30 data has been set too
-                }
-                else if(lineData[1].split(":")[1].equals("30") && !shouldBe00Now)
-                {
-                    data30 = lineData;
-                    shouldBe00Now = true;
+                    shouldBe30Now = true;
                 }
                 else
                 {
-                    throw new ParseWeatherDataException("Doesn't make sense!");
+                    throw new ParseWeatherDataException("Doesn't make sense at " + lineData[0] + " " + lineData[1] + "!");
                 }
 
-                for(Integer i=2;i<data00.length;i++)
+                for(Integer i=2;i<data30.length;i++)
                 {
                     Double aggregateValue = null;
                     Double value00 = Double.valueOf(data00[i].replaceAll(",","."));
diff --git a/src/test/java/no/nibio/vips/util/weather/FruitWebDavisDataParserTest.java b/src/test/java/no/nibio/vips/util/weather/FruitWebDavisDataParserTest.java
index 0b2887c32676cdd8d4413dc30e856a20dd2fc239..b8d5b30074d1458d4c04361c260a6e3e4d73ffcf 100644
--- a/src/test/java/no/nibio/vips/util/weather/FruitWebDavisDataParserTest.java
+++ b/src/test/java/no/nibio/vips/util/weather/FruitWebDavisDataParserTest.java
@@ -69,10 +69,10 @@ public class FruitWebDavisDataParserTest {
         FruitWebDavisDataParser instance = new FruitWebDavisDataParser();
         
         List<WeatherObservation> result = instance.getWeatherObservations(stationID, timeZone, startDate);
-        for(WeatherObservation obs:result)
+        /*for(WeatherObservation obs:result)
         {
             System.out.println(obs);
-        }
+        }*/
         assertNotNull( result);
         
     }