diff --git a/bundles/org.openhab.binding.snmp/src/main/java/org/openhab/binding/snmp/internal/SnmpTargetHandler.java b/bundles/org.openhab.binding.snmp/src/main/java/org/openhab/binding/snmp/internal/SnmpTargetHandler.java index ee6335e05909a..d07b5a7d816b2 100644 --- a/bundles/org.openhab.binding.snmp/src/main/java/org/openhab/binding/snmp/internal/SnmpTargetHandler.java +++ b/bundles/org.openhab.binding.snmp/src/main/java/org/openhab/binding/snmp/internal/SnmpTargetHandler.java @@ -51,6 +51,7 @@ import org.snmp4j.CommandResponderEvent; import org.snmp4j.CommunityTarget; import org.snmp4j.PDU; +import org.snmp4j.PDUv1; import org.snmp4j.event.ResponseEvent; import org.snmp4j.event.ResponseListener; import org.snmp4j.mp.SnmpConstants; @@ -209,6 +210,16 @@ public void processPdu(@Nullable CommandResponderEvent event) { final String address = ((UdpAddress) event.getPeerAddress()).getInetAddress().getHostAddress(); final String community = new String(event.getSecurityName()); + if ((pdu.getType() == PDU.V1TRAP) && config.community.equals(community) && (pdu instanceof PDUv1)) { + logger.trace("{} received trap is PDUv1.", thing.getUID()); + PDUv1 pduv1 = (PDUv1) pdu; + OID oidEnterprise = pduv1.getEnterprise(); + int trapValue = pduv1.getGenericTrap(); + if (trapValue == PDUv1.ENTERPRISE_SPECIFIC) { + trapValue = pduv1.getSpecificTrap(); + } + updateChannels(oidEnterprise, new UnsignedInteger32(trapValue), trapChannelSet); + } if ((pdu.getType() == PDU.TRAP || pdu.getType() == PDU.V1TRAP) && config.community.equals(community) && targetAddressString.equals(address)) { pdu.getVariableBindings().forEach(variable -> {