Today I have received and installed my YMF40A Yale lock with Zigbee module and started testing it. Below is a list of problems/improvement opportunities I've found so far.
1) When you click the "Lock" command on the driver screen (or any other mean that triggers the lock action via HE), sometimes 2 events are sent to the lock in a short interval, sometimes just 1.
2022-10-20 11:05:06.862 info Yale YMF40A was locked via command [digital]
2022-10-20 11:05:06.830 info Yale YMF40A was locked via command [digital]
2) YMF40A supports 100 numeric codes and 100 fingerprints but in the driver "Current States" I have "maxCodes : 1", so it is impossible to use the "Set Code" command for any user other than 01.
3) When clicking "Configure" or "Get Codes" the following error shows up in the logs, and apparently the command fails
java.lang.IndexOutOfBoundsException: toIndex = 6 on line 179 (method parse)
I don't remember which one of the actions worked the first time I clicked, but it apparently fetched "correctly" 512 codes, then the error message mentioned occurred for the first time:
2022-10-20 09:32:06.499 error java.lang.IndexOutOfBoundsException: toIndex = 6 on line 179 (method parse)
2022-10-20 09:31:45.806 trace trying to fetch code:513
2022-10-20 09:31:45.805 info code:512 fetched
2022-10-20 09:31:30.731 trace trying to fetch code:512
...
2022-10-20 08:43:16.729 trace trying to fetch code:2
2022-10-20 08:43:16.727 info code:1 fetched
This problem might be related to problem 2 above, because there are only 100 password slots, but the driver is trying to fetch more than 500.
4) When unlocking with numeric code of any user (in this case user 11), there is an error in the logs and the status remains locked on HE, which is a very serious security issue!!
2022-10-20 12:51:08.297 debug descMap:[raw:catchall: 0104 0101 01 01 0040 00 9CF5 01 00 0000 06 01 0B00000000, profileId:0104, clusterId:0101, clusterInt:257, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:9CF5, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:06, direction:01, data:[0B, 00, 00, 00, 00]]
2022-10-20 12:51:08.292 debug default response:[raw:catchall: 0104 0101 01 01 0040 00 9CF5 00 00 0000 0B 01 0689, profileId:0104, clusterId:0101, clusterInt:257, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:9CF5, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:0B, direction:01, data:[06, 89]]
2022-10-20 12:51:08.288 debug descMap:[raw:catchall: 0104 0101 01 01 0040 00 9CF5 00 00 0000 0B 01 0689, profileId:0104, clusterId:0101, clusterInt:257, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:9CF5, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:0B, direction:01, data:[06, 89]]
// I'm not sure if the logs above are related to the same unlock event, but I did nothing else in this period, so I'm including them here.
2022-10-20 12:51:05.340 error java.lang.NullPointerException: Cannot invoke method size() on null object on line 238 (method parse)
2022-10-20 12:51:04.526 debug descMap:[raw:catchall: 0104 0101 01 01 0040 00 9CF5 01 00 0000 20 01 00020B0000FABA181E00, profileId:0104, clusterId:0101, clusterInt:257, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:9CF5, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:20, direction:01, data:[00, 02, 0B, 00, 00, FA, BA, 18, 1E, 00]]
Unlocking with fingerprint works, in this example with user 02:
2022-10-20 12:57:49.828 info Yale YMF40A was unlocked via unknown [physical]
2022-10-20 12:57:49.823 debug descMap:[raw:catchall: 0104 0101 01 01 0040 00 9CF5 01 00 0000 20 01 0402020000FABA181E00, profileId:0104, clusterId:0101, clusterInt:257, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:9CF5, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:20, direction:01, data:[04, 02, 02, 00, 00, FA, BA, 18, 1E, 00]]
Unlocking with fingerprint, user 01:
2022-10-20 13:02:12.031 info Yale YMF40A was unlocked via unknown [physical]
2022-10-20 13:02:12.028 debug descMap:[raw:catchall: 0104 0101 01 01 0040 00 9CF5 01 00 0000 20 01 0402010000FABA181E00, profileId:0104, clusterId:0101, clusterInt:257, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:9CF5, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:20, direction:01, data:[04, 02, 01, 00, 00, FA, BA, 18, 1E, 00]]
From the received Zigbee unlock messages it is clear that the user/slot number is the third information in the "data" section, and apparently the method (code or fingerprint) is the first. It would be great if these infos could somehow be provided, like they are in other platforms. Also the "via unknown" part of the logs could be replaced with "via fingerprint" and "via code".
PS: I didn't know it existed so I didn't have "Lock Code Manager" app installed when all the info above was collected. All the logs are from the Yale device only.