package org.bensteele.jirrigate.weather;
import org.bensteele.jirrigate.Irrigator;
import org.bensteele.jirrigate.weather.weatherunderground.WeatherUndergroundStation;
import org.joda.time.DateTime;
/**
* An interface to provide weather information to an {@link Irrigator} so it can make informed
* decisions on whether or not to irrigate. A complete workable implementation of a class that
* extends this will <i>successfully</i> implement all the abstract methods presented.
* <p>
* See {@link WeatherUndergroundStation} for a reference implementation of this class.
*
* @author Ben Steele (ben@bensteele.org)
*/
public interface WeatherStation {
public enum WeatherStationType {
WUNDERGROUND
}
public String getName();
public double getCurrentTemperatureCelcius();
public double getCurrentTemperatureFahrenheit();
public double getTodaysMaxTemperatureCelcius();
public double getTodaysMaxTemperatureFahrenheit();
public double getTodaysMinTemperatureCelcius();
public double getTodaysMinTemperatureFahrenheit();
public double getLastXDaysAvgTemperatureCelcius(int days);
public double getLastXDaysAvgTemperatureFahrenheit(int days);
public double getTodaysRainfallMilliLitres();
public double getLastXDaysRainfallMilliLitres(int days);
public double getLastXDaysRainfallInches(int days);
public int getNextXDaysPercentageOfPrecipitation(int days);
public double getTodaysRainfallInches();
public double getCurrentWindspeedKiloMetresPerHour();
public double getCurrentWindspeedMilesPerHour();
public double getCurrentRelativeHumidityPercentage();
public String getStatus();
public boolean isActive();
public void setActive(boolean isActive);
public WeatherStationType getType();
public DateTime getOldestRecordTime();
public DateTime getNewestRecordTime();
public int getNumberOfRecords();
public double getNextXDaysMaxTempCelcius(int days);
public double getNextXDaysMaxTempFahrenheit(int days);
}