diff --git a/src/main/java/no/nibio/vips/logic/modules/barleynetblotch/BarleyNetBlotchModelService.java b/src/main/java/no/nibio/vips/logic/modules/barleynetblotch/BarleyNetBlotchModelService.java
index 58b9c26ed68b2b13de307c5f059fac87327f9f3c..493f96c287ff253dfee0380009ef3395b27b2aa3 100755
--- a/src/main/java/no/nibio/vips/logic/modules/barleynetblotch/BarleyNetBlotchModelService.java
+++ b/src/main/java/no/nibio/vips/logic/modules/barleynetblotch/BarleyNetBlotchModelService.java
@@ -19,11 +19,8 @@
 package no.nibio.vips.logic.modules.barleynetblotch;
 
 import com.webcohesion.enunciate.metadata.Facet;
-import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.List;
-import java.util.TimeZone;
+
+import java.util.*;
 import javax.ejb.EJB;
 import javax.persistence.EntityManager;
 import javax.persistence.NoResultException;
@@ -38,10 +35,7 @@ import no.nibio.vips.entity.ModelConfiguration;
 import no.nibio.vips.entity.Result;
 import no.nibio.vips.entity.WeatherObservation;
 import no.nibio.vips.logic.controller.session.ForecastBean;
-import no.nibio.vips.logic.entity.Organism;
-import no.nibio.vips.logic.entity.Organization;
-import no.nibio.vips.logic.entity.PointOfInterestWeatherStation;
-import no.nibio.vips.logic.entity.Preparation;
+import no.nibio.vips.logic.entity.*;
 import no.nibio.vips.logic.util.RunModelException;
 import no.nibio.vips.logic.util.SystemTime;
 import no.nibio.vips.observation.ObservationImpl;
@@ -140,6 +134,9 @@ public class BarleyNetBlotchModelService {
     public Response runModel(
             @PathParam("organizationId") Integer organizationId,
             @QueryParam("timeZone") String timeZoneStr,
+            @QueryParam("weatherdataType") String weatherdataType,
+            @QueryParam("latitude") Double latitude,
+            @QueryParam("longitude") Double longitude,
             @QueryParam("weatherStationId") Integer weatherStationId,
             @QueryParam("sowingDate") String sowingDateStr,
             @QueryParam("cropId") Integer cropOrganismId,
@@ -173,47 +170,57 @@ public class BarleyNetBlotchModelService {
         ModelConfiguration config = new ModelConfiguration();
         config.setModelId("BARLEYNETB");
         // Get weather data from weather station
-        PointOfInterestWeatherStation weatherStation = em.find(PointOfInterestWeatherStation.class, weatherStationId);
-        WeatherDataSourceUtil wsdUtil = new WeatherDataSourceUtil();
-        
-        // End date for weather data depends on season
-        // We try to add 5 months to the sowing date. If thats in the future,
-        // We add 10 days to today
-        Date dateOfLastWeatherData;
-        Calendar cal = Calendar.getInstance(timeZone);
-        cal.setTime(sowingDate);
-        cal.add(Calendar.MONTH, 5);
-        Date fiveMonthsAfterSowingDate = cal.getTime();
-        if(fiveMonthsAfterSowingDate.after(SystemTime.getSystemTime()))
-        {
-            cal.setTime(SystemTime.getSystemTime());
-            cal.add(Calendar.DATE, 10);
-            dateOfLastWeatherData = cal.getTime();
-        }
-        else
-        {
-            dateOfLastWeatherData = fiveMonthsAfterSowingDate;
-        }
 
+        WeatherDataSourceUtil wsdUtil = new WeatherDataSourceUtil();
+        Date endDateForWeatherData = calculateEndDateForWeatherData(timeZone, sowingDate);
         List<WeatherObservation> observations;
-        try {
-             observations = wsdUtil.getWeatherObservations(
+
+        if("weatherstation".equals(weatherdataType)) {
+            PointOfInterestWeatherStation weatherStation =
+                em.find(PointOfInterestWeatherStation.class, weatherStationId);
+            try {
+                observations = wsdUtil.getWeatherObservations(
                     weatherStation,
                     WeatherObservation.LOG_INTERVAL_ID_1H,
-                    new String[]{
+                    new String[] {
                         WeatherElements.TEMPERATURE_MEAN,
                         WeatherElements.PRECIPITATION
                     },
-                    sowingDate, 
-                    dateOfLastWeatherData
-            );
-        } catch (WeatherDataSourceException ex) {
-            return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(ex.getMessage()).build();
-        }
-        
-        if(observations == null || observations.isEmpty())
-        {
-            return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity("Could not find weather data for weather station with id=" + weatherStationId).build();
+                    sowingDate,
+                    endDateForWeatherData
+                );
+            } catch (WeatherDataSourceException ex) {
+                return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(ex.getMessage()).build();
+            }
+            if (observations == null || observations.isEmpty()) {
+                return Response.status(Response.Status.INTERNAL_SERVER_ERROR)
+                    .entity("Could not find weather data for weather station with id=" + weatherStationId).build();
+            }
+        } else {
+            PointOfInterest coordinates = new PointOfInterest();
+            coordinates.setLatitude(latitude);
+            coordinates.setLongitude(longitude);
+            try {
+                observations = wsdUtil.getWeatherObservations(
+                    "https://weather.vips.nibio.no/rest/grid/openmeteo/" + coordinates.getLongitude() + "_" + coordinates.getLatitude(),
+                    WeatherObservation.LOG_INTERVAL_ID_1H,
+                    new String[] {
+                        WeatherElements.TEMPERATURE_MEAN,
+                        WeatherElements.PRECIPITATION
+                    },
+                    sowingDate,
+                    endDateForWeatherData,
+                    timeZone,
+                    Boolean.FALSE,
+                    new HashSet<>(Collections.singletonList(WeatherObservation.LOG_INTERVAL_ID_1H))
+                );
+            } catch (WeatherDataSourceException ex) {
+                return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(ex.getMessage()).build();
+            }
+            if (observations == null || observations.isEmpty()) {
+                return Response.status(Response.Status.INTERNAL_SERVER_ERROR)
+                    .entity("Could not find weather data for weather station with id=" + weatherStationId).build();
+            }
         }
         
         // Mandatory parameters
@@ -257,6 +264,32 @@ public class BarleyNetBlotchModelService {
         }
         return Response.ok().entity(results).build();
     }
-    
-    
+
+    /**
+     * End date for weather data depends on season. We try to add 5 months to the sowing date.
+     * If the resulting date is in the future, we add 10 days to today.
+     *
+     * @param timeZone  The current timezone
+     * @param sowingDate The sowing date
+     * @return The end date for weather data
+     */
+    private static Date calculateEndDateForWeatherData(TimeZone timeZone, Date sowingDate) {
+        Date dateOfLastWeatherData;
+        Calendar cal = Calendar.getInstance(timeZone);
+        cal.setTime(sowingDate);
+        cal.add(Calendar.MONTH, 5);
+        Date fiveMonthsAfterSowingDate = cal.getTime();
+        if(fiveMonthsAfterSowingDate.after(SystemTime.getSystemTime()))
+        {
+            cal.setTime(SystemTime.getSystemTime());
+            cal.add(Calendar.DATE, 10);
+            dateOfLastWeatherData = cal.getTime();
+        }
+        else
+        {
+            dateOfLastWeatherData = fiveMonthsAfterSowingDate;
+        }
+        return dateOfLastWeatherData;
+    }
+
 }