use of org.openhab.core.library.types.DecimalType in project openhab1-addons by openhab.
the class NetatmoWeatherBinding method execute.
/**
* Execute the weather binding from Netatmo Binding Class
*
* @param oauthCredentials
* @param providers
* @param eventPublisher
*/
public void execute(OAuthCredentials oauthCredentials, Collection<NetatmoBindingProvider> providers, EventPublisher eventPublisher) {
logger.debug("Querying Netatmo Weather API");
try {
GetStationsDataResponse stationsDataResponse = processGetStationsData(oauthCredentials, providers, eventPublisher);
if (stationsDataResponse == null) {
return;
}
DeviceMeasureValueMap deviceMeasureValueMap = processMeasurements(oauthCredentials, providers, eventPublisher);
if (deviceMeasureValueMap == null) {
return;
}
for (final NetatmoBindingProvider provider : providers) {
for (final String itemName : provider.getItemNames()) {
final String deviceId = provider.getDeviceId(itemName);
final String moduleId = provider.getModuleId(itemName);
final NetatmoMeasureType measureType = provider.getMeasureType(itemName);
final NetatmoScale scale = provider.getNetatmoScale(itemName);
State state = null;
if (measureType != null) {
switch(measureType) {
case MODULENAME:
if (moduleId == null) {
for (Device device : stationsDataResponse.getDevices()) {
if (device.getId().equals(deviceId)) {
state = new StringType(device.getModuleName());
break;
}
}
} else {
for (Device device : stationsDataResponse.getDevices()) {
for (Module module : device.getModules()) {
if (module.getId().equals(moduleId)) {
state = new StringType(module.getModuleName());
break;
}
}
}
}
break;
case TIMESTAMP:
state = deviceMeasureValueMap.timeStamp;
break;
case TEMPERATURE:
case CO2:
case HUMIDITY:
case NOISE:
case PRESSURE:
case RAIN:
case MIN_TEMP:
case MAX_TEMP:
case MIN_HUM:
case MAX_HUM:
case MIN_PRESSURE:
case MAX_PRESSURE:
case MIN_NOISE:
case MAX_NOISE:
case MIN_CO2:
case MAX_CO2:
case SUM_RAIN:
case WINDSTRENGTH:
case WINDANGLE:
case GUSTSTRENGTH:
case GUSTANGLE:
{
BigDecimal value = getValue(deviceMeasureValueMap, measureType, createKey(deviceId, moduleId, scale));
// numeric value is awaited (issue #1848)
if (value != null) {
if (NetatmoMeasureType.isTemperature(measureType)) {
value = unitSystem.convertTemp(value);
} else if (NetatmoMeasureType.isRain(measureType)) {
value = unitSystem.convertRain(value);
} else if (NetatmoMeasureType.isPressure(measureType)) {
value = pressureUnit.convertPressure(value);
} else if (NetatmoMeasureType.isWind(measureType)) {
value = unitSystem.convertWind(value);
}
state = new DecimalType(value);
}
}
break;
case DATE_MIN_TEMP:
case DATE_MAX_TEMP:
case DATE_MIN_HUM:
case DATE_MAX_HUM:
case DATE_MIN_PRESSURE:
case DATE_MAX_PRESSURE:
case DATE_MIN_NOISE:
case DATE_MAX_NOISE:
case DATE_MIN_CO2:
case DATE_MAX_CO2:
case DATE_MAX_GUST:
{
final BigDecimal value = getValue(deviceMeasureValueMap, measureType, createKey(deviceId, moduleId, scale));
if (value != null) {
final Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(value.longValue() * 1000);
state = new DateTimeType(calendar);
}
}
break;
case BATTERYPERCENT:
case BATTERYSTATUS:
case BATTERYVP:
case RFSTATUS:
for (Device device : stationsDataResponse.getDevices()) {
for (Module module : device.getModules()) {
if (module.getId().equals(moduleId)) {
switch(measureType) {
case BATTERYPERCENT:
case BATTERYVP:
state = new DecimalType(module.getBatteryPercentage());
break;
case BATTERYSTATUS:
state = new DecimalType(module.getBatteryLevel());
break;
case RFSTATUS:
state = new DecimalType(module.getRfLevel());
break;
case MODULENAME:
state = new StringType(module.getModuleName());
break;
default:
break;
}
}
}
}
break;
case ALTITUDE:
case LATITUDE:
case LONGITUDE:
case WIFISTATUS:
case COORDINATE:
case STATIONNAME:
for (Device device : stationsDataResponse.getDevices()) {
if (device.getId().equals(deviceId)) {
if (stationPositions.get(device) == null) {
DecimalType altitude = DecimalType.ZERO;
if (device.getAltitude() != null) {
altitude = new DecimalType(device.getAltitude());
}
stationPositions.put(device, new PointType(new DecimalType(new BigDecimal(device.getLatitude()).setScale(6, BigDecimal.ROUND_HALF_UP)), new DecimalType(new BigDecimal(device.getLongitude()).setScale(6, BigDecimal.ROUND_HALF_UP)), altitude));
}
switch(measureType) {
case LATITUDE:
state = stationPositions.get(device).getLatitude();
break;
case LONGITUDE:
state = stationPositions.get(device).getLongitude();
break;
case ALTITUDE:
state = new DecimalType(Math.round(unitSystem.convertAltitude(stationPositions.get(device).getAltitude().doubleValue())));
break;
case WIFISTATUS:
state = new DecimalType(device.getWifiLevel());
break;
case COORDINATE:
state = stationPositions.get(device);
break;
case STATIONNAME:
state = new StringType(device.getStationName());
break;
default:
break;
}
}
}
break;
}
}
if (state != null) {
eventPublisher.postUpdate(itemName, state);
}
}
}
} catch (NetatmoException ne) {
logger.error(ne.getMessage());
}
}
use of org.openhab.core.library.types.DecimalType in project openhab1-addons by openhab.
the class NetatmoCameraBinding method execute.
/**
* Execute the weather binding from Netatmo Binding Class
*
* @param oauthCredentials
* @param providers
* @param eventPublisher
*/
public void execute(OAuthCredentials oauthCredentials, Collection<NetatmoBindingProvider> providers, EventPublisher eventPublisher) {
logger.debug("Querying Netatmo camera API");
try {
oauthCredentials.refreshAccessToken();
configuredHomeKnownPersons.clear();
configuredHomeUnKnownPersons.clear();
configuredHomeMap.clear();
configuredhomeCameras.clear();
processGetHomeData(oauthCredentials, providers, eventPublisher);
for (final NetatmoBindingProvider provider : providers) {
for (final String itemName : provider.getItemNames()) {
final String homeId = provider.getHomeId(itemName);
final NetatmoCameraAttributes attribute = provider.getAttribute(itemName);
State state = null;
if (homeId != null) {
final String personId = provider.getPersonId(itemName);
final String cameraId = provider.getCameraId(itemName);
if (personId != null) {
if ("UNKNOWN".equals(personId)) {
final StringBuilder message = new StringBuilder();
int i = 0;
switch(attribute) {
case HOME_UNKNWOWN_HOME_COUNT:
if (configuredHomeUnKnownPersons.containsKey(homeId)) {
for (Entry<String, Person> entry : configuredHomeUnKnownPersons.get(homeId).entrySet()) {
final Person person = entry.getValue();
if (!person.getOut_of_sight()) {
i++;
}
}
}
state = new DecimalType(i);
break;
case HOME_UNKNWOWN_AWAY_COUNT:
if (configuredHomeUnKnownPersons.containsKey(homeId)) {
for (Entry<String, Person> entry : configuredHomeUnKnownPersons.get(homeId).entrySet()) {
final Person person = entry.getValue();
if (person.getOut_of_sight()) {
i++;
}
}
}
state = new DecimalType(i);
break;
case HOME_UNKNWOWN_OUTOFSIGHT_LIST:
if (configuredHomeUnKnownPersons.containsKey(homeId)) {
for (Entry<String, Person> entry : configuredHomeUnKnownPersons.get(homeId).entrySet()) {
final Person person = entry.getValue();
if (message.length() > 1) {
message.append("#");
}
message.append(person.getOut_of_sight());
}
}
state = new StringType(message.toString());
break;
case HOME_UNKNWOWN_LASTSEEN_LIST:
if (configuredHomeUnKnownPersons.containsKey(homeId)) {
for (Entry<String, Person> entry : configuredHomeUnKnownPersons.get(homeId).entrySet()) {
final Person person = entry.getValue();
if (message.length() > 1) {
message.append("#");
}
final Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(person.getLastSeen().getTime() * 1000);
message.append(calendar);
}
}
state = new StringType(message.toString());
break;
case HOME_UNKNWOWN_FACE_ID_LIST:
if (configuredHomeUnKnownPersons.containsKey(homeId)) {
for (Entry<String, Person> entry : configuredHomeUnKnownPersons.get(homeId).entrySet()) {
final Person person = entry.getValue();
if (message.length() > 1) {
message.append("#");
}
message.append(person.getFace().getId());
}
}
state = new StringType(message.toString());
break;
case HOME_UNKNWOWN_FACE_KEY_LIST:
if (configuredHomeUnKnownPersons.containsKey(homeId)) {
for (Entry<String, Person> entry : configuredHomeUnKnownPersons.get(homeId).entrySet()) {
final Person person = entry.getValue();
if (message.length() > 1) {
message.append("#");
}
message.append(person.getFace().getKey());
}
}
state = new StringType(message.toString());
break;
default:
break;
}
} else {
Person person = null;
if (configuredHomeKnownPersons.containsKey(homeId)) {
person = configuredHomeKnownPersons.get(homeId).get(personId);
}
if (person != null) {
switch(attribute) {
case HOME_PERSON_OUTOFSIGHT:
if (person.getOut_of_sight()) {
state = OnOffType.OFF;
} else {
state = OnOffType.ON;
}
break;
case HOME_PERSON_PSEUDO:
state = new StringType(person.getPseudo());
break;
case HOME_PERSON_LASTSEEN:
final Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(person.getLastSeen().getTime() * 1000);
state = new DateTimeType(calendar);
break;
case HOME_PERSON_FACE_ID:
state = new StringType(person.getFace().getId());
break;
case HOME_PERSON_FACE_KEY:
state = new StringType(person.getFace().getKey());
break;
default:
break;
}
}
}
} else if (cameraId != null) {
Camera camera = null;
if (configuredhomeCameras.containsKey(homeId)) {
camera = configuredhomeCameras.get(homeId).get(cameraId);
}
if (camera != null) {
switch(attribute) {
case HOME_CAMERA_NAME:
state = new StringType(camera.getName());
break;
case HOME_CAMERA_STATUS:
state = new StringType(camera.getStatus());
break;
case HOME_CAMERA_SD_STATUS:
state = new StringType(camera.getSd_status());
break;
case HOME_CAMERA_ALIM_STATUS:
state = new StringType(camera.getAlim_status());
break;
default:
break;
}
}
} else {
Home home = configuredHomeMap.get(homeId);
if (home != null) {
switch(attribute) {
case HOME_NAME:
state = new StringType(home.getName());
break;
case HOME_PLACE_COUNTRY:
state = new StringType(home.getPlace().getCountry());
break;
case HOME_PLACE_TIMEZONE:
state = new StringType(home.getPlace().getTimezone());
break;
default:
break;
}
}
}
}
if (state != null) {
eventPublisher.postUpdate(itemName, state);
}
}
}
} catch (NetatmoException ne) {
logger.error(ne.getMessage());
}
}
use of org.openhab.core.library.types.DecimalType in project openhab1-addons by openhab.
the class EpsonProjectorBinding method queryDataFromDevice.
private State queryDataFromDevice(String deviceId, EpsonProjectorCommandType commmandType, Class<? extends Item> itemType) {
DeviceConfig device = deviceConfigCache.get(deviceId);
if (device == null) {
logger.error("Could not find device '{}'", deviceId);
return null;
}
EpsonProjectorDevice remoteController = device.getConnection();
if (remoteController == null) {
logger.error("Could not find device '{}'", deviceId);
return null;
}
try {
if (remoteController.isConnected() == false) {
remoteController.connect();
}
switch(commmandType) {
case AKEYSTONE:
int autoKeystone = remoteController.getAutoKeystone();
return new DecimalType(autoKeystone);
case ASPECT_RATIO:
AspectRatio aspectRatio = remoteController.getAspectRatio();
return new StringType(aspectRatio.toString());
case BACKGROUND:
Background background = remoteController.getBackground();
return new StringType(background.toString());
case BRIGHTNESS:
int brightness = remoteController.getBrightness();
return new DecimalType(brightness);
case COLOR:
Color color = remoteController.getColor();
return new StringType(color.toString());
case COLOR_MODE:
ColorMode colorMode = remoteController.getColorMode();
return new StringType(colorMode.toString());
case COLOR_TEMP:
int ctemp = remoteController.getColorTemperature();
return new DecimalType(ctemp);
case CONTRAST:
int contrast = remoteController.getContrast();
return new DecimalType(contrast);
case DENSITY:
int density = remoteController.getDensity();
return new DecimalType(density);
case DIRECT_SOURCE:
int directSource = remoteController.getDirectSource();
return new DecimalType(directSource);
case ERR_CODE:
int err = remoteController.getError();
return new DecimalType(err);
case ERR_MESSAGE:
String errString = remoteController.getErrorString();
return new StringType(errString);
case FLESH_TEMP:
int fleshColor = remoteController.getFleshColor();
return new DecimalType(fleshColor);
case GAIN_BLUE:
int gainBlue = remoteController.getGainBlue();
return new DecimalType(gainBlue);
case GAIN_GREEN:
int gainGreen = remoteController.getGainGreen();
return new DecimalType(gainGreen);
case GAIN_RED:
int gainRed = remoteController.getGainRed();
return new DecimalType(gainRed);
case GAMMA:
Gamma gamma = remoteController.getGamma();
return new StringType(gamma.toString());
case GAMMA_STEP:
logger.warn("Get '{}' not implemented!", commmandType.toString());
return null;
case HKEYSTONE:
int hKeystone = remoteController.getHorizontalKeystone();
return new DecimalType(hKeystone);
case HPOSITION:
int hPosition = remoteController.getHorizontalPosition();
return new DecimalType(hPosition);
case HREVERSE:
Switch hReverse = remoteController.getHorizontalReverse();
return hReverse == Switch.ON ? OnOffType.ON : OnOffType.OFF;
case KEY_CODE:
break;
case LAMP_TIME:
int lampTime = remoteController.getLampTime();
return new DecimalType(lampTime);
case LUMINANCE:
Luminance luminance = remoteController.getLuminance();
return new StringType(luminance.toString());
case MUTE:
Switch mute = remoteController.getMute();
return mute == Switch.ON ? OnOffType.ON : OnOffType.OFF;
case OFFSET_BLUE:
int offsetBlue = remoteController.getOffsetBlue();
return new DecimalType(offsetBlue);
case OFFSET_GREEN:
int offsetGreen = remoteController.getOffsetGreen();
return new DecimalType(offsetGreen);
case OFFSET_RED:
int offsetRed = remoteController.getOffsetRed();
return new DecimalType(offsetRed);
case POWER:
PowerStatus powerStatus = remoteController.getPowerStatus();
if (powerStatus == PowerStatus.ON) {
return OnOffType.ON;
} else {
return OnOffType.OFF;
}
case POWER_STATE:
PowerStatus powerStatus1 = remoteController.getPowerStatus();
return new StringType(powerStatus1.toString());
case SHARP:
logger.warn("Get '{}' not implemented!", commmandType.toString());
return null;
case SOURCE:
Source source = remoteController.getSource();
return new StringType(source.toString());
case SYNC:
int sync = remoteController.getSync();
return new DecimalType(sync);
case TINT:
int tint = remoteController.getTint();
return new DecimalType(tint);
case TRACKING:
int tracking = remoteController.getTracking();
return new DecimalType(tracking);
case VKEYSTONE:
int vKeystone = remoteController.getVerticalKeystone();
return new DecimalType(vKeystone);
case VPOSITION:
int vPosition = remoteController.getVerticalPosition();
return new DecimalType(vPosition);
case VREVERSE:
Switch vReverse = remoteController.getVerticalReverse();
return vReverse == Switch.ON ? OnOffType.ON : OnOffType.OFF;
default:
logger.warn("Unknown '{}' command!", commmandType);
return null;
}
} catch (EpsonProjectorException e) {
logger.warn("Couldn't execute command '{}', {}", commmandType.toString(), e);
} catch (Exception e) {
logger.warn("Couldn't create state of type '{}'", itemType);
return null;
}
return null;
}
use of org.openhab.core.library.types.DecimalType in project openhab1-addons by openhab.
the class FritzboxTr064Binding method execute.
/**
* @{inheritDoc}
*/
@Override
protected void execute() {
logger.trace("FritzboxTr064 executing...");
for (FritzboxTr064BindingProvider provider : providers) {
for (String itemName : provider.getItemNames()) {
// check each item relevant for this binding
// extract itemconfig
FritzboxTr064BindingConfig conf = provider.getBindingConfigByItemName(itemName);
// for current item
if (conf.getConfigString().startsWith("callmonitor")) {
// check if we need to start call monitor
if (_callMonitor == null) {
// not started yet
logger.debug("call monitor is not running. Configured items require call monitor -> Starting call monitor...");
if (_pbm == null) {
logger.debug("Downloading phonebooks");
_pbm = new PhonebookManager(_fboxComm);
_pbm.downloadPhonebooks();
}
_callMonitor = new CallMonitor(_url, eventPublisher, providers, _pbm);
_callMonitor.setupReconnectJob();
_callMonitor.startThread();
}
// make sure, no callmonitor items are processed by tr064
continue;
}
// TR064 protocol usage
// try to get value for this item
String tr064result = _fboxComm.getTr064Value(conf.getConfigString());
// config string from fbox
if (tr064result == null) {
// if value cannot be read
tr064result = "ERR";
}
Class<? extends Item> itemType = conf.getItemType();
if (itemType.isAssignableFrom(StringItem.class)) {
eventPublisher.postUpdate(itemName, new StringType(tr064result));
} else if (itemType.isAssignableFrom(ContactItem.class)) {
State newState = tr064result.equals("1") ? OpenClosedType.OPEN : OpenClosedType.CLOSED;
eventPublisher.postUpdate(itemName, newState);
} else if (itemType.isAssignableFrom(SwitchItem.class)) {
State newState = tr064result.equals("1") ? OnOffType.ON : OnOffType.OFF;
eventPublisher.postUpdate(itemName, newState);
} else if (itemType.isAssignableFrom(NumberItem.class)) {
// number items e.g. TAM messages
// tr064 retrieves only Strings, trying to parse value returned
int val = 0;
try {
val = Integer.parseInt(tr064result);
} catch (NumberFormatException ex) {
// indicate error as -1
val = -1;
}
State newState = new DecimalType(val);
eventPublisher.postUpdate(itemName, newState);
}
}
}
}
use of org.openhab.core.library.types.DecimalType in project openhab1-addons by openhab.
the class FHTBinding method receivedNewValveOpening.
private void receivedNewValveOpening(String device, int actuatorNumber, double valve) {
String fullAddress = device + "0" + actuatorNumber;
FHTBindingConfig config = getConfig(fullAddress, Datapoint.VALVE);
if (config != null) {
logger.debug("Updating item " + config.getItem().getName() + " with new valve opening");
DecimalType state = new DecimalType(valve);
eventPublisher.postUpdate(config.getItem().getName(), state);
} else {
logger.debug("Received valve opening of unknown actuator with address " + fullAddress);
}
}
Aggregations