use of com.vmware.flowgate.poweriqworker.model.SensorReading in project flowgate by vmware.
the class SyncSensorMetaDataJobTest method testGetSensorRealTimeData2.
@Test
public void testGetSensorRealTimeData2() {
HashMap<String, String> justificationfields = generateExtraInfo("6566");
Asset asset = createAsset();
asset.setId("123o89qw4jjasd0");
asset.setJustificationfields(justificationfields);
HashMap<String, String> justificationfields1 = generateExtraInfo("6567");
Asset asset1 = createAsset();
asset1.setId("123o89qw4jjasd1");
asset1.setJustificationfields(justificationfields1);
Sensor sensor = createSensor();
SensorReading sensorReading = createReading();
sensorReading.setUom("%");
sensor.setId(6566);
sensor.setName("HumiditySensor");
sensor.setSerialNumber("8999");
sensor.setType("HumiditySensor");
sensor.setReading(sensorReading);
Mockito.when(this.powerIQAPIClient.getSensorById("6566")).thenReturn(sensor);
Sensor sensor1 = createSensor();
SensorReading sensorReading1 = createReading();
sensorReading1.setUom("F");
sensor1.setId(6567);
sensor1.setName("TemperatureSensor");
sensor1.setSerialNumber("9000");
sensor1.setType("TemperatureSensor");
sensor1.setReading(sensorReading1);
Mockito.when(this.powerIQAPIClient.getSensorById("6567")).thenReturn(sensor1);
Set<String> assetIds = new HashSet<String>();
assetIds.add("123o89qw4jjasd0");
assetIds.add("123o89qw4jjasd1");
List<Asset> assets = new ArrayList<Asset>();
assets.add(asset);
assets.add(asset1);
List<RealTimeData> realTimeDatas = powerIQService.getSensorRealTimeData(createFacility(), assets);
for (RealTimeData realtimedata : realTimeDatas) {
if ("123o89qw4jjasd0".equals(realtimedata.getAssetID())) {
TestCase.assertEquals((double) 100, realtimedata.getValues().get(0).getValueNum());
} else {
TestCase.assertEquals((double) (100 - 32) * 5 / 9, realtimedata.getValues().get(0).getValueNum());
}
}
}
use of com.vmware.flowgate.poweriqworker.model.SensorReading in project flowgate by vmware.
the class PowerIQService method getSensorRealTimeData.
public List<RealTimeData> getSensorRealTimeData(FacilitySoftwareConfig powerIQ, List<Asset> assets) {
HashMap<AdvanceSettingType, String> advanceSetting = getAdvanceSetting(powerIQ);
List<RealTimeData> realtimeDatas = new ArrayList<RealTimeData>();
String dateFormat = advanceSetting.get(AdvanceSettingType.DateFormat);
String timezone = advanceSetting.get(AdvanceSettingType.TimeZone);
String temperature = advanceSetting.get(AdvanceSettingType.TEMPERATURE_UNIT);
String humidity = advanceSetting.get(AdvanceSettingType.HUMIDITY_UNIT);
PowerIQAPIClient powerIQAPIClient = createClient(powerIQ);
for (Asset asset : assets) {
HashMap<String, String> sensorExtraInfo = asset.getJustificationfields();
String sensorInfo = sensorExtraInfo.get(FlowgateConstant.SENSOR);
Map<String, String> sensorInfoMap = null;
try {
sensorInfoMap = getInfoMap(sensorInfo);
} catch (IOException e2) {
continue;
}
String sensorId = sensorInfoMap.get(FlowgateConstant.SENSOR_ID_FROM_POWERIQ);
Sensor sensor = null;
try {
sensor = powerIQAPIClient.getSensorById(sensorId);
} catch (HttpClientErrorException e) {
logger.error("Failed to query data from PowerIQ", e);
IntegrationStatus integrationStatus = powerIQ.getIntegrationStatus();
if (integrationStatus == null) {
integrationStatus = new IntegrationStatus();
}
integrationStatus.setStatus(IntegrationStatus.Status.ERROR);
integrationStatus.setDetail(e.getMessage());
integrationStatus.setRetryCounter(FlowgateConstant.DEFAULTNUMBEROFRETRIES);
updateIntegrationStatus(powerIQ);
break;
} catch (ResourceAccessException e1) {
if (e1.getCause().getCause() instanceof ConnectException) {
checkAndUpdateIntegrationStatus(powerIQ, e1.getMessage());
break;
}
break;
}
SensorReading reading = sensor.getReading();
if (reading == null || reading.getId() == 0) {
continue;
}
RealTimeData realTimeData = new RealTimeData();
String valueDateTime = reading.getReadingTime();
long recordedTime = WormholeDateFormat.getLongTime(valueDateTime, dateFormat, timezone);
if (recordedTime == -1) {
logger.error("Failed to translate the time string: " + valueDateTime + ".And the dateformat is " + dateFormat);
continue;
}
List<ValueUnit> values = new ArrayList<ValueUnit>();
ValueUnit value = new ValueUnit();
value.setTime(recordedTime);
value.setKey(sensorAndMetricMap.get(sensor.getType()));
String unit = reading.getUom();
MetricUnit sourceUnit = null, targetUnit = null;
switch(sensorAndMetricMap.get(sensor.getType())) {
case MetricName.HUMIDITY:
if (unit != null && !unit.isEmpty()) {
if (unit.equals("%")) {
sourceUnit = MetricUnit.percent;
} else {
sourceUnit = MetricUnit.valueOf(unit);
}
} else {
if (humidity.equals("%")) {
sourceUnit = MetricUnit.percent;
} else {
sourceUnit = MetricUnit.valueOf(humidity);
}
}
targetUnit = MetricUnit.percent;
break;
case MetricName.TEMPERATURE:
if (unit != null && !unit.isEmpty()) {
sourceUnit = MetricUnit.valueOf(unit.toUpperCase());
} else {
sourceUnit = MetricUnit.valueOf(temperature.toUpperCase());
}
targetUnit = MetricUnit.C;
break;
default:
break;
}
Double metricsValue = reading.getValue();
if (metricsValue == null) {
continue;
}
try {
value.setValueNum(value.translateUnit(metricsValue, sourceUnit, targetUnit));
} catch (WormholeException e) {
logger.error("Cannot translate Unit", e);
}
if (targetUnit.toString().equals(MetricUnit.percent.toString())) {
value.setUnit("%");
} else {
value.setUnit(targetUnit.toString());
}
values.add(value);
realTimeData.setAssetID(asset.getId());
realTimeData.setTime(recordedTime);
realTimeData.setValues(values);
realTimeData.setId(asset.getId() + "_" + recordedTime);
realtimeDatas.add(realTimeData);
}
return realtimeDatas;
}
use of com.vmware.flowgate.poweriqworker.model.SensorReading in project flowgate by vmware.
the class SyncSensorMetaDataJobTest method testGetSensorRealTimeData.
@Test
public void testGetSensorRealTimeData() {
HashMap<String, String> justificationfields = generateExtraInfo("6566");
Asset asset = createAsset();
asset.setId("123o89qw4jjasd0");
asset.setJustificationfields(justificationfields);
Sensor sensor = createSensor();
sensor.setId(6566);
sensor.setName("HumiditySensor");
sensor.setSerialNumber("8999");
sensor.setType("HumiditySensor");
SensorReading sensorReading = new SensorReading();
sensorReading.setReadingTime("2019/02/14 04:31:14 +0200");
sensorReading.setValue(30.0);
sensorReading.setUom("%");
sensor.setReading(sensorReading);
Mockito.when(this.powerIQAPIClient.getSensorById("6566")).thenReturn(sensor);
Set<String> assetIds = new HashSet<String>();
assetIds.add("123o89qw4jjasd0");
List<Asset> assets = new ArrayList<Asset>();
assets.add(asset);
List<RealTimeData> realTimeDatas = powerIQService.getSensorRealTimeData(createFacility(), assets);
for (RealTimeData realtimeData : realTimeDatas) {
TestCase.assertEquals("123o89qw4jjasd0", realtimeData.getAssetID());
TestCase.assertEquals(1550111474000l, realtimeData.getTime());
if ("123o89qw4jjasd0".equals(realtimeData.getAssetID())) {
TestCase.assertEquals("%", realtimeData.getValues().get(0).getUnit());
}
}
}
use of com.vmware.flowgate.poweriqworker.model.SensorReading in project flowgate by vmware.
the class SyncSensorMetaDataJobTest method createReading.
SensorReading createReading() {
SensorReading sensorReading = new SensorReading();
sensorReading.setMaxValue(1.0);
sensorReading.setMinValue(0d);
sensorReading.setReadingTime("2019/02/14 04:31:14 +0200");
sensorReading.setValue(100.0);
return sensorReading;
}
Aggregations