Benext Tag Reader with z-way

Discussions about Z-Way software and Z-Wave technology in general
creaflow
Posts: 3
Joined: 23 Jul 2014 14:07

Benext Tag Reader with z-way

Post by creaflow »

Dear all,

can someone explain please, how I can use the RFID tags with the Benext tag reader using z-way?
I have the original Benext tags, but I do not know how to add them for authentication.
The PIN code works fine.

Thanks and regards,
Chris
pofs
Posts: 688
Joined: 25 Mar 2011 19:03

Re: Benext Tag Reader with z-way

Post by pofs »

You should add your tag's unique code the same way you added a pin.

When you press Home button on your device and pass a yet unknown tag nearby, it should send its code to controller as a USER_CODE_REPORT with UserID=0 and Status=0.
The problem is z-way currently ignores the code part of USER_CODE_REPORT if Status=0 (would be fixed in the next update), so you cannot easily get it as /ZWaveAPI/Run/devices[x].UserCode.data[0].code.value.

But there's still a packet payload printed in the log, so you can get it from there as a workaround.
Find sequence "63 03 00 00" in the received packet, and take next 8 bytes after it (maybe not exactly 8, but it should be all the remaining bytes except the last one).
For example, it would be "A8 B5 2C 45 32 60 D0 EF". Now you may set it with /ZWaveAPI/Run/devices[x].UserCode.Set(userId,"\xA8\xB5\x2C\x45\x32\x60\xD0\xEF",1) where "userId" is a slot you want to use, and "x" is device id assigned to your device.

Hope this helps.
creaflow
Posts: 3
Joined: 23 Jul 2014 14:07

Re: Benext Tag Reader with z-way

Post by creaflow »

Thank you very much for this intersting hint!
I tried to follow your describtion, but I don't get it working. I have searched for the sequence and found the following:

Code: Select all

[2014-07-24 14:08:43.778] RECEIVED: ( 01 14 00 04 00 02 0E 63 03 00 00 8F 12 44 C3 00 00 01 08 00 00 90 )
Then I called the following URL in my Browser:

Code: Select all

http://192.168.2.54:8083/ZWaveAPI/Run/devices[2].UserCode.Set(50,"\x8F\x12\x44\xC3\x00\x00\x01\x08",1)
The browser returns "null" and in the log the following lines show up:

Code: Select all

[2014-07-24 15:52:13.234] Executing script: zway.devices[2].UserCode.Set(50,'\x8F\x12\x44\xC3\x00\x00\x01\x08',1)
[2014-07-24 15:52:13.237] Adding job: UserCode user code set
[2014-07-24 15:52:13.238] Adding job: UserCode user code get
[2014-07-24 15:52:21.363] RECEIVED: ( 01 14 00 04 00 02 0E 63 03 00 00 8F 12 44 C3 00 00 01 08 00 00 90 )
[2014-07-24 15:52:21.365] SENT ACK
I am a beginner, but it looks good to me.

When I press Home and put the tag in front of the reader, the log output is the following:

Code: Select all

