NodOn SIN-2-RS-01 Issue: "Exception in informListeners"

Hi!
in event log I get following error regularly for my NodOn SIN-2-RS-01 device:

2021-04-10 16:58:59.825 [ERROR] [ernal.transceiver.EnOceanTransceiver] - Exception in informListeners
java.lang.IllegalArgumentException: Value must be between 0 and 100
	at org.openhab.core.library.types.PercentType.validateValue(PercentType.java:57) ~[bundleFile:?]
	at org.openhab.core.library.types.PercentType.<init>(PercentType.java:42) ~[bundleFile:?]
	at org.openhab.binding.enocean.internal.eep.D2_05.D2_05_00.getPositionData(D2_05_00.java:88) ~[bundleFile:?]
	at org.openhab.binding.enocean.internal.eep.D2_05.D2_05_00.convertToStateImpl(D2_05_00.java:121) ~[bundleFile:?]
	at org.openhab.binding.enocean.internal.eep.EEP.convertToState(EEP.java:115) ~[bundleFile:?]
	at org.openhab.binding.enocean.internal.handler.EnOceanBaseSensorHandler.lambda$3(EnOceanBaseSensorHandler.java:163) ~[bundleFile:?]
	at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183) ~[?:?]
	at java.util.ArrayList.forEach(ArrayList.java:1541) ~[?:?]
	at java.util.stream.SortedOps$RefSortingSink.end(SortedOps.java:395) ~[?:?]
	at java.util.stream.Sink$ChainedReference.end(Sink.java:258) ~[?:?]
	at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:485) ~[?:?]
	at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474) ~[?:?]
	at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150) ~[?:?]
	at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173) ~[?:?]
	at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[?:?]
	at java.util.stream.ReferencePipeline.forEachOrdered(ReferencePipeline.java:502) ~[?:?]
	at org.openhab.binding.enocean.internal.handler.EnOceanBaseSensorHandler.packetReceived(EnOceanBaseSensorHandler.java:153) ~[bundleFile:?]
	at org.openhab.binding.enocean.internal.transceiver.EnOceanTransceiver.lambda$0(EnOceanTransceiver.java:297) ~[bundleFile:?]
	at java.lang.Iterable.forEach(Iterable.java:75) ~[?:?]
	at org.openhab.binding.enocean.internal.transceiver.EnOceanTransceiver.informListeners(EnOceanTransceiver.java:297) [bundleFile:?]
	at org.openhab.binding.enocean.internal.transceiver.EnOceanESP3Transceiver.processMessage(EnOceanESP3Transceiver.java:151) [bundleFile:?]
	at org.openhab.binding.enocean.internal.transceiver.EnOceanTransceiver.receivePackets(EnOceanTransceiver.java:254) [bundleFile:?]
	at org.openhab.binding.enocean.internal.transceiver.EnOceanTransceiver$1.run(EnOceanTransceiver.java:191) [bundleFile:?]
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) [?:?]
	at java.util.concurrent.FutureTask.run(FutureTask.java:264) [?:?]
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) [?:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]
	at java.lang.Thread.run(Thread.java:834) [?:?]

Any idea?

Thanks,
Markus

Got some more info:
EnOcean Profile D2-05-00 specifies for answer on position request (“CMD 4 Reply Position and Angle”) for bit with offset 0 (size 1) that it is not used and should be “0”.
I get 0xFF as value for first byte, i.e. “not used bit” has value “1”.
In D2_05_00.java I found following implementation for getPositionData():

protected State getPositionData() {
   if (getCMD() == CMD_ACTUATOR_POSITION_RESPONE) {
      if (bytes[0] != 127) {
           return new PercentType(bytes[0] & 0x7f);
       }
   }

The issue is condition in second if statement. For robusteness (and covering my problem) it should rather be:

      if ((bytes[0] & 0x7f) != 127) {

What do you think?

Have you found a solution? I have the same error in the LOG.

2021-11-14 14:39:55.232 [ERROR] [ernal.transceiver.EnOceanTransceiver] - Exception in informListeners

java.lang.IllegalArgumentException: Value must be between 0 and 100

	at org.openhab.core.library.types.PercentType.validateValue(PercentType.java:97) ~[bundleFile:?]

	at org.openhab.core.library.types.PercentType.<init>(PercentType.java:53) ~[bundleFile:?]

	at org.openhab.binding.enocean.internal.eep.D2_05.D2_05_00.getPositionData(D2_05_00.java:88) ~[bundleFile:?]

	at org.openhab.binding.enocean.internal.eep.D2_05.D2_05_00.convertToStateImpl(D2_05_00.java:122) ~[bundleFile:?]

	at org.openhab.binding.enocean.internal.eep.EEP.convertToState(EEP.java:115) ~[bundleFile:?]

	at org.openhab.binding.enocean.internal.handler.EnOceanBaseSensorHandler.lambda$3(EnOceanBaseSensorHandler.java:170) ~[bundleFile:?]

	at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183) ~[?:?]

	at java.util.ArrayList.forEach(ArrayList.java:1541) ~[?:?]

	at java.util.stream.SortedOps$RefSortingSink.end(SortedOps.java:395) ~[?:?]

	at java.util.stream.Sink$ChainedReference.end(Sink.java:258) ~[?:?]

	at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:485) ~[?:?]

	at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474) ~[?:?]

	at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150) ~[?:?]

	at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173) ~[?:?]

	at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[?:?]

	at java.util.stream.ReferencePipeline.forEachOrdered(ReferencePipeline.java:502) ~[?:?]

	at org.openhab.binding.enocean.internal.handler.EnOceanBaseSensorHandler.packetReceived(EnOceanBaseSensorHandler.java:160) ~[bundleFile:?]

	at org.openhab.binding.enocean.internal.transceiver.EnOceanTransceiver.lambda$0(EnOceanTransceiver.java:309) ~[bundleFile:?]

	at java.lang.Iterable.forEach(Iterable.java:75) ~[?:?]

	at org.openhab.binding.enocean.internal.transceiver.EnOceanTransceiver.informListeners(EnOceanTransceiver.java:309) [bundleFile:?]

	at org.openhab.binding.enocean.internal.transceiver.EnOceanESP3Transceiver.processMessage(EnOceanESP3Transceiver.java:140) [bundleFile:?]

	at org.openhab.binding.enocean.internal.transceiver.EnOceanTransceiver.receivePackets(EnOceanTransceiver.java:262) [bundleFile:?]

	at org.openhab.binding.enocean.internal.transceiver.EnOceanTransceiver$1.run(EnOceanTransceiver.java:197) [bundleFile:?]

	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) [?:?]

	at java.util.concurrent.FutureTask.run(FutureTask.java:264) [?:?]

	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) [?:?]

	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]

	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]

	at java.lang.Thread.run(Thread.java:829) [?:?]

Sorry - no.