Added power, voltage and current to MQTT parsing

This commit is contained in:
Ziver Koc 2024-12-28 20:55:37 +01:00
parent f68ec9a8e9
commit 17026db07e
11 changed files with 484 additions and 42 deletions

View file

@ -1,10 +1,7 @@
package se.hal.plugin.mqtt.detector;
import org.junit.Test;
import se.hal.plugin.mqtt.device.HalMqttDeviceConfig;
import se.hal.plugin.mqtt.device.HalMqttHumidityDeviceConfig;
import se.hal.plugin.mqtt.device.HalMqttParticularMatterDeviceConfig;
import se.hal.plugin.mqtt.device.HalMqttTemperatureDeviceConfig;
import se.hal.plugin.mqtt.device.*;
import se.hal.struct.devicedata.HumiditySensorData;
import se.hal.struct.devicedata.ParticulateMatterSensorData;
import se.hal.struct.devicedata.TemperatureSensorData;
@ -90,4 +87,45 @@ public class GenericMqttDetectorTest {
devices.get(0));
}
@Test
public void parseVoltage() {
GenericMqttDetector detector = new GenericMqttDetector();
List<HalMqttDeviceConfig> devices = detector.parseTopic(
"zigbee2mqtt/Kitchen air quality/voltage",
Converter.toBytes(1));
assertEquals(1, devices.size());
assertEquals(
new HalMqttVoltageDeviceConfig("zigbee2mqtt/Kitchen air quality/voltage"),
devices.get(0));
devices = detector.parseTopic(
"zigbee2mqtt/Kitchen air quality",
"{\"voltage\": 1}".getBytes(StandardCharsets.UTF_8));
assertEquals(1, devices.size());
assertEquals(
new HalMqttVoltageDeviceConfig("zigbee2mqtt/Kitchen air quality", "$.voltage"),
devices.get(0));
}
@Test
public void parseCurrent() {
GenericMqttDetector detector = new GenericMqttDetector();
List<HalMqttDeviceConfig> devices = detector.parseTopic(
"zigbee2mqtt/Kitchen air quality/current",
Converter.toBytes(1));
assertEquals(1, devices.size());
assertEquals(
new HalMqttCurrentDeviceConfig("zigbee2mqtt/Kitchen air quality/current"),
devices.get(0));
devices = detector.parseTopic(
"zigbee2mqtt/Kitchen air quality",
"{\"current\": 1}".getBytes(StandardCharsets.UTF_8));
assertEquals(1, devices.size());
assertEquals(
new HalMqttCurrentDeviceConfig("zigbee2mqtt/Kitchen air quality", "$.current"),
devices.get(0));
}
}

View file

@ -4,7 +4,9 @@ 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.plugin.mqtt.device.HalMqttPowerConsumptionDeviceConfig;
import se.hal.test.MockHalDeviceReportListener;
import zutil.converter.Converter;
import java.nio.charset.StandardCharsets;
import java.util.List;
@ -24,45 +26,33 @@ 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));
HalMqttOnOffEventConfig actualOnOff = new HalMqttOnOffEventConfig("zigbee2mqtt/Kitchen Plant Light", "$.state");
actualOnOff.setWriteTopicName("zigbee2mqtt/Kitchen Plant Light/set");
}
@Test
public void parseState() {
Zigbee2mqttDetector detector = new Zigbee2mqttDetector();
List<HalMqttDeviceConfig> devices = devices = detector.parseTopic(
"zigbee2mqtt/Kitchen Plant Light",
"{\"invalid_power\":10.48,\"state\":\"ON\"}".getBytes(StandardCharsets.UTF_8));
assertEquals(1, devices.size());
HalMqttOnOffEventConfig actualOnOff = new HalMqttOnOffEventConfig("zigbee2mqtt/Kitchen Plant Light", "$.state");
actualOnOff.setWriteTopicName("zigbee2mqtt/Kitchen Plant Light/set/state");
assertEquals(actualOnOff, devices.get(0));
}
/*
@Test
public void parseTemperature() {
Zigbee2mqttDetector detector = new Zigbee2mqttDetector();
assertEquals(
Collections.emptyList(),
detector.parseTopic(
"zigbee2mqtt/Kitchen air quality",
"{\"temperature\":26}".getBytes(StandardCharsets.UTF_8)));
}
@Test
public void parseHumidity() {
public void parsePower() {
Zigbee2mqttDetector detector = new Zigbee2mqttDetector();
List<HalMqttDeviceConfig> devices = detector.parseTopic(
"zigbee2mqtt/Kitchen air quality",
"{\"power\": 1}".getBytes(StandardCharsets.UTF_8));
assertEquals(1, devices.size());
assertEquals(
Collections.emptyList(),
detector.parseTopic(
"zigbee2mqtt/Kitchen air quality",
"{\"humidity\":51}".getBytes(StandardCharsets.UTF_8)));
new HalMqttPowerConsumptionDeviceConfig("zigbee2mqtt/Kitchen air quality", "$.power"),
devices.get(0));
}
@Test
public void parseParticularMatter() {
Zigbee2mqttDetector detector = new Zigbee2mqttDetector();
assertEquals(
Collections.list(new HalMqttParticularMatterDeviceConfig()),
detector.parseTopic(
"zigbee2mqtt/Kitchen air quality",
"{\"pm25\":1}".getBytes(StandardCharsets.UTF_8)));
}
*/
}