[2014-07-24 16:07:06.347] SETDATA devices.2.data.lastReceived = 0 (0x00000000)
[2014-07-24 16:07:06.349] SETDATA devices.2.instances.0.commandClasses.99.data.0.status = 0 (0x00000000)
[2014-07-24 16:07:06.350] SETDATA devices.2.instances.0.commandClasses.99.data.0.code = Empty
[2014-07-24 16:07:06.351] SETDATA devices.2.instances.0.commandClasses.99.data.0.hasCode = False
[2014-07-24 16:07:06.353] SETDATA devices.2.instances.0.commandClasses.99.data.0 = Empty
[2014-07-24 16:07:06.364] RECEIVED: ( 01 08 00 04 00 02 02 84 07 70 )
[2014-07-24 16:07:06.366] SENT ACK
[2014-07-24 16:07:06.367] SETDATA devices.2.data.lastReceived = 0 (0x00000000)
[2014-07-24 16:07:06.368] Node 2:0 CC Wakeup: Wakeup notification
[2014-07-24 16:07:06.369] SETDATA devices.2.instances.0.commandClasses.132.data.lastWakeup = 1406210826 (0x53d1130a)
[2014-07-24 16:07:06.371] SETDATA devices.2.data.isAwake = True
[2014-07-24 16:07:06.372] SETDATA devices.2.data.lastSend = 671373 (0x000a3e8d)
[2014-07-24 16:07:06.373] SETDATA devices.2.data.lastNonceGet = 670373 (0x000a3aa5)
[2014-07-24 16:07:06.374] Running wakeup handler for node 2
[2014-07-24 16:07:06.376] SETDATA devices.2.instances.0.commandClasses.132.data.lastSleep = 1406210826 (0x53d1130a)
[2014-07-24 16:07:06.377] Node 2:0 CC Wakeup: Send node to sleep
[2014-07-24 16:07:06.378] Adding job: Wakeup Sleep
[2014-07-24 16:07:06.447] SENDING (cb 0x47): ( 01 11 00 13 02 0A 63 01 32 01 C2 8F 12 44 C3 83 05 47 BD )
[2014-07-24 16:07:06.459] RECEIVED ACK
[2014-07-24 16:07:06.470] RECEIVED: ( 01 04 01 13 01 E8 )
[2014-07-24 16:07:06.471] SENT ACK
[2014-07-24 16:07:06.472] Delivered to Z-Wave stack
[2014-07-24 16:07:06.484] RECEIVED: ( 01 05 00 13 47 00 AE )
[2014-07-24 16:07:06.485] SENT ACK
[2014-07-24 16:07:06.487] Job 0x13 (UserCode user code set): Delivered
[2014-07-24 16:07:06.488] SETDATA devices.2.data.lastPacketInfo.delivered = True
[2014-07-24 16:07:06.489] SETDATA devices.2.data.lastPacketInfo.packetLength = 13 (0x0000000d)
[2014-07-24 16:07:06.490] SETDATA devices.2.data.lastPacketInfo.deliveryTime = 14 (0x0000000e)
[2014-07-24 16:07:06.492] SETDATA devices.2.data.lastPacketInfo = **********
[2014-07-24 16:07:06.493] SendData Response with callback 0x47 received: received by recipient
[2014-07-24 16:07:06.494] SETDATA devices.2.data.lastSend = 671382 (0x000a3e96)
[2014-07-24 16:07:06.495] Job 0x13 (UserCode user code set): success
[2014-07-24 16:07:06.496] Removing job: UserCode user code set
[2014-07-24 16:07:06.565] SENDING (cb 0x48): ( 01 0A 00 13 02 03 63 02 32 05 48 F9 )
[2014-07-24 16:07:06.577] RECEIVED ACK
[2014-07-24 16:07:06.588] RECEIVED: ( 01 04 01 13 01 E8 )
[2014-07-24 16:07:06.589] SENT ACK
[2014-07-24 16:07:06.590] Delivered to Z-Wave stack
[2014-07-24 16:07:06.602] RECEIVED: ( 01 05 00 13 48 00 A1 )
[2014-07-24 16:07:06.603] SENT ACK
[2014-07-24 16:07:06.604] Job 0x13 (UserCode user code get): Delivered
[2014-07-24 16:07:06.606] SETDATA devices.2.data.lastPacketInfo.delivered = True
[2014-07-24 16:07:06.607] SETDATA devices.2.data.lastPacketInfo.packetLength = 6 (0x00000006)
[2014-07-24 16:07:06.608] SETDATA devices.2.data.lastPacketInfo.deliveryTime = 14 (0x0000000e)
[2014-07-24 16:07:06.610] SETDATA devices.2.data.lastPacketInfo = **********
[2014-07-24 16:07:06.610] SendData Response with callback 0x48 received: received by recipient
[2014-07-24 16:07:06.612] SETDATA devices.2.data.lastSend = 671391 (0x000a3e9f)
[2014-07-24 16:07:06.613] Job 0x13 (UserCode user code get): success
[2014-07-24 16:07:06.614] Removing job: UserCode user code get
[2014-07-24 16:07:06.626] RECEIVED: ( 01 14 00 04 00 02 0E 63 03 32 01 C2 8F 12 44 C3 83 00 00 00 00 EB )
[2014-07-24 16:07:06.627] SENT ACK
[2014-07-24 16:07:06.628] SETDATA devices.2.data.lastReceived = 0 (0x00000000)
[2014-07-24 16:07:06.629] SETDATA devices.2.instances.0.commandClasses.99.data.50.status = 1 (0x00000001)
[2014-07-24 16:07:06.630] SETDATA devices.2.instances.0.commandClasses.99.data.50.code = **********
[2014-07-24 16:07:06.632] SETDATA devices.2.instances.0.commandClasses.99.data.50.hasCode = True
[2014-07-24 16:07:06.633] SETDATA devices.2.instances.0.commandClasses.99.data.50 = Empty
[2014-07-24 16:07:06.691] SENDING (cb 0x49): ( 01 09 00 13 02 02 84 08 05 49 25 )
[2014-07-24 16:07:06.702] RECEIVED ACK
[2014-07-24 16:07:06.714] RECEIVED: ( 01 04 01 13 01 E8 )
[2014-07-24 16:07:06.715] SENT ACK
[2014-07-24 16:07:06.716] Delivered to Z-Wave stack
[2014-07-24 16:07:06.728] RECEIVED: ( 01 05 00 13 49 00 A0 )
[2014-07-24 16:07:06.729] SENT ACK
[2014-07-24 16:07:06.730] Job 0x13 (Wakeup Sleep): Delivered
[2014-07-24 16:07:06.731] SETDATA devices.2.data.lastPacketInfo.delivered = True
[2014-07-24 16:07:06.733] SETDATA devices.2.data.lastPacketInfo.packetLength = 5 (0x00000005)
[2014-07-24 16:07:06.734] SETDATA devices.2.data.lastPacketInfo.deliveryTime = 13 (0x0000000d)
[2014-07-24 16:07:06.735] SETDATA devices.2.data.lastPacketInfo = **********
[2014-07-24 16:07:06.736] SendData Response with callback 0x49 received: received by recipient
[2014-07-24 16:07:06.738] SETDATA devices.2.data.lastSend = 671400 (0x000a3ea8)
[2014-07-24 16:07:06.739] Job 0x13 (Wakeup Sleep): success
[2014-07-24 16:07:06.740] SETDATA devices.2.data.isAwake = False
[2014-07-24 16:07:06.741] Sending the queue for node 2 into sleep
[2014-07-24 16:07:06.743] Removing job: Wakeup Sleep
The lines from "[2014-07-24 16:07:06.629]" include my userId 50 I used for this tag and Status is 1 etc..

