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 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 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 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_schalten = createKnxGroupIfNotExists("Badewanne Schalten", 781, "1.001", false);
|
||||||
final KnxGroupDto badewanne_status = createKnxGroupIfNotExists("Badewanne Status", new GroupAddress(782), "1.001", true);
|
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();
|
final Schedule scheduleEgAmbiente = new Schedule();
|
||||||
scheduleEgAmbiente.setName("EG Ambiente");
|
scheduleEgAmbiente.setName("EG Ambiente");
|
||||||
|
|||||||
@ -7,7 +7,6 @@ import lombok.ToString;
|
|||||||
import tuwien.auto.calimero.GroupAddress;
|
import tuwien.auto.calimero.GroupAddress;
|
||||||
|
|
||||||
import javax.persistence.*;
|
import javax.persistence.*;
|
||||||
import java.math.BigDecimal;
|
|
||||||
import java.time.ZonedDateTime;
|
import java.time.ZonedDateTime;
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
@ -35,7 +34,7 @@ public class KnxGroup {
|
|||||||
|
|
||||||
private Boolean booleanValue;
|
private Boolean booleanValue;
|
||||||
|
|
||||||
private BigDecimal numberValue;
|
private Double numberValue;
|
||||||
|
|
||||||
private ZonedDateTime valueTimestamp;
|
private ZonedDateTime valueTimestamp;
|
||||||
|
|
||||||
|
|||||||
@ -3,7 +3,6 @@ package de.ph87.homeautomation.knx.group;
|
|||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import tuwien.auto.calimero.GroupAddress;
|
import tuwien.auto.calimero.GroupAddress;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
|
||||||
import java.time.ZonedDateTime;
|
import java.time.ZonedDateTime;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@ -21,7 +20,7 @@ public class KnxGroupDto {
|
|||||||
|
|
||||||
public final Boolean booleanValue;
|
public final Boolean booleanValue;
|
||||||
|
|
||||||
public final BigDecimal numberValue;
|
public final Double numberValue;
|
||||||
|
|
||||||
public final ZonedDateTime valueTimestamp;
|
public final ZonedDateTime valueTimestamp;
|
||||||
|
|
||||||
|
|||||||
@ -8,14 +8,13 @@ import org.springframework.transaction.annotation.Transactional;
|
|||||||
import tuwien.auto.calimero.GroupAddress;
|
import tuwien.auto.calimero.GroupAddress;
|
||||||
import tuwien.auto.calimero.KNXException;
|
import tuwien.auto.calimero.KNXException;
|
||||||
import tuwien.auto.calimero.KNXFormatException;
|
import tuwien.auto.calimero.KNXFormatException;
|
||||||
import tuwien.auto.calimero.dptxlator.DPTXlator;
|
import tuwien.auto.calimero.dptxlator.*;
|
||||||
import tuwien.auto.calimero.dptxlator.DPTXlator8BitUnsigned;
|
|
||||||
import tuwien.auto.calimero.dptxlator.DPTXlatorBoolean;
|
|
||||||
import tuwien.auto.calimero.dptxlator.TranslatorTypes;
|
|
||||||
|
|
||||||
import java.time.ZonedDateTime;
|
import java.time.ZonedDateTime;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
import java.util.function.Consumer;
|
||||||
|
import java.util.function.Function;
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@Service
|
@Service
|
||||||
@ -38,9 +37,16 @@ public class KnxGroupWriteService {
|
|||||||
try {
|
try {
|
||||||
final DPTXlator translator = findTranslator(knxGroup);
|
final DPTXlator translator = findTranslator(knxGroup);
|
||||||
translator.setData(data);
|
translator.setData(data);
|
||||||
if (translator instanceof DPTXlatorBoolean) {
|
translate(DPTXlatorBoolean.class, translator, knxGroup::setBooleanValue, DPTXlatorBoolean::getValueBoolean);
|
||||||
knxGroup.setBooleanValue(((DPTXlatorBoolean) translator).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...
|
// TODO implement all DPTXlator...
|
||||||
} catch (NoTranslatorException e) {
|
} catch (NoTranslatorException e) {
|
||||||
log.error(e.getMessage());
|
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() {
|
public void markAllForRead() {
|
||||||
knxGroupRepository.findAllByRead_AbleTrue().forEach(knxGroup -> knxGroup.getRead().setNextTimestamp(ZonedDateTime.now()));
|
knxGroupRepository.findAllByRead_AbleTrue().forEach(knxGroup -> knxGroup.getRead().setNextTimestamp(ZonedDateTime.now()));
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user