[SOLVED] Security Teach In EnOcean device results in NPE in openhab log

Hey, first… I’m new to OpenHab and EnOcean, so please forgive my maybe stupid questions.

I’m using OpenHab 2.4 on Raspberry Pi 3 with USB300 EnOcean and some EnOcean devices.

I already use some NodOn temperature and humidity sensors (STPH-2-1-05) and wanted to add one more yesterday.

By pressing the sensors teach in button I have no success and get 3 NPEs in openhab log (debug for enocean activated)…

2019-08-26 21:02:32.888 [INFO ] [covery.EnOceanDeviceDiscoveryService] - Stopping EnOcean discovery scan
2019-08-26 21:02:32.900 [INFO ] [covery.EnOceanDeviceDiscoveryService] - Starting EnOcean discovery and accepting teach in requests
2019-08-26 21:02:37.983 [DEBUG] [ernal.transceiver.EnOceanTransceiver] - RADIO_ERP1 with RORG Unknown for  payload 3520935CA61854B12523E8DCEE235E0581CCEF0000FFFFFFFF5B00 received
2019-08-26 21:02:37.990 [ERROR] [ernal.transceiver.EnOceanTransceiver] - Exception in informListeners
java.lang.NumberFormatException: For input string: ""
        at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) ~[?:?]
        at java.lang.Long.parseLong(Long.java:601) ~[?:?]
        at org.openhab.binding.enocean.internal.transceiver.EnOceanTransceiver.informListeners(EnOceanTransceiver.java:404) [228:org.openhab.binding.enocean:2.4.0]
        at org.openhab.binding.enocean.internal.transceiver.EnOceanTransceiver.processMessage(EnOceanTransceiver.java:299) [228:org.openhab.binding.enocean:2.4.0]
        at org.openhab.binding.enocean.internal.transceiver.EnOceanTransceiver.receivePackets(EnOceanTransceiver.java:186) [228:org.openhab.binding.enocean:2.4.0]
        at org.openhab.binding.enocean.internal.transceiver.EnOceanTransceiver.access$2(EnOceanTransceiver.java:178) [228:org.openhab.binding.enocean:2.4.0]
        at org.openhab.binding.enocean.internal.transceiver.EnOceanTransceiver$1.run(EnOceanTransceiver.java:154) [228:org.openhab.binding.enocean:2.4.0]
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:?]
        at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:?]
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) [?:?]
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) [?:?]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:?]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:?]
        at java.lang.Thread.run(Thread.java:748) [?:?]
2019-08-26 21:02:38.001 [DEBUG] [ernal.transceiver.EnOceanTransceiver] - RADIO_ERP1 with RORG Unknown for  payload 35608960FB0572B3760581CCEF0000FFFFFFFF5B00 received
2019-08-26 21:02:38.006 [ERROR] [ernal.transceiver.EnOceanTransceiver] - Exception in informListeners
java.lang.NumberFormatException: For input string: ""
        at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) ~[?:?]
        at java.lang.Long.parseLong(Long.java:601) ~[?:?]
        at org.openhab.binding.enocean.internal.transceiver.EnOceanTransceiver.informListeners(EnOceanTransceiver.java:404) [228:org.openhab.binding.enocean:2.4.0]
        at org.openhab.binding.enocean.internal.transceiver.EnOceanTransceiver.processMessage(EnOceanTransceiver.java:299) [228:org.openhab.binding.enocean:2.4.0]
        at org.openhab.binding.enocean.internal.transceiver.EnOceanTransceiver.receivePackets(EnOceanTransceiver.java:186) [228:org.openhab.binding.enocean:2.4.0]
        at org.openhab.binding.enocean.internal.transceiver.EnOceanTransceiver.access$2(EnOceanTransceiver.java:178) [228:org.openhab.binding.enocean:2.4.0]
        at org.openhab.binding.enocean.internal.transceiver.EnOceanTransceiver$1.run(EnOceanTransceiver.java:154) [228:org.openhab.binding.enocean:2.4.0]
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:?]
        at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:?]
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) [?:?]
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) [?:?]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:?]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:?]
        at java.lang.Thread.run(Thread.java:748) [?:?]
