Implemented all?? DPT-Number-Translators at receiving side
This commit is contained in:
parent
36ee78783c
commit
caae0539fa
@ -40,8 +40,9 @@ public class DemoDataService {
|
||||
final KnxGroupDto wohnzimmer_rollladen_position_anfahren = createKnxGroupIfNotExists("Wohnzimmer Rollladen Position Anfahren", new GroupAddress(0, 4, 24), "5.001", false);
|
||||
final KnxGroupDto schlafzimmer_rollladen_position_anfahren = createKnxGroupIfNotExists("Schlafzimmer Rollladen Position Anfahren", new GroupAddress(0, 3, 3), "5.001", false);
|
||||
final KnxGroupDto flur_rollladen_position_anfahren = createKnxGroupIfNotExists("Flur Rollladen Position Anfahren", new GroupAddress(0, 5, 13), "5.001", false);
|
||||
final KnxGroupDto badewanne_schalten = createKnxGroupIfNotExists("Badewanne Schalten", new GroupAddress(781), "1.001", false);
|
||||
final KnxGroupDto badewanne_status = createKnxGroupIfNotExists("Badewanne Status", new GroupAddress(782), "1.001", true);
|
||||
final KnxGroupDto badewanne_schalten = createKnxGroupIfNotExists("Badewanne Schalten", 781, "1.001", false);
|
||||
final KnxGroupDto badewanne_status = createKnxGroupIfNotExists("Badewanne Status", 782, "1.001", true);
|
||||
final KnxGroupDto helligkeit = createKnxGroupIfNotExists("Helligkeit", 1286, "9.004", false);
|
||||
|
||||
final Schedule scheduleEgAmbiente = new Schedule();
|
||||
scheduleEgAmbiente.setName("EG Ambiente");
|
||||
|
||||
@ -7,7 +7,6 @@ import lombok.ToString;
|
||||
import tuwien.auto.calimero.GroupAddress;
|
||||
|
||||
import javax.persistence.*;
|
||||
import java.math.BigDecimal;
|
||||
import java.time.ZonedDateTime;
|
||||
|
||||
@Getter
|
||||
@ -35,7 +34,7 @@ public class KnxGroup {
|
||||
|
||||
private Boolean booleanValue;
|
||||
|
||||
private BigDecimal numberValue;
|
||||
private Double numberValue;
|
||||
|
||||
private ZonedDateTime valueTimestamp;
|
||||
|
||||
|
||||
@ -3,7 +3,6 @@ package de.ph87.homeautomation.knx.group;
|
||||
import lombok.Data;
|
||||
import tuwien.auto.calimero.GroupAddress;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.ZonedDateTime;
|
||||
|
||||
@Data
|
||||
@ -21,7 +20,7 @@ public class KnxGroupDto {
|
||||
|
||||
public final Boolean booleanValue;
|
||||
|
||||
public final BigDecimal numberValue;
|
||||
public final Double numberValue;
|
||||
|
||||
public final ZonedDateTime valueTimestamp;
|
||||
|
||||
|
||||
@ -8,14 +8,13 @@ import org.springframework.transaction.annotation.Transactional;
|
||||
import tuwien.auto.calimero.GroupAddress;
|
||||
import tuwien.auto.calimero.KNXException;
|
||||
import tuwien.auto.calimero.KNXFormatException;
|
||||
import tuwien.auto.calimero.dptxlator.DPTXlator;
|
||||
import tuwien.auto.calimero.dptxlator.DPTXlator8BitUnsigned;
|
||||
import tuwien.auto.calimero.dptxlator.DPTXlatorBoolean;
|
||||
import tuwien.auto.calimero.dptxlator.TranslatorTypes;
|
||||
import tuwien.auto.calimero.dptxlator.*;
|
||||
|
||||
import java.time.ZonedDateTime;
|
||||
import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
import java.util.function.Consumer;
|
||||
import java.util.function.Function;
|
||||
|
||||
@Slf4j
|
||||
@Service
|
||||
@ -38,9 +37,16 @@ public class KnxGroupWriteService {
|
||||
try {
|
||||
final DPTXlator translator = findTranslator(knxGroup);
|
||||
translator.setData(data);
|
||||
if (translator instanceof DPTXlatorBoolean) {
|
||||
knxGroup.setBooleanValue(((DPTXlatorBoolean) translator).getValueBoolean());
|
||||
}
|
||||
translate(DPTXlatorBoolean.class, translator, knxGroup::setBooleanValue, DPTXlatorBoolean::getValueBoolean);
|
||||
translate(DPTXlator8BitUnsigned.class, translator, knxGroup::setNumberValue, DPTXlator8BitUnsigned::getNumericValue);
|
||||
translate(DPTXlator2ByteFloat.class, translator, knxGroup::setNumberValue, DPTXlator2ByteFloat::getNumericValue);
|
||||
translate(DPTXlator2ByteUnsigned.class, translator, knxGroup::setNumberValue, DPTXlator2ByteUnsigned::getNumericValue);
|
||||
translate(DPTXlator4ByteFloat.class, translator, knxGroup::setNumberValue, DPTXlator4ByteFloat::getNumericValue);
|
||||
translate(DPTXlator4ByteSigned.class, translator, knxGroup::setNumberValue, DPTXlator4ByteSigned::getNumericValue);
|
||||
translate(DPTXlator4ByteUnsigned.class, translator, knxGroup::setNumberValue, DPTXlator4ByteUnsigned::getNumericValue);
|
||||
translate(DPTXlator8BitSigned.class, translator, knxGroup::setNumberValue, DPTXlator8BitSigned::getNumericValue);
|
||||
translate(DPTXlator64BitSigned.class, translator, knxGroup::setNumberValue, DPTXlator64BitSigned::getNumericValue);
|
||||
translate(DPTXlatorSceneNumber.class, translator, knxGroup::setNumberValue, DPTXlatorSceneNumber::getNumericValue);
|
||||
// TODO implement all DPTXlator...
|
||||
} catch (NoTranslatorException e) {
|
||||
log.error(e.getMessage());
|
||||
@ -49,6 +55,12 @@ public class KnxGroupWriteService {
|
||||
});
|
||||
}
|
||||
|
||||
private <X extends DPTXlator, T> void translate(final Class<X> dptXlatorClass, final DPTXlator translator, final Consumer<T> setter, final Function<X, T> getter) {
|
||||
if (dptXlatorClass.isInstance(translator)) {
|
||||
setter.accept(getter.apply(dptXlatorClass.cast(translator)));
|
||||
}
|
||||
}
|
||||
|
||||
public void markAllForRead() {
|
||||
knxGroupRepository.findAllByRead_AbleTrue().forEach(knxGroup -> knxGroup.getRead().setNextTimestamp(ZonedDateTime.now()));
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user