Awesome!
My google-fu failed me...
I always end up on the sourceforge repo. :oops:
Awesome!
My google-fu failed me...
I always end up on the sourceforge repo. :oops:
Is there any plan to use Github for bacnet4j?
Is there any plan to use Github for bacnet4j?
New version of Wacnet! (1.1.0)
As usual, completely free!
Detailed review of what changed:
http://blog.hvac.io/2014/07/01/new-wacnet-release-110/
Download link and instructions:
https://hvac.io/docs/wacnet
If you are on Windows, you could try adding another IP to your network card.
This way, you could have:
Device 1, 192.168.0.3:47808
Device 2, 192.168.0.4:47808
Playing with the ports if a little delicate, as some devices will only respond the port on which they are located.
When you say you see them 'chirping' and answering to your WhoIs, are they answering to a broadcast address your machine can receive?
For example, suppose your IP is 192.167.0.5 and your broadcast address is 192.255.255.255.
A device situated on 192.168.0.4 might receive it, but if they answer on 192.168.255.255, you will never get it.
I implemented it locally and it seems to work.
Here is the code:
public void removeRemoteDevice(int instanceId) throws BACnetException {
RemoteDevice d = getRemoteDeviceImpl(instanceId, null, null);
if (d != null)
remoteDevices.remove(d);
else
throw new BACnetException("Unknown device: instance id=" + instanceId);
}
As it is, it seems the only way to remove a remote device from the local device list is to reset the local device.
This means that if a remote device is removed form the network, or if it crashes and no longer answers any queries,
we have to go through the whole process of terminating the local device, only to prop it up again immediately after.
Would it be possible to provide a removeDevice method for the local device?
This way we could manually remove any remote device which isn't answering and keep a 'clean' list of remote devices.
Thanks!
As it is, it seems the only way to remove a remote device from the local device list is to reset the local device.
This means that if a remote device is removed form the network, or if it crashes and no longer answers any queries,
we have to go through the whole process of terminating the local device, only to prop it up again immediately after.
Would it be possible to provide a removeDevice method for the local device?
This way we could manually remove any remote device which isn't answering and keep a 'clean' list of remote devices.
Thanks!
Glad to hear you don't expose your BACnet port!
I'm a little rusty on the discovery process.
When answering a WhoIs, isn't the gateway supposed to send you the list of devices it knows about?
As a patch, perhaps you could 'scan' for these devices every once in a while to make sure you have all of them.
Say all device from ID 0 to 99 (or whatever is their ID range).
Perhaps you could send the WhoIs directly to the device instead of using a broadcast?
On a semi-related note, you are communicating with a remote device behind a firewall...
Does it mean you exposed the port 47808 to the Internet? :shock:
Nope! Everything is fine!
You can delete this thread... :mrgreen:
Well, I just realized there was a version 1.3 now...
I'll check if there is a similar problem.
Oops, it seems to only be a problem for version 1.2.5.
I suppose the bug was introduced in the somewhat major changes in the local device code.
Tested with both 1.2.4 and 1.2.5.
An initialized bacnet4J device will easily handle the PropertyIdentifier.all for all of its objects, except for the 'device' object.
A little Wireshark exploration shows that a readPropertyRequest sent for the device object, with PropertyIdentifier.all, will receive as a response an error 'unknown property'.
Tested with both 1.2.4 and 1.2.5.
An initialized bacnet4J device will easily handle the PropertyIdentifier.all for all of its objects, except for the 'device' object.
A little Wireshark exploration shows that a readPropertyRequest sent for the device object, with PropertyIdentifier.all, will receive as a response an error 'unknown property'.
I wanted to upgrade my BACnet4J.jar file and noticed on the
CVS repo that there's some commit for the BACnet4J 2.0. (With sweet sweet MS/TP support)
If it is, may I inquire on what might be causing this error when trying to build?
error: cannot find symbol
[javac] import gnu.io.SerialPort;
[javac] ^
[javac] symbol: class SerialPort
[javac] location: package gnu.io
I've double checked and RXTXcomm.jar is indeed in the lib-opt directory.
Thank you very much in advance!
I wanted to upgrade my BACnet4J.jar file and noticed on the
CVS repo that there's some commit for the BACnet4J 2.0. (With sweet sweet MS/TP support)
If it is, may I inquire on what might be causing this error when trying to build?
error: cannot find symbol
[javac] import gnu.io.SerialPort;
[javac] ^
[javac] symbol: class SerialPort
[javac] location: package gnu.io
I've double checked and RXTXcomm.jar is indeed in the lib-opt directory.
Thank you very much in advance!
Hello gentlemen,
I just wanted to announce that I've made a BACnet webserver using the awesome BACnet4J library.
(Consequently, it's entirely open source!) :mrgreen:
Here is a quick presentation on how to run and use it:
[youtube]http://www.youtube.com/watch?v=oVlNwsU8CIw[/youtube]
However, I did not write it in java... I wrote it in Clojure!
The advantages are shown in the REPL page, where you can define and use commands on-the-fly.
I might end up rewriting some parts in Clojure (such as the [url=https://github.com/Frozenlock/bacure/blob/master/src/bacure/read_properties.clj]read-properties functions),
but for now it's overwhelmingly BACnet4J :wink:
The source is here: https://github.com/Frozenlock/wacnet
And the compiled version: https://hvac.io/docs/wacnet
Cheers!
Hello gentlemen,
I just wanted to announce that I've made a BACnet webserver using the awesome BACnet4J library.
(Consequently, it's entirely open source!) :mrgreen:
Here is a quick presentation on how to run and use it:
[youtube]http://www.youtube.com/watch?v=oVlNwsU8CIw[/youtube]
However, I did not write it in java... I wrote it in Clojure!
The advantages are shown in the REPL page, where you can define and use commands on-the-fly.
I might end up rewriting some parts in Clojure (such as the [url=https://github.com/Frozenlock/bacure/blob/master/src/bacure/read_properties.clj]read-properties functions),
but for now it's overwhelmingly BACnet4J :wink:
The source is here: https://github.com/Frozenlock/wacnet
And the compiled version: https://hvac.io/docs/wacnet
Cheers!