/**
* Copyright (c) 2010-2016 by the respective copyright holders.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*/
package org.openhab.binding.netatmo.internal.weather;
import org.apache.commons.lang.StringUtils;
/**
* @author Gaƫl L'hopital
* @author Rob Nielsen
* @since 1.6.0
*
* This enum holds all the different measures and states available to be
* retrieved by the Netatmo binding
*/
public enum NetatmoMeasureType {
CO2("CO2", NetatmoScale.MAX),
TEMPERATURE("Temperature", NetatmoScale.MAX),
HUMIDITY("Humidity", NetatmoScale.MAX),
NOISE("Noise", NetatmoScale.MAX),
PRESSURE("Pressure", NetatmoScale.MAX),
RAIN("Rain", NetatmoScale.MAX),
WIFISTATUS("WifiStatus", NetatmoScale.MAX),
ALTITUDE("Altitude", NetatmoScale.MAX),
LATITUDE("Latitude", NetatmoScale.MAX),
LONGITUDE("Longitude", NetatmoScale.MAX),
RFSTATUS("RfStatus", NetatmoScale.MAX),
BATTERYPERCENT("BatteryPercent", NetatmoScale.MAX),
BATTERYSTATUS("BatteryStatus", NetatmoScale.MAX),
BATTERYVP("BatteryVp", NetatmoScale.MAX),
TIMESTAMP("TimeStamp", NetatmoScale.MAX),
MODULENAME("ModuleName", NetatmoScale.MAX),
STATIONNAME("StationName", NetatmoScale.MAX),
COORDINATE("Coordinate", NetatmoScale.MAX),
MIN_TEMP("min_temp", NetatmoScale.ONE_DAY),
MAX_TEMP("max_temp", NetatmoScale.ONE_DAY),
MIN_HUM("min_hum", NetatmoScale.ONE_DAY),
MAX_HUM("max_hum", NetatmoScale.ONE_DAY),
MIN_PRESSURE("min_pressure", NetatmoScale.ONE_DAY),
MAX_PRESSURE("max_pressure", NetatmoScale.ONE_DAY),
MIN_NOISE("min_noise", NetatmoScale.ONE_DAY),
MAX_NOISE("max_noise", NetatmoScale.ONE_DAY),
MIN_CO2("min_co2", NetatmoScale.ONE_DAY),
MAX_CO2("max_co2", NetatmoScale.ONE_DAY),
SUM_RAIN("sum_rain", NetatmoScale.ONE_DAY),
DATE_MIN_TEMP("date_min_temp", NetatmoScale.ONE_DAY),
DATE_MAX_TEMP("date_max_temp", NetatmoScale.ONE_DAY),
DATE_MIN_HUM("date_min_hum", NetatmoScale.ONE_DAY),
DATE_MAX_HUM("date_max_hum", NetatmoScale.ONE_DAY),
DATE_MIN_PRESSURE("date_min_pressure", NetatmoScale.ONE_DAY),
DATE_MAX_PRESSURE("date_max_pressure", NetatmoScale.ONE_DAY),
DATE_MIN_NOISE("date_min_noise", NetatmoScale.ONE_DAY),
DATE_MAX_NOISE("date_max_noise", NetatmoScale.ONE_DAY),
DATE_MIN_CO2("date_min_co2", NetatmoScale.ONE_DAY),
DATE_MAX_CO2("date_max_co2", NetatmoScale.ONE_DAY),
WINDSTRENGTH("WindStrength", NetatmoScale.MAX),
WINDANGLE("WindAngle", NetatmoScale.MAX),
GUSTSTRENGTH("GustStrength", NetatmoScale.MAX),
GUSTANGLE("GustAngle", NetatmoScale.MAX),
DATE_MAX_GUST("date_max_gust", NetatmoScale.ONE_DAY);
final String measure;
final NetatmoScale defaultScale;
private NetatmoMeasureType(String measure, NetatmoScale defaultScale) {
this.measure = measure;
this.defaultScale = defaultScale;
}
public String getMeasure() {
return measure;
}
public static NetatmoMeasureType fromString(String measure) {
if (!StringUtils.isEmpty(measure)) {
for (NetatmoMeasureType measureType : NetatmoMeasureType.values()) {
if (measureType.toString().equalsIgnoreCase(measure)) {
return measureType;
}
}
}
throw new IllegalArgumentException("Invalid measure: " + measure);
}
public NetatmoScale getDefaultScale() {
return defaultScale;
}
public static boolean isPressure(NetatmoMeasureType measureType) {
return measureType == NetatmoMeasureType.PRESSURE || measureType == NetatmoMeasureType.MIN_PRESSURE
|| measureType == NetatmoMeasureType.MAX_PRESSURE;
}
public static boolean isRain(NetatmoMeasureType measureType) {
return measureType == NetatmoMeasureType.RAIN || measureType == NetatmoMeasureType.SUM_RAIN;
}
public static boolean isTemperature(NetatmoMeasureType measureType) {
return measureType == NetatmoMeasureType.TEMPERATURE || measureType == NetatmoMeasureType.MIN_TEMP
|| measureType == NetatmoMeasureType.MAX_TEMP;
}
public static boolean isWind(NetatmoMeasureType measureType) {
return measureType == NetatmoMeasureType.WINDSTRENGTH || measureType == NetatmoMeasureType.GUSTSTRENGTH;
}
}