Table of Contents
Wacnet
Wacnet is a BACnet explorer, webserver, and toolkit.
It works with all BACnet/IP networks and doesn't require any installation.
It is used by hundreds of professionals in the field.
Requirements
- Java 8
- BACnet/IP network
Running the Software
Wacnet can be started by double-clicking on the .jar file, or by using this command:
java -jar wacnet-standalone-<VERSION>.jar
Source
Wacnet is open source software under the GPLv3.
The source can be found at this link: https://github.com/Frozenlock/wacnet
Scripts
The REPL can be used to send custom commands on the network. Here are a few examples and custom scripts.
Check the bacure documentation to see the functions that are available to you.
Find devices
Send WhoIs broadcast for a single device at a time. Use this if you can't seem to get a response from every device on your network.
(defn find-devices "For the entire IDs range, send WhoIs broadcasts with a single device as a target. Useful to get an answer from particular devices when the network is congested." [start-id end-id] (let [ids (range start-id (inc end-id))] (doseq [id ids] (find-remote-device id) (Thread/sleep 200)))) ;; example to find devices 100 to 200 : (find-devices 100 200)
See the associated blog post.
Network Profiling / Devices Inventory
This script will export a text file of the following form:
| :vendor-name | :object-name | :model-name | :object-identifier | |--------------------------+-----------------------------------------+----------------------------------+--------------------| | ABB | DRIVE_U1_V_ALI | ACH550 | [:device 50401] | | ABB | DRIVE_U1_V_RET | ACH550 | [:device 50402] | | ABB | UV01_DRIVE_ALIM | ACH550 | [:device 110201] | | ABB | UV01_DRIVE_RET | ACH550 | [:device 110202] | | TELEMECANIQUE | ATV 61 | ATV61HD15Y | [:device 110004] | | TELEMECANIQUE | ATV 61 | ATV61HD15Y | [:device 110005] | | CARRIER | CHILLER | BACnet Local Equipment Interface | [:device 50300] | | Delta Controls | UV20 | DAC_1180 | [:device 10301] | | Delta Controls | AC25 | DAC_1180 | [:device 10401] | ... (about a hundred more)
(->> (pmap #(try (remote-object-properties % [:device %] [:model-name :object-name :vendor-name]) (catch Exception e)) (remote-devices)) (apply concat) ((fn [x] (with-out-str (print-table x)))) (spit "network-profile.txt"))