[deconz] Support for air quality sensor (#11885)

[deconz] Support for air quality sensor

Signed-off-by: Philipp Schneider <philipp.schneider@nixo-soft.de>
This commit is contained in:
Philipp S
2022-01-06 09:44:59 +01:00
committed by GitHub
parent b9ad9ae29e
commit 5dc26419d1
11 changed files with 143 additions and 6 deletions

View File

@@ -53,6 +53,7 @@ import com.google.gson.GsonBuilder;
*
* @author Jan N. Klug - Initial contribution
* @author Lukas Agethen - Added Thermostat
* @author Philipp Schneider - Added air quality sensor
*/
@ExtendWith(MockitoExtension.class)
@NonNullByDefault
@@ -85,6 +86,46 @@ public class SensorsTest {
Mockito.verify(thingHandlerCallback).stateUpdated(eq(channelUID), eq(OnOffType.ON));
}
@Test
public void airQualitySensorUpdateTest() throws IOException {
// ARRANGE
SensorMessage sensorMessage = DeconzTest.getObjectFromJson("airquality.json", SensorMessage.class, gson);
assertNotNull(sensorMessage);
ThingUID thingUID = new ThingUID("deconz", "sensor");
ChannelUID channelUID = new ChannelUID(thingUID, "airquality");
Thing sensor = ThingBuilder.create(THING_TYPE_AIRQUALITY_SENSOR, thingUID)
.withChannel(ChannelBuilder.create(channelUID, "String").build()).build();
SensorThingHandler sensorThingHandler = new SensorThingHandler(sensor, gson);
sensorThingHandler.setCallback(thingHandlerCallback);
// ACT
sensorThingHandler.messageReceived("", sensorMessage);
// ASSERT
Mockito.verify(thingHandlerCallback).stateUpdated(eq(channelUID), eq(StringType.valueOf("good")));
}
@Test
public void airQualityPpbSensorUpdateTest() throws IOException {
// ARRANGE
SensorMessage sensorMessage = DeconzTest.getObjectFromJson("airquality.json", SensorMessage.class, gson);
assertNotNull(sensorMessage);
ThingUID thingUID = new ThingUID("deconz", "sensor");
ChannelUID channelUID = new ChannelUID(thingUID, "airqualityppb");
Thing sensor = ThingBuilder.create(THING_TYPE_AIRQUALITY_SENSOR, thingUID)
.withChannel(ChannelBuilder.create(channelUID, "Number").build()).build();
SensorThingHandler sensorThingHandler = new SensorThingHandler(sensor, gson);
sensorThingHandler.setCallback(thingHandlerCallback);
// ACT
sensorThingHandler.messageReceived("", sensorMessage);
// ASSERT
Mockito.verify(thingHandlerCallback).stateUpdated(eq(channelUID), eq(new DecimalType(129)));
}
@Test
public void thermostatSensorUpdateTest() throws IOException {
SensorMessage sensorMessage = DeconzTest.getObjectFromJson("thermostat.json", SensorMessage.class, gson);

View File

@@ -0,0 +1,22 @@
{
"config": {
"battery": 100,
"on": true,
"reachable": true
},
"ep": 38,
"etag": "ca904b42f63d0ccccccccccccccccccccc",
"lastannounced": "2021-12-28T23:59:02Z",
"lastseen": "2021-12-29T01:18Z",
"manufacturername": "Develco Products A/S",
"modelid": "AQSZB-110",
"name": "AirQuality 4",
"state": {
"airquality": "good",
"airqualityppb": 129,
"lastupdated": "2021-12-29T01:18:41.184"
},
"swversion": "2021-10-28 08:59",
"type": "ZHAAirQuality",
"uniqueid": "00:00:00:00:00:00:00:00-00-fc03"
}