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

Radix IoT Website Mango 3 Documentation Website Mango 4 Documentation Website

Timeout error when call getExtendedDeviceInformation

  • Hi,

    I'm having problem with discovery devices when using method 'getExtendedDeviceInformation'. The application stops and after some time I got a timeout error.
    To test the BACnet I use VTS application. The VTS respond 4 times but it looks like the BACnet4j doesn't see the responses.

    Also the VTS can see 'Iam' message so it's not a communication issue.

        public static void main(String[] args) throws Exception {
             LocalDevice localDevice = new LocalDevice(12, "");         
            localDevice.getEventHandler().addListener(new Listener());
            localDevice.sendBroadcast(47808, new WhoIsRequest());
            // Wait a bit for responses to come in.
            // Get extended information for all remote devices.
            for (RemoteDevice d : localDevice.getRemoteDevices()) {            
                List<ObjectIdentifier> oids = ((SequenceOf<ObjectIdentifier>) localDevice.sendReadPropertyAllowNull(d, d
                        .getObjectIdentifier(), PropertyIdentifier.objectList)).getValues();
                PropertyReferences refs = new PropertyReferences();
                for (ObjectIdentifier oid : oids)
                    addPropertyReferences(refs, oid);
                PropertyValues pvs = localDevice.readProperties(d, refs);
        private static void addPropertyReferences(PropertyReferences refs, ObjectIdentifier oid) {
            refs.add(oid, PropertyIdentifier.objectName);
            ObjectType type = oid.getObjectType();
            if (ObjectType.accumulator.equals(type)) {
                refs.add(oid, PropertyIdentifier.units);
            else if (ObjectType.analogInput.equals(type) || ObjectType.analogOutput.equals(type)
                    || ObjectType.analogValue.equals(type) || ObjectType.pulseConverter.equals(type)) {
                refs.add(oid, PropertyIdentifier.units);
            else if (ObjectType.binaryInput.equals(type) || ObjectType.binaryOutput.equals(type)
                    || ObjectType.binaryValue.equals(type)) {
                refs.add(oid, PropertyIdentifier.inactiveText);
                refs.add(oid, PropertyIdentifier.activeText);
            else if (ObjectType.lifeSafetyPoint.equals(type)) {
                refs.add(oid, PropertyIdentifier.units);
            else if (ObjectType.loop.equals(type)) {
                refs.add(oid, PropertyIdentifier.outputUnits);
            else if (ObjectType.multiStateInput.equals(type) || ObjectType.multiStateOutput.equals(type)
                    || ObjectType.multiStateValue.equals(type)) {
                refs.add(oid, PropertyIdentifier.stateText);
            refs.add(oid, PropertyIdentifier.presentValue);
        static class Listener extends DefaultDeviceEventListener {
            public void iAmReceived(RemoteDevice d) {
                System.out.println("IAm received" + d);

  • Can you get a trace of the request and response, i.e. the byte streams?