Replies: 11 comments 7 replies
-
@acedrew Are the categories ordered according to priority? In other words, should dev time focus on Standards Compliance, followed by Tech Robustness, etc? |
Beta Was this translation helpful? Give feedback.
-
That feels like questions for above my pay grade/perhaps too early to
prioritize, hopefully other folks can contribute from their experience and
perspective as well before we try to rank them.
…On Wed, Mar 16, 2022 at 1:53 PM Mark Bonicillo ***@***.***> wrote:
@acedrew <https://github.com/acedrew> Are the categories ordered
according to priority? In other words, should dev time focus on Standards
Compliance, followed by Tech Robustness, etc?
—
Reply to this email directly, view it on GitHub
<#2925 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AAHOUBYIQW7AWVUOKGK3XI3VAINYDANCNFSM5QZD64XQ>
.
You are receiving this because you were mentioned.Message ID:
***@***.***>
|
Beta Was this translation helpful? Give feedback.
-
(running into some formatting issues, I cant seem to update below, sorry for this) Just throwing this out there as I assume there is no easy button, but if there were could we just use BAC0? Christrian Trembley seems to keep his BAC0 app up with whatever version Joel Bender is producing in BACpypes. It seems like BAC0 is just a BACpypes wrapper and someone already is updating it quite nicely : ) BACnet global for
I've been playing around with an app where all the person does is feed an f string some data to perform BACnet read, writes, releases. Like this:
Could we ever just easy button BAC0 into VOLTTRON where the BAC0 author keeps updating his app for whatever is happening in BACpypes? (like BACnet secure, etc..) I dont understand all that goes into g event or asyncio but I haven't had the need to perform anything more than a BACnet read, release, or write in my experience as a field technician for building automation. Some concept idea:
I know BAC0 is synchronous code, so maybe a bad idea? But the code above with the BACnet worker function works in a asnycio hobby project where I can call the synchronous BAC0 function with I'd love to be involved with these efforts but I get lost real fast under the hood in BACpypes. |
Beta Was this translation helpful? Give feedback.
-
Hi, Just want to reiterate the problem I'm seeing with the Yabe and Chipkin device simulators. Basically, regardless of whether they receive a message on the unicast subnet address (ex. 192.162.7.1) , broadcast subnet address (ex. 192.162.7.255), or all points broadcast address (255.255.255.255), they respond on the all points broadcast address. The ASHRE 2020 spec does not specify on which address a response should be made; in particular, it does not specify that the unicast address should be favored to avoid excessive broadcast. I don't know if this is a concern for actual devices as opposed to simulators, but given that the behavior is spec complaint it might be. Chipkin, for example, sells a BACnet stack for embedded use. So it might be helpful if the BACnet proxy could have an option to listen on multiple addresses in case a device responded on a different address than the unicast address. Thanx.
|
Beta Was this translation helpful? Give feedback.
-
In the area of feature improvement, may I suggest simplifying the split between the BACnet Proxy agent and the BACnet driver? If I understand the BACnet driver correctly, from the documentation, it needs to have the IP address of a BACnet device (not the BACnet Proxy agent but one actual device, the documenation is not clear what to do if you have more than one device). And there needs to be a BACnet proxy agent per UDP port on which Volttron is expecting BACnet traffic, with the IP address of the local Volttron platform (VCP agent). Why not instead have the BACnet driver take a list of IP addresses and UDP ports for BACnet/IP devices, paired naturally with schema for the objects and object properties, in JSON rather than CSV (to simplify configuration file formats)? My inspiration here is the Thingsboard Gateway, an open source Python gateway with drivers for many different device protocols that is part of the Thingsboard IoT framework. If the BACnet devices happen to be on an MS/TP network, then the device type will be a BACnet router which will route from the MS/TP network to Volttron on the IP network. With the current architecture, it is unclear why the split is needed. Thanx. |
Beta Was this translation helpful? Give feedback.
-
FYI, I am currently tracking and scoping improvements to all things BACnet in Volttron (e.g. BACnet proxy agent, BACnet driver, BACnet scripts). https://github.com/orgs/VOLTTRON/projects/6/views/12 |
Beta Was this translation helpful? Give feedback.
-
@Jak42 can you clarify what device you're referring to? The For your other point, the BACnet Proxy should listen for broadcast traffic, this can be verified by running Your note about MS/TP doesn't really make sense, as the BACnet internetworking handles resolving devices, regardless of what network segment they might be on, provided they're routable. |
Beta Was this translation helpful? Give feedback.
-
Can python
prints Would we need a proxy at all if we can just make a read, write, release script to call from subprocess? |
Beta Was this translation helpful? Give feedback.
-
Ben,
My understanding from the discussion with Robert a few weeks ago is that
the proxy is needed in case some of the BACnet/IP devices use ports other
than the default 47808. But it seems that a Python thread in the Platform
Driver agent could be used if some of the devices don't use the default
port, with a separate thread for a BACnet driver on each port. Of course,
this would require that the nondefault ports be included in the Platform
Driver agent configuration file, but that would be required in the current
case for the BACnet Proxy agent anyway. The Thingsboard Gateway uses this
architecture (here's a link
<https://github.com/thingsboard/thingsboard-gateway> to the github repo).
Having a BACnet proxy for each BACnet device is kind of awkward, since it
makes configuration of a lean system difficult.
However, getting rid of the BACnet Proxy agent won't get rid of the need to
preconfigure the Platform Driver agent's BACnet driver with the points and
properties it needs to monitor, since as we also discussed, currently
Volttron has no building metadata API for filtering the points to only
those the particular deployment wants to monitor.
Thanx.
jak
…On Sat, May 28, 2022 at 8:10 AM Ben Bartling ***@***.***> wrote:
Can python subprocess ever be used in VOLTTRON for BACnet? I can read and
write BACnet points using the sample scripts in the BACpypes repo. For
example with the ReadProperty.py
<https://github.com/JoelBender/bacpypes/blob/master/samples/ReadProperty.py>
in the BACpypes repo I can call it with another script and pass in my
BACnet device/point address:
import subprocess
read = "echo 'read 12345:2 analogInput:2 presentValue' | python ReadProperty.py"
sensor_reading = subprocess.check_output(read, shell=True)
print("sensor reading is: ", float(sensor_reading))
prints sensor reading is: 66.06999206542969
Would we need a proxy at all if we can just make a read, write, release
script to call from subprocess?
—
Reply to this email directly, view it on GitHub
<#2925 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/ADE62GQ2AQU7CHRLCMZI643VMIZOLANCNFSM5QZD64XQ>
.
You are receiving this because you were mentioned.Message ID:
***@***.***>
|
Beta Was this translation helpful? Give feedback.
-
One thing that is sort of cool is Joel Bender has another repo for BACnet called BACpypes snapshot: I think this is similar for when using VOLTTRON initially on a BACnet system someone needs to scan the network inside the building with the VOLTTRON bacnet scanning scripts where the effort is to create all the CSV files for the platform.driver. This process is daunting and I hope the setup process for BACnet can also be improved. When using BACpypes snapshot, running In current volttron processes I think this would be similar to running this below to generate the config files: In BACpypes-snapshot, I can replay this scanning process of my test bench device: Why not fork BACpypes-snapshot to replace the current scanning scripts? This process of using the BACpypes console seems way easier than running scanning scripts... |
Beta Was this translation helpful? Give feedback.
-
Yes, you can either send a message over the MQTT bus or use a HTTP REST
from the Thingboard Web UI, see here
<https://thingsboard.io/docs/iot-gateway/config/bacnet/>for BACnet gateway
configuration.
jak
…On Mon, May 30, 2022 at 6:30 AM Ben Bartling ***@***.***> wrote:
Hey Jak, does thingsboard support writing the BACnet device? For example
could you create some sort of algorithm on thingsboard that will write to
the BACnet system? Or is it only for retrieving data?
—
Reply to this email directly, view it on GitHub
<#2925 (reply in thread)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/ADE62GXUB4CSCQLFU7SEZ5DVMS7G7ANCNFSM5QZD64XQ>
.
You are receiving this because you were mentioned.Message ID:
***@***.***>
|
Beta Was this translation helpful? Give feedback.
-
Introduction
Based on conversations with the PNNL team, I've started this discussion to document improvements and issues with the BACnet proxy that could be resolved during the process of updating the upstream BACPypes Library. Please feel free to add additional observations or issues here.
Scope:
The BACnet proxy has not had significant improvements in several years, and there are some fundamental issues to address.
I'll try to categorize them as Standards Compliance, Technology Robustness, and Feature Improvements.
Standards Compliance
Technology Robustness
Feature Improvements
Beta Was this translation helpful? Give feedback.
All reactions