Search in sources :

Example 1 with SensorReading

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());
        }
    }
}
Also used : RealTimeData(com.vmware.flowgate.common.model.RealTimeData) SensorReading(com.vmware.flowgate.poweriqworker.model.SensorReading) ArrayList(java.util.ArrayList) Asset(com.vmware.flowgate.common.model.Asset) Sensor(com.vmware.flowgate.poweriqworker.model.Sensor) HashSet(java.util.HashSet) Test(org.junit.Test) SpringBootTest(org.springframework.boot.test.context.SpringBootTest)

Example 2 with SensorReading

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;
}
Also used : RealTimeData(com.vmware.flowgate.common.model.RealTimeData) HttpClientErrorException(org.springframework.web.client.HttpClientErrorException) IntegrationStatus(com.vmware.flowgate.common.model.IntegrationStatus) ArrayList(java.util.ArrayList) WormholeException(com.vmware.flowgate.common.exception.WormholeException) IOException(java.io.IOException) ResourceAccessException(org.springframework.web.client.ResourceAccessException) SensorReading(com.vmware.flowgate.poweriqworker.model.SensorReading) PowerIQAPIClient(com.vmware.flowgate.poweriqworker.client.PowerIQAPIClient) Asset(com.vmware.flowgate.common.model.Asset) MetricUnit(com.vmware.flowgate.common.model.ValueUnit.MetricUnit) ValueUnit(com.vmware.flowgate.common.model.ValueUnit) AdvanceSettingType(com.vmware.flowgate.common.model.FacilitySoftwareConfig.AdvanceSettingType) Sensor(com.vmware.flowgate.poweriqworker.model.Sensor) ConnectException(java.net.ConnectException)

Example 3 with SensorReading

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());
        }
    }
}
Also used : RealTimeData(com.vmware.flowgate.common.model.RealTimeData) SensorReading(com.vmware.flowgate.poweriqworker.model.SensorReading) ArrayList(java.util.ArrayList) Asset(com.vmware.flowgate.common.model.Asset) Sensor(com.vmware.flowgate.poweriqworker.model.Sensor) HashSet(java.util.HashSet) Test(org.junit.Test) SpringBootTest(org.springframework.boot.test.context.SpringBootTest)

Example 4 with SensorReading

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;
}
Also used : SensorReading(com.vmware.flowgate.poweriqworker.model.SensorReading)

Aggregations

SensorReading (com.vmware.flowgate.poweriqworker.model.SensorReading)4 Asset (com.vmware.flowgate.common.model.Asset)3 RealTimeData (com.vmware.flowgate.common.model.RealTimeData)3 Sensor (com.vmware.flowgate.poweriqworker.model.Sensor)3 ArrayList (java.util.ArrayList)3 HashSet (java.util.HashSet)2 Test (org.junit.Test)2 SpringBootTest (org.springframework.boot.test.context.SpringBootTest)2 WormholeException (com.vmware.flowgate.common.exception.WormholeException)1 AdvanceSettingType (com.vmware.flowgate.common.model.FacilitySoftwareConfig.AdvanceSettingType)1 IntegrationStatus (com.vmware.flowgate.common.model.IntegrationStatus)1 ValueUnit (com.vmware.flowgate.common.model.ValueUnit)1 MetricUnit (com.vmware.flowgate.common.model.ValueUnit.MetricUnit)1 PowerIQAPIClient (com.vmware.flowgate.poweriqworker.client.PowerIQAPIClient)1 IOException (java.io.IOException)1 ConnectException (java.net.ConnectException)1 HttpClientErrorException (org.springframework.web.client.HttpClientErrorException)1 ResourceAccessException (org.springframework.web.client.ResourceAccessException)1