27.09.2017, 18:02
(This post was last modified: 27.09.2017, 20:53 by Erwin van der Zwart.)
Hi,
Create a 255 byte object (1/1/1 in this sample) and link it to the address of your 6 byte value that you use in the ETS and attached this script to it:
That will give you the 3x 2 byte float objects that you can export to BACnet.
Attach a tag to the 3x 2 byte float objects and create a event based script attached to that tag and paste this script in it:
This will write the (BACnet side) changed value back to your 6 byte object. Because i added event.src you can use the same 255 byte object for incomming and outgoing telegrams and avoid triggering a loop.
BR,
Erwin
Create a 255 byte object (1/1/1 in this sample) and link it to the address of your 6 byte value that you use in the ETS and attached this script to it:
Code:
if event.src ~= 'local' then
value = event.getvalue()
value = lmcore.strtohex(value)
bytestable = {}
for i = 2, #value, 2 do
bytevalue = string.sub(value, (i-1), i)
table.insert(bytestable, bytevalue)
end
value1 = knxdatatype.decode(bytestable[1] .. bytestable[2], dt.float16)
value2 = knxdatatype.decode(bytestable[3] .. bytestable[4], dt.float16)
value3 = knxdatatype.decode(bytestable[5] .. bytestable[6], dt.float16)
grp.update('32/1/1', value1)
grp.update('32/1/2', value2)
grp.update('32/1/3', value3)
end
That will give you the 3x 2 byte float objects that you can export to BACnet.
Attach a tag to the 3x 2 byte float objects and create a event based script attached to that tag and paste this script in it:
Code:
if event.src == 'local' then
value1 = grp.find('32/1/1').datahex
value2 = grp.find('32/1/2').datahex
value3 = grp.find('32/1/3').datahex
sixbytevaluestring = lmcore.hextostr(value1 .. value2 .. value3)
oldvalue = grp.getvalue('1/1/1')
if oldvalue ~= sixbytevaluestring then
grp.write('1/1/1', sixbytevaluestring)
end
end
This will write the (BACnet side) changed value back to your 6 byte object. Because i added event.src you can use the same 255 byte object for incomming and outgoing telegrams and avoid triggering a loop.
BR,
Erwin