mirror of
https://github.com/openhab/openhab-addons.git
synced 2025-02-04 03:14:07 +01:00
[enocean] D2-50 EEP remove extra channels and fix warnings (#17531)
* [enocean] EEP D2_50 - remove unsupported channels Signed-off-by: Zhivka Dimova <zhivka.dimova@myforest.net> Signed-off-by: Ciprian Pascu <contact@ciprianpascu.ro>
This commit is contained in:
parent
406c202801
commit
830886f7f0
@ -16,7 +16,6 @@ import static org.openhab.binding.enocean.internal.EnOceanBindingConstants.*;
|
|||||||
|
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
import org.eclipse.jdt.annotation.NonNull;
|
|
||||||
import org.eclipse.jdt.annotation.NonNullByDefault;
|
import org.eclipse.jdt.annotation.NonNullByDefault;
|
||||||
import org.eclipse.jdt.annotation.Nullable;
|
import org.eclipse.jdt.annotation.Nullable;
|
||||||
import org.openhab.binding.enocean.internal.eep.Base.UTEResponse;
|
import org.openhab.binding.enocean.internal.eep.Base.UTEResponse;
|
||||||
@ -85,7 +84,7 @@ public class EnOceanDeviceDiscoveryService extends AbstractDiscoveryService impl
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Set<@NonNull ThingTypeUID> getSupportedThingTypes() {
|
public Set<ThingTypeUID> getSupportedThingTypes() {
|
||||||
return SUPPORTED_DEVICE_THING_TYPES_UIDS;
|
return SUPPORTED_DEVICE_THING_TYPES_UIDS;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -155,26 +154,24 @@ public class EnOceanDeviceDiscoveryService extends AbstractDiscoveryService impl
|
|||||||
|
|
||||||
SMACKTeachInResponse response = EEPFactory.buildResponseFromSMACKTeachIn(event,
|
SMACKTeachInResponse response = EEPFactory.buildResponseFromSMACKTeachIn(event,
|
||||||
bridgeHandler.sendTeachOuts());
|
bridgeHandler.sendTeachOuts());
|
||||||
if (response != null) {
|
bridgeHandler.sendMessage(response, null);
|
||||||
bridgeHandler.sendMessage(response, null);
|
|
||||||
|
|
||||||
if (response.isTeachIn()) {
|
if (response.isTeachIn()) {
|
||||||
// SenderIdOffset will be determined during Thing init
|
// SenderIdOffset will be determined during Thing init
|
||||||
createDiscoveryResult(eep, false, -1);
|
createDiscoveryResult(eep, false, -1);
|
||||||
} else if (response.isTeachOut()) {
|
} else if (response.isTeachOut()) {
|
||||||
// disable already teached in thing
|
// disable already teached in thing
|
||||||
bridgeHandler.getThing().getThings().stream()
|
bridgeHandler.getThing().getThings().stream()
|
||||||
.filter(t -> t.getConfiguration().getProperties()
|
.filter(t -> t.getConfiguration().getProperties()
|
||||||
.getOrDefault(PARAMETER_ENOCEANID, EMPTYENOCEANID).toString()
|
.getOrDefault(PARAMETER_ENOCEANID, EMPTYENOCEANID).toString()
|
||||||
.equals(HexUtils.bytesToHex(eep.getSenderId())))
|
.equals(HexUtils.bytesToHex(eep.getSenderId())))
|
||||||
.findFirst().ifPresentOrElse(t -> {
|
.findFirst().ifPresentOrElse(t -> {
|
||||||
thingManager.setEnabled(t.getUID(), false);
|
thingManager.setEnabled(t.getUID(), false);
|
||||||
logger.info("Disable thing with id {}", t.getUID());
|
logger.info("Disable thing with id {}", t.getUID());
|
||||||
}, () -> {
|
}, () -> {
|
||||||
logger.info("Thing for EnOceanId {} already deleted",
|
logger.info("Thing for EnOceanId {} already deleted",
|
||||||
HexUtils.bytesToHex(eep.getSenderId()));
|
HexUtils.bytesToHex(eep.getSenderId()));
|
||||||
});
|
});
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -67,7 +67,7 @@ public class A5_3F_7F_EltakoFSB extends _4BSMessage {
|
|||||||
setData(ZERO, (byte) shutTime, MOVE_UP, TEACHIN_BIT); // => move completely up
|
setData(ZERO, (byte) shutTime, MOVE_UP, TEACHIN_BIT); // => move completely up
|
||||||
} else if (percentCommand.intValue() == PercentType.HUNDRED.intValue()) {
|
} else if (percentCommand.intValue() == PercentType.HUNDRED.intValue()) {
|
||||||
setData(ZERO, (byte) shutTime, MOVE_DOWN, TEACHIN_BIT); // => move completely down
|
setData(ZERO, (byte) shutTime, MOVE_DOWN, TEACHIN_BIT); // => move completely down
|
||||||
} else if (channelState != null) {
|
} else {
|
||||||
PercentType current = channelState.as(PercentType.class);
|
PercentType current = channelState.as(PercentType.class);
|
||||||
if (current != null) {
|
if (current != null) {
|
||||||
if (current.intValue() != percentCommand.intValue()) {
|
if (current.intValue() != percentCommand.intValue()) {
|
||||||
|
@ -51,9 +51,6 @@ public class EEPFactory {
|
|||||||
public static EEP createEEP(EEPType eepType) {
|
public static EEP createEEP(EEPType eepType) {
|
||||||
try {
|
try {
|
||||||
Class<? extends EEP> cl = eepType.getEEPClass();
|
Class<? extends EEP> cl = eepType.getEEPClass();
|
||||||
if (cl == null) {
|
|
||||||
throw new IllegalArgumentException("Message " + eepType + " not implemented");
|
|
||||||
}
|
|
||||||
return cl.getDeclaredConstructor().newInstance();
|
return cl.getDeclaredConstructor().newInstance();
|
||||||
} catch (IllegalAccessException | InstantiationException | IllegalArgumentException | InvocationTargetException
|
} catch (IllegalAccessException | InstantiationException | IllegalArgumentException | InvocationTargetException
|
||||||
| NoSuchMethodException | SecurityException e) {
|
| NoSuchMethodException | SecurityException e) {
|
||||||
@ -64,9 +61,6 @@ public class EEPFactory {
|
|||||||
public static EEP buildEEP(EEPType eepType, ERP1Message packet) {
|
public static EEP buildEEP(EEPType eepType, ERP1Message packet) {
|
||||||
try {
|
try {
|
||||||
Class<? extends EEP> cl = eepType.getEEPClass();
|
Class<? extends EEP> cl = eepType.getEEPClass();
|
||||||
if (cl == null) {
|
|
||||||
throw new IllegalArgumentException("Message " + eepType + " not implemented");
|
|
||||||
}
|
|
||||||
return cl.getConstructor(ERP1Message.class).newInstance(packet);
|
return cl.getConstructor(ERP1Message.class).newInstance(packet);
|
||||||
} catch (IllegalAccessException | InstantiationException | IllegalArgumentException | InvocationTargetException
|
} catch (IllegalAccessException | InstantiationException | IllegalArgumentException | InvocationTargetException
|
||||||
| NoSuchMethodException | SecurityException e) {
|
| NoSuchMethodException | SecurityException e) {
|
||||||
@ -238,7 +232,7 @@ public class EEPFactory {
|
|||||||
eepType = getGenericEEPTypeFor(rorg);
|
eepType = getGenericEEPTypeFor(rorg);
|
||||||
}
|
}
|
||||||
|
|
||||||
return (eepType == null) ? null : createEEP(eepType).setSenderId(senderId);
|
return eepType == null ? null : createEEP(eepType).setSenderId(senderId);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static @Nullable EEP buildResponseEEPFromTeachInERP1(ERP1Message msg, byte[] senderId, boolean teachIn) {
|
public static @Nullable EEP buildResponseEEPFromTeachInERP1(ERP1Message msg, byte[] senderId, boolean teachIn) {
|
||||||
|
@ -507,40 +507,34 @@ public enum EEPType {
|
|||||||
CHANNEL_INDOORAIRANALYSIS),
|
CHANNEL_INDOORAIRANALYSIS),
|
||||||
|
|
||||||
HeatRecoveryVentilation_00(RORG.VLD, 0x50, 0x00, false, D2_50.class, THING_TYPE_HEATRECOVERYVENTILATION,
|
HeatRecoveryVentilation_00(RORG.VLD, 0x50, 0x00, false, D2_50.class, THING_TYPE_HEATRECOVERYVENTILATION,
|
||||||
CHANNEL_VENTILATIONOPERATIONMODE, CHANNEL_SUPPLYAIRFLAPSTATUS, CHANNEL_WEEKLYTIMERPROGRAMSTATUS,
|
CHANNEL_VENTILATIONOPERATIONMODE, CHANNEL_SUPPLYAIRFLAPSTATUS, CHANNEL_EXHAUSTAIRFLAPSTATUS,
|
||||||
CHANNEL_EXHAUSTAIRFLAPSTATUS, CHANNEL_DEFROSTMODE, CHANNEL_COOLINGPROTECTIONMODE,
|
CHANNEL_DEFROSTMODE, CHANNEL_COOLINGPROTECTIONMODE, CHANNEL_DRAINHEATERSTATUS, CHANNEL_TIMEROPERATIONMODE,
|
||||||
CHANNEL_OUTDOORAIRHEATERSTATUS, CHANNEL_SUPPLYAIRHEATERSTATUS, CHANNEL_DRAINHEATERSTATUS,
|
CHANNEL_MAINTENANCESTATUS, CHANNEL_AIRQUALITYVALUE1, CHANNEL_OUTDOORAIRTEMPERATURE,
|
||||||
CHANNEL_TIMEROPERATIONMODE, CHANNEL_MAINTENANCESTATUS, CHANNEL_ROOMTEMPERATURECONTROLSTATUS,
|
CHANNEL_SUPPLYAIRTEMPERATURE, CHANNEL_SUPPLYAIRFANAIRFLOWRATE, CHANNEL_EXHAUSTAIRFANAIRFLOWRATE,
|
||||||
CHANNEL_AIRQUALITYVALUE1, CHANNEL_AIRQUALITYVALUE2, CHANNEL_OUTDOORAIRTEMPERATURE,
|
CHANNEL_SUPPLYFANSPEED, CHANNEL_EXHAUSTFANSPEED),
|
||||||
CHANNEL_SUPPLYAIRTEMPERATURE, CHANNEL_INDOORAIRTEMPERATURE, CHANNEL_EXHAUSTAIRTEMPERATURE,
|
|
||||||
CHANNEL_SUPPLYAIRFANAIRFLOWRATE, CHANNEL_EXHAUSTAIRFANAIRFLOWRATE, CHANNEL_SUPPLYFANSPEED,
|
|
||||||
CHANNEL_EXHAUSTFANSPEED),
|
|
||||||
HeatRecoveryVentilation_01(RORG.VLD, 0x50, 0x01, false, D2_50.class, THING_TYPE_HEATRECOVERYVENTILATION,
|
HeatRecoveryVentilation_01(RORG.VLD, 0x50, 0x01, false, D2_50.class, THING_TYPE_HEATRECOVERYVENTILATION,
|
||||||
CHANNEL_VENTILATIONOPERATIONMODE, CHANNEL_SUPPLYAIRFLAPSTATUS, CHANNEL_WEEKLYTIMERPROGRAMSTATUS,
|
CHANNEL_VENTILATIONOPERATIONMODE, CHANNEL_SUPPLYAIRFLAPSTATUS, CHANNEL_EXHAUSTAIRFLAPSTATUS,
|
||||||
CHANNEL_EXHAUSTAIRFLAPSTATUS, CHANNEL_DEFROSTMODE, CHANNEL_COOLINGPROTECTIONMODE,
|
CHANNEL_DEFROSTMODE, CHANNEL_COOLINGPROTECTIONMODE, CHANNEL_OUTDOORAIRHEATERSTATUS,
|
||||||
CHANNEL_OUTDOORAIRHEATERSTATUS, CHANNEL_SUPPLYAIRHEATERSTATUS, CHANNEL_DRAINHEATERSTATUS,
|
CHANNEL_SUPPLYAIRHEATERSTATUS, CHANNEL_DRAINHEATERSTATUS, CHANNEL_TIMEROPERATIONMODE,
|
||||||
CHANNEL_TIMEROPERATIONMODE, CHANNEL_MAINTENANCESTATUS, CHANNEL_ROOMTEMPERATURECONTROLSTATUS,
|
CHANNEL_MAINTENANCESTATUS, CHANNEL_AIRQUALITYVALUE1, CHANNEL_OUTDOORAIRTEMPERATURE,
|
||||||
CHANNEL_AIRQUALITYVALUE1, CHANNEL_AIRQUALITYVALUE2, CHANNEL_OUTDOORAIRTEMPERATURE,
|
CHANNEL_SUPPLYAIRTEMPERATURE, CHANNEL_SUPPLYAIRFANAIRFLOWRATE, CHANNEL_EXHAUSTAIRFANAIRFLOWRATE,
|
||||||
CHANNEL_SUPPLYAIRTEMPERATURE, CHANNEL_INDOORAIRTEMPERATURE, CHANNEL_EXHAUSTAIRTEMPERATURE,
|
CHANNEL_SUPPLYFANSPEED, CHANNEL_EXHAUSTFANSPEED),
|
||||||
CHANNEL_SUPPLYAIRFANAIRFLOWRATE, CHANNEL_EXHAUSTAIRFANAIRFLOWRATE, CHANNEL_SUPPLYFANSPEED,
|
|
||||||
CHANNEL_EXHAUSTFANSPEED),
|
|
||||||
HeatRecoveryVentilation_10(RORG.VLD, 0x50, 0x10, false, D2_50.class, THING_TYPE_HEATRECOVERYVENTILATION,
|
HeatRecoveryVentilation_10(RORG.VLD, 0x50, 0x10, false, D2_50.class, THING_TYPE_HEATRECOVERYVENTILATION,
|
||||||
CHANNEL_VENTILATIONOPERATIONMODE, CHANNEL_DEFROSTMODE, CHANNEL_COOLINGPROTECTIONMODE,
|
CHANNEL_VENTILATIONOPERATIONMODE, CHANNEL_DEFROSTMODE, CHANNEL_COOLINGPROTECTIONMODE,
|
||||||
CHANNEL_OUTDOORAIRHEATERSTATUS, CHANNEL_SUPPLYAIRHEATERSTATUS, CHANNEL_DRAINHEATERSTATUS,
|
CHANNEL_OUTDOORAIRHEATERSTATUS, CHANNEL_SUPPLYAIRHEATERSTATUS, CHANNEL_TIMEROPERATIONMODE,
|
||||||
CHANNEL_TIMEROPERATIONMODE, CHANNEL_MAINTENANCESTATUS, CHANNEL_ROOMTEMPERATURECONTROLSTATUS,
|
CHANNEL_MAINTENANCESTATUS, CHANNEL_ROOMTEMPERATURECONTROLSTATUS, CHANNEL_AIRQUALITYVALUE1,
|
||||||
CHANNEL_AIRQUALITYVALUE1, CHANNEL_AIRQUALITYVALUE2, CHANNEL_OUTDOORAIRTEMPERATURE,
|
CHANNEL_AIRQUALITYVALUE2, CHANNEL_OUTDOORAIRTEMPERATURE, CHANNEL_SUPPLYAIRTEMPERATURE,
|
||||||
CHANNEL_SUPPLYAIRTEMPERATURE, CHANNEL_INDOORAIRTEMPERATURE, CHANNEL_EXHAUSTAIRTEMPERATURE,
|
CHANNEL_INDOORAIRTEMPERATURE, CHANNEL_EXHAUSTAIRTEMPERATURE, CHANNEL_SUPPLYAIRFANAIRFLOWRATE,
|
||||||
CHANNEL_SUPPLYAIRFANAIRFLOWRATE, CHANNEL_EXHAUSTAIRFANAIRFLOWRATE, CHANNEL_SUPPLYFANSPEED,
|
CHANNEL_EXHAUSTAIRFANAIRFLOWRATE, CHANNEL_SUPPLYFANSPEED, CHANNEL_EXHAUSTFANSPEED,
|
||||||
CHANNEL_EXHAUSTFANSPEED, CHANNEL_WEEKLYTIMERPROGRAMSTATUS),
|
CHANNEL_WEEKLYTIMERPROGRAMSTATUS),
|
||||||
HeatRecoveryVentilation_11(RORG.VLD, 0x50, 0x11, false, D2_50.class, THING_TYPE_HEATRECOVERYVENTILATION,
|
HeatRecoveryVentilation_11(RORG.VLD, 0x50, 0x11, false, D2_50.class, THING_TYPE_HEATRECOVERYVENTILATION,
|
||||||
CHANNEL_VENTILATIONOPERATIONMODE, CHANNEL_FIREPLACESAFETYMODE, CHANNEL_HEATEXCHANGERBYPASSSTATUS,
|
CHANNEL_VENTILATIONOPERATIONMODE, CHANNEL_FIREPLACESAFETYMODE, CHANNEL_HEATEXCHANGERBYPASSSTATUS,
|
||||||
CHANNEL_DEFROSTMODE, CHANNEL_COOLINGPROTECTIONMODE, CHANNEL_OUTDOORAIRHEATERSTATUS,
|
CHANNEL_DEFROSTMODE, CHANNEL_COOLINGPROTECTIONMODE, CHANNEL_OUTDOORAIRHEATERSTATUS,
|
||||||
CHANNEL_WEEKLYTIMERPROGRAMSTATUS, CHANNEL_SUPPLYAIRHEATERSTATUS, CHANNEL_DRAINHEATERSTATUS,
|
CHANNEL_WEEKLYTIMERPROGRAMSTATUS, CHANNEL_SUPPLYAIRHEATERSTATUS, CHANNEL_TIMEROPERATIONMODE,
|
||||||
CHANNEL_TIMEROPERATIONMODE, CHANNEL_MAINTENANCESTATUS, CHANNEL_ROOMTEMPERATURECONTROLSTATUS,
|
CHANNEL_MAINTENANCESTATUS, CHANNEL_ROOMTEMPERATURECONTROLSTATUS, CHANNEL_AIRQUALITYVALUE1,
|
||||||
CHANNEL_AIRQUALITYVALUE1, CHANNEL_AIRQUALITYVALUE2, CHANNEL_OUTDOORAIRTEMPERATURE,
|
CHANNEL_AIRQUALITYVALUE2, CHANNEL_OUTDOORAIRTEMPERATURE, CHANNEL_SUPPLYAIRTEMPERATURE,
|
||||||
CHANNEL_SUPPLYAIRTEMPERATURE, CHANNEL_INDOORAIRTEMPERATURE, CHANNEL_EXHAUSTAIRTEMPERATURE,
|
CHANNEL_INDOORAIRTEMPERATURE, CHANNEL_EXHAUSTAIRTEMPERATURE, CHANNEL_SUPPLYAIRFANAIRFLOWRATE,
|
||||||
CHANNEL_SUPPLYAIRFANAIRFLOWRATE, CHANNEL_EXHAUSTAIRFANAIRFLOWRATE, CHANNEL_SUPPLYFANSPEED,
|
CHANNEL_EXHAUSTAIRFANAIRFLOWRATE, CHANNEL_SUPPLYFANSPEED, CHANNEL_EXHAUSTFANSPEED);
|
||||||
CHANNEL_EXHAUSTFANSPEED);
|
|
||||||
|
|
||||||
private RORG rorg;
|
private RORG rorg;
|
||||||
private int func;
|
private int func;
|
||||||
@ -750,12 +744,8 @@ public enum EEPType {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public Configuration getChannelConfig(String channelId) {
|
public Configuration getChannelConfig(String channelId) {
|
||||||
Configuration c = null;
|
|
||||||
if (!channelIdsWithConfig.isEmpty()) {
|
if (!channelIdsWithConfig.isEmpty()) {
|
||||||
c = channelIdsWithConfig.get(channelId);
|
return channelIdsWithConfig.get(channelId);
|
||||||
if (c != null) {
|
|
||||||
return c;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return new Configuration();
|
return new Configuration();
|
||||||
}
|
}
|
||||||
|
@ -155,9 +155,6 @@ public class EnOceanBaseSensorHandler extends EnOceanBaseThingHandler implements
|
|||||||
ERP1Message msg = (ERP1Message) packet;
|
ERP1Message msg = (ERP1Message) packet;
|
||||||
|
|
||||||
EEPType localReceivingType = receivingEEPTypes.get(msg.getRORG());
|
EEPType localReceivingType = receivingEEPTypes.get(msg.getRORG());
|
||||||
if (localReceivingType == null) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
EEP eep = EEPFactory.buildEEP(localReceivingType, (ERP1Message) packet);
|
EEP eep = EEPFactory.buildEEP(localReceivingType, (ERP1Message) packet);
|
||||||
logger.debug("ESP Packet payload {} for {} received", HexUtils.bytesToHex(packet.getPayload()),
|
logger.debug("ESP Packet payload {} for {} received", HexUtils.bytesToHex(packet.getPayload()),
|
||||||
|
@ -448,7 +448,8 @@ public abstract class EnOceanTransceiver implements SerialPortEventListener {
|
|||||||
protected abstract byte[] serializePacket(BasePacket packet) throws EnOceanException;
|
protected abstract byte[] serializePacket(BasePacket packet) throws EnOceanException;
|
||||||
|
|
||||||
public synchronized void addPacketListener(PacketListener listener, long senderIdToListenTo) {
|
public synchronized void addPacketListener(PacketListener listener, long senderIdToListenTo) {
|
||||||
if (listeners.computeIfAbsent(senderIdToListenTo, k -> new HashSet<>()).add(listener)) {
|
HashSet<PacketListener> lst = listeners.computeIfAbsent(senderIdToListenTo, k -> new HashSet<>());
|
||||||
|
if (lst != null && lst.add(listener)) {
|
||||||
logger.debug("Listener added: {}", senderIdToListenTo);
|
logger.debug("Listener added: {}", senderIdToListenTo);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user