Please Note This forum exists for community support for the Mango product family and the Radix IoT Platform. Although Radix IoT employees participate in this forum from time to time, there is no guarantee of a response to anything posted here, nor can Radix IoT, LLC guarantee the accuracy of any information expressed or conveyed. Specific project questions from customers with active support contracts are asked to send requests to support@radixiot.com.

Radix IoT Website Mango 3 Documentation Website Mango 4 Documentation Website

Bacnet4j Error Unable to find router to network 50001,20001 soo on


  • When I try to read the object properties from the IP address, I am getting Unable to find router to network 50001
    please help me.

    I am using Bacnet4j 3.2.4.4 library.

    Here is the Code:
    import com.serotonin.bacnet4j.LocalDevice;
    import com.serotonin.bacnet4j.RemoteDevice;
    import com.serotonin.bacnet4j.RemoteObject;
    import com.serotonin.bacnet4j.ServiceFuture;
    import com.serotonin.bacnet4j.event.DeviceEventAdapter;
    import com.serotonin.bacnet4j.exception.BACnetException;
    import com.serotonin.bacnet4j.exception.ErrorAPDUException;
    import com.serotonin.bacnet4j.npdu.ip.IpNetwork;
    import com.serotonin.bacnet4j.service.acknowledgement.ReadPropertyAck;
    import com.serotonin.bacnet4j.service.acknowledgement.ReadPropertyMultipleAck;
    import com.serotonin.bacnet4j.service.confirmed.*;
    import com.serotonin.bacnet4j.service.unconfirmed.WhoIsRequest;
    import com.serotonin.bacnet4j.transport.DefaultTransport;
    import com.serotonin.bacnet4j.transport.Transport;
    import com.serotonin.bacnet4j.type.constructed.ReadAccessResult;
    import com.serotonin.bacnet4j.type.constructed.ReadAccessSpecification;
    import com.serotonin.bacnet4j.type.constructed.SequenceOf;
    import com.serotonin.bacnet4j.type.enumerated.ObjectType;
    import com.serotonin.bacnet4j.type.enumerated.PropertyIdentifier;
    import com.serotonin.bacnet4j.type.enumerated.Segmentation;
    import com.serotonin.bacnet4j.type.primitive.ObjectIdentifier;
    import com.serotonin.bacnet4j.type.primitive.Real;
    import com.serotonin.bacnet4j.util.DiscoveryUtils;

    import java.util.ArrayList;
    import java.util.List;

    public class Bacnet_4_j_test2 {

    /**

    • @param args the command line arguments
      */
      public static void main(String[] args) throws Exception {
      IpNetwork network = new IpNetwork("172.16.60.195", IpNetwork.DEFAULT_PORT);
      Transport transport = new DefaultTransport(network);
      transport.setTimeout(500000);
      transport.setSegTimeout(15000);
      final LocalDevice localDevice = new LocalDevice(5001, transport);

    localDevice.getEventHandler().addListener(new DeviceEventAdapter() {
    public void iAmReceived(RemoteDevice device) {
    // System.out.println("Discovered device " + 1001);
    localDevice.addRemoteDevice(device);
    final RemoteDevice remoteDevice = localDevice.getRemoteDevice(device.getAddress());
    // System.out.println("hi:"+remoteDevice.getInstanceNumber());

    remoteDevice.setSegmentationSupported(Segmentation.segmentedBoth);
    remoteDevice.setSegmentationSupported(Segmentation.noSegmentation);
    remoteDevice.setSegmentationSupported(Segmentation.segmentedReceive);
    remoteDevice.setSegmentationSupported(Segmentation.segmentedTransmit);
    remoteDevice.setSegmentationSupported(Segmentation.ALL[3]);
    device.setMaxAPDULengthAccepted(100);

    // System.out.println("Hi:"+remoteDevice.getSegmentationSupported());

    new Thread(new Runnable() {
    @Override
    public void run() {
    try {
    try {
    DiscoveryUtils.getExtendedDeviceInformation(localDevice, remoteDevice);
    } catch (BACnetException e) {
    e.printStackTrace();
    }
    System.out.println(remoteDevice.getName() + " " + remoteDevice.getVendorName() + " " + remoteDevice.getModelName() + " " + remoteDevice.getAddress() + " " + remoteDevice.getProtocolRevision() + " " + remoteDevice.getProtocolVersion());

    ReadPropertyAck ack = localDevice.send(remoteDevice, new ReadPropertyRequest(remoteDevice.getObjectIdentifier(), PropertyIdentifier.objectList)).get();
    SequenceOf<ObjectIdentifier> value = (SequenceOf<ObjectIdentifier>) ack.getValue();

    for (ObjectIdentifier id : value) {

    List<ReadAccessSpecification> specs = new ArrayList<ReadAccessSpecification>();
    specs.add(new ReadAccessSpecification(id, PropertyIdentifier.presentValue));
    //specs.add(new ReadAccessSpecification(id, PropertyIdentifier.units));
    specs.add(new ReadAccessSpecification(id, PropertyIdentifier.objectName));
    //specs.add(new ReadAccessSpecification(id, PropertyIdentifier.description));
    //specs.add(new ReadAccessSpecification(id, PropertyIdentifier.objectType));
    //specs.add(new ReadAccessSpecification(id, PropertyIdentifier.eventType));

    ReadPropertyMultipleRequest multipleRequest = new ReadPropertyMultipleRequest(new SequenceOf<ReadAccessSpecification>(specs));

    ReadPropertyMultipleAck send = localDevice.send(remoteDevice, multipleRequest).get();
    SequenceOf<ReadAccessResult> readAccessResults = send.getListOfReadAccessResults();

    System.out.print(id.getInstanceNumber() + " " + id.getObjectType() + ", ");
    for (ReadAccessResult result : readAccessResults) {
    for (ReadAccessResult.Result r : result.getListOfResults()) {
    System.out.print(r.getReadResult() + ", ");
    if(r.getReadResult().toString().contains("T")){

    }

    }
    }
    System.out.println();
    }

    ObjectIdentifier mode = new ObjectIdentifier(ObjectType.analogValue, 11);

    ServiceFuture send = localDevice.send(remoteDevice, new WritePropertyRequest(mode, PropertyIdentifier.presentValue, null, new Real(2), null));
    System.out.println(send.getClass());
    System.out.println(send.get().getClass());

    } catch (ErrorAPDUException e) {
    System.out.println("Could not read value " + e.getApdu().getError() + " " + e);
    } catch (BACnetException e) {
    e.printStackTrace();
    }

    }
    }).start();
    }

    @Override
    public void iHaveReceived(RemoteDevice device, RemoteObject object) {
    System.out.println("Value reported " + device + " " + object);
    }
    });

    localDevice.initialize();
    localDevice.sendGlobalBroadcast(new WhoIsRequest());
    Thread.sleep(60000);

    List<RemoteDevice> remoteDevices = localDevice.getRemoteDevices();
    for (RemoteDevice device : remoteDevices) {
    System.out.println("Remote dev " + device);
    }

    System.in.read();
    localDevice.terminate();
    }

    }