[luftdateninfo] Add internal sensor support (#10643)
Signed-off-by: Bernd Weymann <bernd.weymann@gmail.com>
This commit is contained in:
@@ -13,6 +13,7 @@
|
||||
package org.openhab.binding.luftdateninfo.internal;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
import static org.openhab.core.library.unit.MetricPrefix.HECTO;
|
||||
|
||||
import java.util.HashMap;
|
||||
|
||||
@@ -49,9 +50,9 @@ public class ConditionHandlerTest {
|
||||
UpdateStatus result = condHandler.updateChannels(pmJson);
|
||||
assertEquals(UpdateStatus.OK, result, "Valid update");
|
||||
assertEquals(QuantityType.valueOf(22.7, SIUnits.CELSIUS), condHandler.getTemperature(), "Temperature");
|
||||
assertEquals(QuantityType.valueOf(61.0, Units.PERCENT), condHandler.getHumidity(), "Humidity");
|
||||
assertEquals(QuantityType.valueOf(-1, SIUnits.PASCAL), condHandler.getPressure(), "Pressure");
|
||||
assertEquals(QuantityType.valueOf(-1, SIUnits.PASCAL), condHandler.getPressureSea(), "Pressure Sea");
|
||||
assertEquals(QuantityType.valueOf(61., Units.PERCENT), condHandler.getHumidity(), "Humidity");
|
||||
assertEquals(QuantityType.valueOf(-1, HECTO(SIUnits.PASCAL)), condHandler.getPressure(), "Pressure");
|
||||
assertEquals(QuantityType.valueOf(-1, HECTO(SIUnits.PASCAL)), condHandler.getPressureSea(), "Pressure Sea");
|
||||
} else {
|
||||
assertTrue(false);
|
||||
}
|
||||
@@ -73,8 +74,9 @@ public class ConditionHandlerTest {
|
||||
assertEquals(UpdateStatus.OK, result, "Valid update");
|
||||
assertEquals(QuantityType.valueOf(21.5, SIUnits.CELSIUS), condHandler.getTemperature(), "Temperature");
|
||||
assertEquals(QuantityType.valueOf(58.5, Units.PERCENT), condHandler.getHumidity(), "Humidity");
|
||||
assertEquals(QuantityType.valueOf(100200.0, SIUnits.PASCAL), condHandler.getPressure(), "Pressure");
|
||||
assertEquals(QuantityType.valueOf(101968.7, SIUnits.PASCAL), condHandler.getPressureSea(), "Pressure Sea");
|
||||
assertEquals(QuantityType.valueOf(1002.0, HECTO(SIUnits.PASCAL)), condHandler.getPressure(), "Pressure");
|
||||
assertEquals(QuantityType.valueOf(1019.7, HECTO(SIUnits.PASCAL)), condHandler.getPressureSea(),
|
||||
"Pressure Sea");
|
||||
} else {
|
||||
assertTrue(false);
|
||||
}
|
||||
@@ -126,4 +128,27 @@ public class ConditionHandlerTest {
|
||||
UpdateStatus result = condHandler.updateChannels(null);
|
||||
assertEquals(UpdateStatus.CONNECTION_ERROR, result, "Valid update");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testInternalUpdate() {
|
||||
ThingMock t = new ThingMock();
|
||||
|
||||
HashMap<String, Object> properties = new HashMap<String, Object>();
|
||||
// String sensorid taken from thing-types.xml
|
||||
properties.put("ipAddress", "192.168.178.1");
|
||||
t.setConfiguration(properties);
|
||||
|
||||
ConditionHandlerExtension condHandler = new ConditionHandlerExtension(t);
|
||||
String pmJson = FileReader.readFileInString("src/test/resources/internal-data.json");
|
||||
if (pmJson != null) {
|
||||
UpdateStatus result = condHandler.updateChannels("[" + pmJson + "]");
|
||||
assertEquals(UpdateStatus.OK, result, "Valid update");
|
||||
assertEquals(QuantityType.valueOf(17.6, SIUnits.CELSIUS), condHandler.getTemperature(), "Temperature");
|
||||
assertEquals(QuantityType.valueOf(57.8, Units.PERCENT), condHandler.getHumidity(), "Humidity");
|
||||
assertEquals(QuantityType.valueOf(986.8, HECTO(SIUnits.PASCAL)), condHandler.getPressure(), "Pressure");
|
||||
assertEquals(QuantityType.valueOf(-1, HECTO(SIUnits.PASCAL)), condHandler.getPressureSea(), "Pressure Sea");
|
||||
} else {
|
||||
assertTrue(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,8 +20,8 @@ import org.eclipse.jdt.annotation.NonNullByDefault;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.openhab.binding.luftdateninfo.internal.dto.SensorData;
|
||||
import org.openhab.binding.luftdateninfo.internal.dto.SensorDataValue;
|
||||
import org.openhab.binding.luftdateninfo.internal.handler.HTTPHandler;
|
||||
import org.openhab.binding.luftdateninfo.internal.util.FileReader;
|
||||
import org.openhab.binding.luftdateninfo.internal.utils.Constants;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
|
||||
@@ -44,16 +44,16 @@ public class DTOTest {
|
||||
SensorData d = valueArray[0];
|
||||
// Assure latest data is taken
|
||||
String dateStr = d.getTimeStamp();
|
||||
if (dateStr.equals("2020-06-09 06:38:08")) {
|
||||
if ("2020-06-09 06:38:08".equals(dateStr)) {
|
||||
// take newer one
|
||||
d = valueArray[1];
|
||||
}
|
||||
List<SensorDataValue> sensorDataVaueList = d.getSensorDataValues();
|
||||
assertNotNull(d);
|
||||
sensorDataVaueList.forEach(v -> {
|
||||
if (v.getValueType().equals(HTTPHandler.TEMPERATURE)) {
|
||||
if (Constants.TEMPERATURE.equals(v.getValueType())) {
|
||||
assertEquals("22.70", v.getValue(), "Temperature");
|
||||
} else if (v.getValueType().equals(HTTPHandler.HUMIDITY)) {
|
||||
} else if (Constants.HUMIDITY.equals(v.getValueType())) {
|
||||
assertEquals("61.00", v.getValue(), "Humidity");
|
||||
}
|
||||
});
|
||||
|
||||
@@ -22,6 +22,7 @@ import org.junit.jupiter.api.Test;
|
||||
import org.openhab.binding.luftdateninfo.internal.dto.SensorDataValue;
|
||||
import org.openhab.binding.luftdateninfo.internal.handler.HTTPHandler;
|
||||
import org.openhab.binding.luftdateninfo.internal.util.FileReader;
|
||||
import org.openhab.binding.luftdateninfo.internal.utils.Constants;
|
||||
|
||||
/**
|
||||
* The {@link HTTPHandlerValueTest} test values decoding of HTTPHandler
|
||||
@@ -61,9 +62,9 @@ public class HTTPHandlerValueTest {
|
||||
}
|
||||
|
||||
private void testSensorValue(SensorDataValue s) {
|
||||
if (s.getValueType().equals(HTTPHandler.TEMPERATURE)) {
|
||||
if (s.getValueType().equals(Constants.TEMPERATURE)) {
|
||||
assertEquals("22.70", s.getValue(), "Temperature resource 1");
|
||||
} else if (s.getValueType().equals(HTTPHandler.HUMIDITY)) {
|
||||
} else if (s.getValueType().equals(Constants.HUMIDITY)) {
|
||||
assertEquals("61.00", s.getValue(), "Humidity resource 1");
|
||||
} else {
|
||||
assertTrue(false);
|
||||
|
||||
@@ -64,7 +64,7 @@ public class PMHandlerTest {
|
||||
* Test if config status is 0 = CONFIG_OK for valid configuration. Take real int for comparison instead of
|
||||
* BaseHandler constants - in case of change test needs to be adapted
|
||||
*/
|
||||
assertEquals(ConfigStatus.OK, pmHandler.getConfigStatus(), "Handler Configuration status");
|
||||
assertEquals(ConfigStatus.EXTERNAL_SENSOR_OK, pmHandler.getConfigStatus(), "Handler Configuration status");
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -161,11 +161,34 @@ public class PMHandlerTest {
|
||||
|
||||
HashMap<String, Object> properties = new HashMap<String, Object>();
|
||||
// String sensorid taken from thing-types.xml
|
||||
properties.put("sensorid", 12345);
|
||||
properties.put("ipAdress", "192.168.178.1");
|
||||
t.setConfiguration(properties);
|
||||
|
||||
PMHandlerExtension pmHandler = new PMHandlerExtension(t);
|
||||
UpdateStatus result = pmHandler.updateChannels(null);
|
||||
assertEquals(UpdateStatus.CONNECTION_ERROR, result, "Valid update");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testInternalPMSensor() {
|
||||
ThingMock t = new ThingMock();
|
||||
|
||||
HashMap<String, Object> properties = new HashMap<String, Object>();
|
||||
// String sensorid taken from thing-types.xml
|
||||
properties.put("sensorid", 12345);
|
||||
t.setConfiguration(properties);
|
||||
|
||||
PMHandlerExtension pmHandler = new PMHandlerExtension(t);
|
||||
pmHandler.initialize();
|
||||
String pmJson = FileReader.readFileInString("src/test/resources/internal-data.json");
|
||||
if (pmJson != null) {
|
||||
UpdateStatus result = pmHandler.updateChannels("[" + pmJson + "]");
|
||||
assertEquals(UpdateStatus.OK, result, "Valid update");
|
||||
assertEquals(QuantityType.valueOf(4.3, Units.MICROGRAM_PER_CUBICMETRE), pmHandler.getPM25Cache(), "PM25");
|
||||
assertEquals(QuantityType.valueOf(10.5, Units.MICROGRAM_PER_CUBICMETRE), pmHandler.getPM100Cache(),
|
||||
"PM100");
|
||||
} else {
|
||||
assertTrue(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,46 @@
|
||||
{
|
||||
"software_version": "NRZ-2020-133",
|
||||
"age": "112",
|
||||
"sensordatavalues": [
|
||||
{
|
||||
"value_type": "SDS_P1",
|
||||
"value": "10.52"
|
||||
},
|
||||
{
|
||||
"value_type": "SDS_P2",
|
||||
"value": "4.32"
|
||||
},
|
||||
{
|
||||
"value_type": "BME280_temperature",
|
||||
"value": "17.59"
|
||||
},
|
||||
{
|
||||
"value_type": "BME280_pressure",
|
||||
"value": "98680.28"
|
||||
},
|
||||
{
|
||||
"value_type": "BME280_humidity",
|
||||
"value": "57.78"
|
||||
},
|
||||
{
|
||||
"value_type": "samples",
|
||||
"value": "5070500"
|
||||
},
|
||||
{
|
||||
"value_type": "min_micro",
|
||||
"value": "28"
|
||||
},
|
||||
{
|
||||
"value_type": "max_micro",
|
||||
"value": "20091"
|
||||
},
|
||||
{
|
||||
"value_type": "interval",
|
||||
"value": "145000"
|
||||
},
|
||||
{
|
||||
"value_type": "signal",
|
||||
"value": "-81"
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user