2019-08-26 21:02:38.023 [DEBUG] [ernal.transceiver.EnOceanTransceiver] - RADIO_ERP1 with RORG Unknown for  payload 31278986781FC6D3344B0581CCEF0000FFFFFFFF5C00 received
2019-08-26 21:02:38.028 [ERROR] [ernal.transceiver.EnOceanTransceiver] - Exception in informListeners
java.lang.NumberFormatException: For input string: ""
        at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) ~[?:?]
        at java.lang.Long.parseLong(Long.java:601) ~[?:?]
        at org.openhab.binding.enocean.internal.transceiver.EnOceanTransceiver.informListeners(EnOceanTransceiver.java:404) [228:org.openhab.binding.enocean:2.4.0]
        at org.openhab.binding.enocean.internal.transceiver.EnOceanTransceiver.processMessage(EnOceanTransceiver.java:299) [228:org.openhab.binding.enocean:2.4.0]
        at org.openhab.binding.enocean.internal.transceiver.EnOceanTransceiver.receivePackets(EnOceanTransceiver.java:186) [228:org.openhab.binding.enocean:2.4.0]
        at org.openhab.binding.enocean.internal.transceiver.EnOceanTransceiver.access$2(EnOceanTransceiver.java:178) [228:org.openhab.binding.enocean:2.4.0]
        at org.openhab.binding.enocean.internal.transceiver.EnOceanTransceiver$1.run(EnOceanTransceiver.java:154) [228:org.openhab.binding.enocean:2.4.0]
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:?]
        at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:?]
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) [?:?]
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) [?:?]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:?]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:?]
        at java.lang.Thread.run(Thread.java:748) [?:?]

So I checked the communication with the DolphinView tool from EnOcean. With that I see that my existing sensors all are without security and rolling codes / keys set to 00 00 … I thought that would be initialized by teach in in openhab to have secured communication. But that is another question I don’t want to ask here. The new sensor has a closed lock on it in the list and a set rolling code, key and security level format.

With DolphinView I can see 3 messages for teach in of the new device… two RORG 0x35 SEC_TI - Security Teach In and after that one (in my eyes) normal but encrypted teach in telegram. I think this 3 telegrams produce the three null pointer exceptions in the openhab log.

I tried to play with the SecuritySend-Tab in DolphinView a little bit to “reset” the new device but without success.

And now I’m stuck and don’t know what to do. Maybe some hints from the community?

Thanks alot!

You might want to ask in this thread. They are working on fixes for a newer version binding though.

Hi Carsten @wbr,

security teach in or any other security features (encrypted communication) is currently not supported by the binding. However this feature is on my todo list (but with lower priority). Nevertheless the NPE should not occure in case of an unkown RORG, I will fix this.

Best regards
Daniel

Thanks. I’ve linked this topic in the other one you’ve mentioned. Maybe the binding maintainer will have a look.

I think otherwise I have to return the new sensor and hope to get one without security teach in by default.

Ah sorry. I wrote my post in exactly the same time. Lol.

Thanks for the information. Do you know how I can reset the sensor so it teach in without security?

Good question :thinking: I have just played around with secured rocker switches from eltako. In this case you have to use a special device (“Verschlüsselungswippe FTVW”). But in this case… I could not found any hint in the docs too. However the NodOn support is very helpful and answered already a lot of questions to me very quickly. Maybe you ask the support.

Ok. Sent a question to nod on. I keep you up to date if they answer.

1 Like

Got an answer today. The solution to reset the sensor is simple but you have to know… You have to be sure the battery is charged (or insert dedicated battery) and then press learn button for 10 seconds. After this action the sensor tries unsecured teach in again.

Hi Carsten,

thanks for the update and nice to hear that is working now. It is really a pity that so much features are not well documented.

Wish you a lot of fun with the binding

You should try finding documentation for poorly documented Z-Wave devices when the company no longer exists. It can be a challenge. I have been trying to clean up our device database.

1 Like

Hello, thanks for this solution. I just discovered the same behaviour while adding a 3rd Nodon TempHumidity sensor - so seems not that uncommon by Nodon to ship Sensors in different initial states. Exactly same behaviour - and also same Exception from EnOcean binding.

Are you planning to add secure communication soon?