Bacnet MSTP Address after ip address

Need to figure out how to add points for bacnet when they have a mstp number after ip address on router?

2019-06-25 02:56:17.820 [ERROR] [.bacnet4j.transport.DefaultTransport] - Error during send: OutgoingConfirmed [maxAPDULengthAccepted=480, segmentationSupported=no-segmentation, service=ReadPropertyRequest [objectIdentifier=device 1100, propertyIdentifier=protocol-services-supported, propertyArrayIndex=null], consumer=com.serotonin.bacnet4j.transport.ServiceFutureImpl@1ca3270, address=Address [networkNumber=106, macAddress=[1]], linkService=null]
java.lang.IllegalArgumentException: Not an I/P mac
at com.serotonin.bacnet4j.npdu.ip.IpNetworkUtils.getIpBytes(IpNetworkUtils.java:115) ~[252:org.openhab.binding.bacnet:1.13.0.201812290105]
at com.serotonin.bacnet4j.npdu.ip.IpNetworkUtils.getInetAddress(IpNetworkUtils.java:89) ~[252:org.openhab.binding.bacnet:1.13.0.201812290105]
at com.serotonin.bacnet4j.npdu.ip.IpNetworkUtils.getInetSocketAddress(IpNetworkUtils.java:96) ~[252:org.openhab.binding.bacnet:1.13.0.201812290105]
at com.serotonin.bacnet4j.npdu.ip.IpNetwork.sendNPDU(IpNetwork.java:298) ~[252:org.openhab.binding.bacnet:1.13.0.201812290105]
at com.serotonin.bacnet4j.npdu.Network.sendAPDU(Network.java:118) ~[252:org.openhab.binding.bacnet:1.13.0.201812290105]
at com.serotonin.bacnet4j.transport.DefaultTransport.sendForResponse(DefaultTransport.java:991) ~[252:org.openhab.binding.bacnet:1.13.0.201812290105]
at com.serotonin.bacnet4j.transport.DefaultTransport$OutgoingConfirmed.sendImpl(DefaultTransport.java:405) ~[252:org.openhab.binding.bacnet:1.13.0.201812290105]
at com.serotonin.bacnet4j.transport.DefaultTransport$Outgoing.send(DefaultTransport.java:336) ~[252:org.openhab.binding.bacnet:1.13.0.201812290105]
at com.serotonin.bacnet4j.transport.DefaultTransport.run(DefaultTransport.java:486) [252:org.openhab.binding.bacnet:1.13.0.201812290105]
at java.lang.Thread.run(Thread.java:748) [?:?]

@splatch
Hi Lukasz,
Can you help, here?

Currently binding does not support mstp in any form. Only BACnet/IP was tested thus IP address in configuration is only accepting regular x.x.x.x notation. Not sure what is MSTP address you are trying to set.

Do you have possibility to plug openHAB through serial lane to BACnet network?

Hi Splatch,

thank you for getting back to me.

I have a bacnet MSTP device behind a bacnet router.

Pretty sure differant manufacturers do deifferant device addresses through router on other side. Mine seems to add the mstp address after the device address
I will do some more testing put the ip address is always after the via keyword.

Could be wrong but on YABE it shows this, I will turn on wireshark to make sure of this. Was wondering if i could test this?

I would assume I need a ip to rs485 interface to serial line it?

If YABE shows thing we should be able to fetch it as well. I simply lack a possibility to test scenario with router for now. Can you try to place IP address in bacnet.cfg and rely just on deviceId and discovery while defining items?

Can you give me an example bacnet.cfg and an example item.cfg
also i was wondering if we can add a property id and not just the default present value?

here is my bacnet.cfg
refreshInterval=5000
bacnet:broadcast=192.168.47.255
bacnet:discoveryTimeout=70000

here is my bacnet.items
Number Zn_T “Zn_T_1 [%.1f F]” {bacnet=“device=1100,type=analogInput,id=1”}

does not seem to work
still adds the mac address as the mstp address
my guess is because it expects the ip address to follow?

Error during send: OutgoingConfirmed [maxAPDULengthAccepted=480, segmentationSupported=no-segmentation, service=ReadPropertyRequest [objectIdentifier=device 1100, propertyIdentifier=protocol-services-supported, propertyArrayIndex=null], consumer=com.serotonin.bacnet4j.transport.ServiceFutureImpl@6706e5, address=Address [networkNumber=106, macAddress=[1]], linkService=null]
java.lang.IllegalArgumentException: Not an I/P mac
at com.serotonin.bacnet4j.npdu.ip.IpNetwork

Yeah, this will break as there is no direct support for MSTP and all addresses are assumed to be valid MAC. I need to check how to get necessary communication code first in order to get it working in binding.

Can you post the result of device discovery during bacnet initialization ?

And also, can you share a screenshot of what it looks like in Yabe ? I am using a ms/tp device just fine on my end. Would like to see what the differences are in your setup.

[.bacnet4j.transport.DefaultTransport] - Error during send: OutgoingConfirmed [maxAPDULengthAccepted=480, segmentationSupported=no-segmentation, service=ReadPropertyRequest [objectIdentifier=device 1100, propertyIdentifier=protocol-services-supported, propertyArrayIndex=null], consumer=com.serotonin.bacnet4j.transport.ServiceFutureImpl@6706e5, address=Address [networkNumber=106, macAddress=[1]], linkService=null]

and which router are you using?

This is the result of device discovery ?

Can you share a screenshot from Yabe ?

Hi I just thought I would update you all. I got a different brand of router. hooked it up and viola!!! it works without changing anything. hmmmm if I have time capture both cases in wire shark and let you know results it’s definitely in the router code of the first router.

1 Like