After this first try every other try results in the same output before the setup - the log shows always Status=0:

Code: Select all

[2014-07-24 16:09:31.584] SETDATA devices.2.data.lastReceived = 0 (0x00000000)
[2014-07-24 16:09:31.585] SETDATA devices.2.instances.0.commandClasses.99.data.0.status = 0 (0x00000000)
[2014-07-24 16:09:31.587] SETDATA devices.2.instances.0.commandClasses.99.data.0.code = Empty
[2014-07-24 16:09:31.589] SETDATA devices.2.instances.0.commandClasses.99.data.0.hasCode = False
[2014-07-24 16:09:31.590] SETDATA devices.2.instances.0.commandClasses.99.data.0 = Empty
[2014-07-24 16:09:31.602] RECEIVED: ( 01 08 00 04 00 02 02 84 07 70 )
Did I understand something wrong?
Thank you very much in advance!
pofs
Posts: 688
Joined: 25 Mar 2011 19:03

Re: Benext Tag Reader with z-way

Post by pofs »

Unfortunately your tag code is not a valid string, and it breaks when performing UTF8 conversion.

According to the documentation, UserCode should be "4 to 10 ASCII digits", but tag readers seem to ignore this and transfer code as binary.

The only thing I can currently think of, is sending a raw command to device:
/ZWaveAPI/Run/SendData(2,[0x63,0x01,50,1,0x8F,0x12,0x44,0xC3,0x00,0x00,0x01,0x08,0x00,0x00])

EDIT:
In the upcoming version there would be UserCode.SetRaw() method, so you can write

Code: Select all

/ZWaveAPI/Run/devices[2].UserCode.SetRaw(50, [ 0x8F,0x12,0x44,0xC3,0x00,0x00,0x01,0x08,0x00,0x00 ], 1)
Furthermore, you can now automate the process. For example, you can have the following handler to add a new tag:

Code: Select all

var uc = devices[2].UserCode;
if (uc.data[0] && uc.data[0].hasCode.value) {
    var code = uc.data[0].code.value;
    if (typeof code === "string")
        uc.Set(userId, code, 1);
    else
        uc.SetRaw(userId, code, 1);
}
a.berton
Posts: 2
Joined: 28 Jul 2014 11:10

Re: Benext Tag Reader with z-way

Post by a.berton »

Hello,
I'm trying to configure my tag reader.
You said your pin code work's fine, can you please share your configuration ?
It still not working on mine :(

If I understand fine we have to wait untill a new razberry firmware for RFID tag ?

Thanks
pofs
Posts: 688
Joined: 25 Mar 2011 19:03

Re: Benext Tag Reader with z-way

Post by pofs »

a.berton wrote:If I understand fine we have to wait untill a new razberry firmware for RFID tag ?
Software, not firmware. It is already available (1.7.2), and supports binary UserCodes (used by tags).
a.berton
Posts: 2
Joined: 28 Jul 2014 11:10

Re: Benext Tag Reader with z-way

Post by a.berton »

Ok I will try it as soon as possible.
What is the command to update the software ?
Is it the same as an install ?
wget -q -O - razberry.z-wave.me/install | sudo bash

Thanks
pofs
Posts: 688
Joined: 25 Mar 2011 19:03

Re: Benext Tag Reader with z-way

Post by pofs »

Yes, same command as install
creaflow
Posts: 3
Joined: 23 Jul 2014 14:07

Re: Benext Tag Reader with z-way

Post by creaflow »

That is really great - with the new SetRaw command everything works - I can add my RFID tags now and use the readers full potential :)
Thank you very much!!!
Christian12
Posts: 33
Joined: 06 Jan 2016 10:00

Re: Benext Tag Reader with z-way

Post by Christian12 »

Hello,

i do have zipato rfid keypad, can someone please explain, which steps i have to go, to get it run under v2.2.0 or v2.1.1?
Post Reply