Implemented MQTT events and added additional test cases
This commit is contained in:
parent
3ef524accd
commit
a980bc4946
15 changed files with 364 additions and 26 deletions
|
|
@ -2,6 +2,7 @@ package se.hal.plugin.mqtt.detector;
|
|||
|
||||
import org.junit.Test;
|
||||
import se.hal.plugin.mqtt.device.HalMqttDeviceConfig;
|
||||
import se.hal.plugin.mqtt.device.HalMqttOnOffEventConfig;
|
||||
import se.hal.plugin.mqtt.device.HalMqttParticularMatterDeviceConfig;
|
||||
import se.hal.test.MockHalDeviceReportListener;
|
||||
|
||||
|
|
@ -22,6 +23,11 @@ public class Zigbee2mqttDetectorTest {
|
|||
|
||||
devices = detector.parseTopic("invalid/topic", new byte[]{});
|
||||
assertEquals(0, devices.size());
|
||||
|
||||
devices = detector.parseTopic("zigbee2mqtt/Kitchen Plant Light", "{\"power\":10.48,\"state\":\"ON\"}".getBytes(StandardCharsets.UTF_8));
|
||||
assertEquals(1, devices.size());
|
||||
assertEquals(new HalMqttOnOffEventConfig("zigbee2mqtt/Kitchen Plant Light", "$.state"), devices.get(0));
|
||||
|
||||
}
|
||||
/*
|
||||
@Test
|
||||
|
|
|
|||
|
|
@ -0,0 +1,25 @@
|
|||
package se.hal.plugin.mqtt.device;
|
||||
|
||||
import org.junit.Test;
|
||||
import se.hal.struct.devicedata.HumiditySensorData;
|
||||
import se.hal.struct.devicedata.TemperatureSensorData;
|
||||
import zutil.converter.Converter;
|
||||
|
||||
import java.nio.charset.StandardCharsets;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
import static se.hal.test.HalAssert.assertEqualsIgnoreTimestamp;
|
||||
|
||||
public class HalMqttHumidityDeviceConfigTest {
|
||||
|
||||
@Test
|
||||
public void getDeviceDataRaw() {
|
||||
HalMqttHumidityDeviceConfig config = new HalMqttHumidityDeviceConfig();
|
||||
|
||||
assertEqualsIgnoreTimestamp(null, config.getDeviceData(null));
|
||||
assertEqualsIgnoreTimestamp(null, config.getDeviceData("".getBytes(StandardCharsets.UTF_8)));
|
||||
|
||||
assertEqualsIgnoreTimestamp(new HumiditySensorData(0, 0), config.getDeviceData(Converter.toBytes(0)));
|
||||
assertEqualsIgnoreTimestamp(new HumiditySensorData(10, 0), config.getDeviceData(Converter.toBytes(10)));
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,56 @@
|
|||
package se.hal.plugin.mqtt.device;
|
||||
|
||||
import org.junit.Test;
|
||||
import se.hal.struct.devicedata.OnOffEventData;
|
||||
|
||||
import java.nio.charset.StandardCharsets;
|
||||
|
||||
import static se.hal.test.HalAssert.assertEqualsIgnoreTimestamp;
|
||||
|
||||
public class HalMqttOnOffEventConfigTest {
|
||||
private static final OnOffEventData ON_EVENT = new OnOffEventData(true, 0);
|
||||
private static final OnOffEventData OFF_EVENT = new OnOffEventData(false, 0);
|
||||
|
||||
@Test
|
||||
public void getDeviceDataRaw() {
|
||||
HalMqttOnOffEventConfig config = new HalMqttOnOffEventConfig();
|
||||
|
||||
assertEqualsIgnoreTimestamp(null, config.getDeviceData(null));
|
||||
assertEqualsIgnoreTimestamp(null, config.getDeviceData("".getBytes(StandardCharsets.UTF_8)));
|
||||
assertEqualsIgnoreTimestamp(null, config.getDeviceData("unknown".getBytes(StandardCharsets.UTF_8)));
|
||||
|
||||
assertEqualsIgnoreTimestamp(OFF_EVENT, config.getDeviceData("OFF".getBytes(StandardCharsets.UTF_8)));
|
||||
assertEqualsIgnoreTimestamp(OFF_EVENT, config.getDeviceData("off".getBytes(StandardCharsets.UTF_8)));
|
||||
assertEqualsIgnoreTimestamp(ON_EVENT, config.getDeviceData("ON".getBytes(StandardCharsets.UTF_8)));
|
||||
assertEqualsIgnoreTimestamp(ON_EVENT, config.getDeviceData("on".getBytes(StandardCharsets.UTF_8)));
|
||||
|
||||
config.setValueOnString("online");
|
||||
config.setValueOffString("offline");
|
||||
|
||||
assertEqualsIgnoreTimestamp(OFF_EVENT, config.getDeviceData("OFFLINE".getBytes(StandardCharsets.UTF_8)));
|
||||
assertEqualsIgnoreTimestamp(OFF_EVENT, config.getDeviceData("offline".getBytes(StandardCharsets.UTF_8)));
|
||||
assertEqualsIgnoreTimestamp(ON_EVENT, config.getDeviceData("ONLINE".getBytes(StandardCharsets.UTF_8)));
|
||||
assertEqualsIgnoreTimestamp(ON_EVENT, config.getDeviceData("online".getBytes(StandardCharsets.UTF_8)));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getDeviceDataJson() {
|
||||
HalMqttOnOffEventConfig config = new HalMqttOnOffEventConfig();
|
||||
config.setJsonPath("$.state");
|
||||
|
||||
assertEqualsIgnoreTimestamp(null, config.getDeviceData("{\"power\":10.48,\"state\":\"\"}".getBytes(StandardCharsets.UTF_8)));
|
||||
assertEqualsIgnoreTimestamp(null, config.getDeviceData("{\"power\":10.48,\"state\":\"unknown\"}".getBytes(StandardCharsets.UTF_8)));
|
||||
assertEqualsIgnoreTimestamp(OFF_EVENT, config.getDeviceData("{\"power\":10.48,\"state\":\"OFF\"}".getBytes(StandardCharsets.UTF_8)));
|
||||
assertEqualsIgnoreTimestamp(OFF_EVENT, config.getDeviceData("{\"power\":10.48,\"state\":\"off\"}".getBytes(StandardCharsets.UTF_8)));
|
||||
assertEqualsIgnoreTimestamp(ON_EVENT, config.getDeviceData("{\"power\":10.48,\"state\":\"ON\"}".getBytes(StandardCharsets.UTF_8)));
|
||||
assertEqualsIgnoreTimestamp(ON_EVENT, config.getDeviceData("{\"power\":10.48,\"state\":\"on\"}".getBytes(StandardCharsets.UTF_8)));
|
||||
|
||||
config.setValueOnString("online");
|
||||
config.setValueOffString("offline");
|
||||
assertEqualsIgnoreTimestamp(OFF_EVENT, config.getDeviceData("{\"power\":10.48,\"state\":\"OFFLINE\"}".getBytes(StandardCharsets.UTF_8)));
|
||||
assertEqualsIgnoreTimestamp(OFF_EVENT, config.getDeviceData("{\"power\":10.48,\"state\":\"offline\"}".getBytes(StandardCharsets.UTF_8)));
|
||||
assertEqualsIgnoreTimestamp(ON_EVENT, config.getDeviceData("{\"power\":10.48,\"state\":\"ONLINE\"}".getBytes(StandardCharsets.UTF_8)));
|
||||
assertEqualsIgnoreTimestamp(ON_EVENT, config.getDeviceData("{\"power\":10.48,\"state\":\"online\"}".getBytes(StandardCharsets.UTF_8)));
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
package se.hal.plugin.mqtt.device;
|
||||
|
||||
import org.junit.Test;
|
||||
import se.hal.struct.devicedata.HumiditySensorData;
|
||||
import se.hal.struct.devicedata.ParticulateMatterSensorData;
|
||||
import zutil.converter.Converter;
|
||||
|
||||
import java.nio.charset.StandardCharsets;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
import static se.hal.test.HalAssert.assertEqualsIgnoreTimestamp;
|
||||
|
||||
public class HalMqttParticularMatterDeviceConfigTest {
|
||||
|
||||
@Test
|
||||
public void getDeviceDataRaw() {
|
||||
HalMqttParticularMatterDeviceConfig config = new HalMqttParticularMatterDeviceConfig();
|
||||
|
||||
assertEqualsIgnoreTimestamp(null, config.getDeviceData(null));
|
||||
assertEqualsIgnoreTimestamp(null, config.getDeviceData("".getBytes(StandardCharsets.UTF_8)));
|
||||
|
||||
assertEqualsIgnoreTimestamp(new ParticulateMatterSensorData(0, 0), config.getDeviceData(Converter.toBytes(0)));
|
||||
assertEqualsIgnoreTimestamp(new ParticulateMatterSensorData(10, 0), config.getDeviceData(Converter.toBytes(10)));
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
package se.hal.plugin.mqtt.device;
|
||||
|
||||
import org.junit.Test;
|
||||
import se.hal.struct.devicedata.TemperatureSensorData;
|
||||
import zutil.converter.Converter;
|
||||
|
||||
import java.nio.charset.StandardCharsets;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
import static se.hal.test.HalAssert.assertEqualsIgnoreTimestamp;
|
||||
|
||||
public class HalMqttTemperatureDeviceConfigTest {
|
||||
|
||||
@Test
|
||||
public void getDeviceDataRaw() {
|
||||
HalMqttTemperatureDeviceConfig config = new HalMqttTemperatureDeviceConfig();
|
||||
|
||||
assertEqualsIgnoreTimestamp(null, config.getDeviceData(null));
|
||||
assertEqualsIgnoreTimestamp(null, config.getDeviceData("".getBytes(StandardCharsets.UTF_8)));
|
||||
|
||||
assertEqualsIgnoreTimestamp(new TemperatureSensorData(0, 0), config.getDeviceData(Converter.toBytes(0)));
|
||||
assertEqualsIgnoreTimestamp(new TemperatureSensorData(10, 0), config.getDeviceData(Converter.toBytes(10)));
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue