BACnet Support

Could you make it an issue on the GitHub page? It’ll be easier to keep everything central over there.

Where can I download the program like in your screenshot?

Hey I got to the same point as in your screen shot. I am stuck at this point??? I just want to control/switch a bacnet point from my dash board.

Did you get it to integrate from a dashboard in the end?

You have to install the custom integration located here:

Hi GravySeal,

Just found today your awesome project and can connect my old PXC64 to HA. Thank you for your work! I used a nodered addon for it, which was a little complicated.

I have got 2 questions.

  1. It only starts, when I stop the whole Nodered addon, maybe there is an ngnix problem. It is not enough to disable the Bacnet node. Is there a workaround or I have to move the nodered to a virtual machine?
  2. I can switch on and off any binary output with prio 8. But the output remains in manual mode. Is it possible to send a release or auto command for it?

Hey Zoltan,

Glad it’s working for you!
For your questions, I can answer them:

  1. I think this issue might be related to the ports I’m opening for the add-on. Currently the add-on is using ports 80 and 47808, and since it’s in Host mode, it might clash with other add-ons. I want to change this in the future to be able to make it all user configurable so this issue won’t persist.

  2. Currently, there’s not really a way to release them yet. I missed this when I started working on apiv2, but in a next update I can make it so that presentValue is optional. This will make it so an empty write request can be done, which translates to a release. When this is implemented, it might be possible to make a Home Assistant service for the integration that can be called to release manual write requests.

1 Like

Where is my screenshot?

Hi @aphilgr1

I going down the same rabbit hole as you did. 2 things?

  1. Do you get instant changes on your sensor data from the BACnet device? Mine seems to be delayed by about 60 seconds.
  2. Did you manage to get the write node to work?

Hi Luuk,

This thing getting bettter and better! Now it is working together with the nodered addon, and you do not have to enable every single datapoint by hand.

But there is a problem after the last thursday update (development version).
Now the binary outputs cannnot be switched via HA:
Before you try to switch:
Képernyőkép ekkor: 2024-02-05 16-16-04

After you try to switch, the icons change:
Képernyőkép ekkor: 2024-02-05 16-28-37

But the output remains off, and there is log:
image

I almost forgot one more thing. When I try to release an analog output, the HA don’t let me write an empty value.

image

Hey Zoltan,

Thank you for the feedback!
I’ll push an update for the integration that addresses binary issue.
As for the service, the number service can’t be used to send an empty value.
To write an empty value with a specific priority, you can use the bacnet_interface.write_release service.

Some sterling work by the community. What I can’t see is why this isn’t a home assistant staple function. BACnet is the standard protocol for the commercial space. Nearly all IO modules support this protocol if you need to get some sensors into your system. I want to use some ISMA io modules with BACnet for the change of value benefits. So I’m not clogging up the network with requests when there’s no change.

Yes, this should be a built-in integration. BACnet is a must-have in the commercial world, mostly in access control systems, and the glue protocol to integrate devices from dissimilar platforms.

Such great work. This should be standard on HA.I am using this for my home automation. I work with building management systems so am pretty familiar with Bacnet and have access to many different controllers. Still fairly new to HA but so far really enjoying it for home use after using Tridium Niagara which is just for commercial use.

Hello, I also have a Siemens PXC controller that I would like to read out via NodeRed. I tried desperately to configure the nodes. Could you provide me with example nodes?
Thank you very much

Hi,
I am currently using the following addon with their integration:

I’ve had it working since May with absolutely no issues. I’ve modified couple bits to suit my Siemens software, but otherwise it’s “Plug&Play” with this addon and integration.

If you require any further help, just give me a shout or post on their github - these guys are super helpful!

Having Trouble with entities- was working but perhaps an update has broken entity. As soon as I add “sensor” “number” or “switch” the bacnet service crashes???


-----------------------------------------------------------
 Add-on: Bepacom BACnet/IP Interface
 Bepacom BACnet/IP interface for the Bepacom EcoPanel. Allows BACnet/IP devices to be available to Home Assistant through an API.
-----------------------------------------------------------
 Add-on version: 1.3.3
 You are running the latest version of this add-on.
 System: Home Assistant OS 12.0  (aarch64 / green)
 Home Assistant Core: 2024.2.4
 Home Assistant Supervisor: 2024.02.1
-----------------------------------------------------------
 Please, share the above information when looking for help
 or support in, e.g., GitHub, forums or the Discord chat.
-----------------------------------------------------------


           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/asyncio/base_events.py", line 685, in run_until_complete
    return future.result()
           ^^^^^^^^^^^^^^^
  File "/usr/bin/main.py", line 315, in main
    object_manager = ObjectManager(
                     ^^^^^^^^^^^^^^
  File "/usr/bin/BACnetIOHandler.py", line 911, in __init__
    self.add_object(object_type="binaryValue", index=index, entity=data)
  File "/usr/bin/BACnetIOHandler.py", line 1101, in add_object
    friendly_name = entity["attributes"].get("friendly_name")
                    ~~~~~~^^^^^^^^^^^^^^
TypeError: 'bool' object is not subscriptable

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.12/asyncio/events.py", line 88, in _run
    self._context.run(self._callback, *self._args)
  File "/usr/local/lib/python3.12/site-packages/bacpypes3/ipv4/__init__.py", line 155, in set_local_transport_protocol
    transport, protocol = task.result()
                          ^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/asyncio/base_events.py", line 1438, in create_datagram_endpoint
    await waiter
asyncio.exceptions.CancelledError
ERROR:    An uncaught error occurred: 
Traceback (most recent call last):
  File "/usr/local/lib/python3.12/asyncio/runners.py", line 194, in run
    return runner.run(main)
           ^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/asyncio/runners.py", line 118, in run
    return self._loop.run_until_complete(task)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/asyncio/base_events.py", line 685, in run_until_complete
    return future.result()
           ^^^^^^^^^^^^^^^
  File "/usr/bin/main.py", line 315, in main
    object_manager = ObjectManager(
                     ^^^^^^^^^^^^^^
  File "/usr/bin/BACnetIOHandler.py", line 911, in __init__
    self.add_object(object_type="binaryValue", index=index, entity=data)
  File "/usr/bin/BACnetIOHandler.py", line 1101, in add_object
    friendly_name = entity["attributes"].get("friendly_name")
                    ~~~~~~^^^^^^^^^^^^^^
TypeError: 'bool' object is not subscriptable

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.12/asyncio/events.py", line 88, in _run
    self._context.run(self._callback, *self._args)
  File "/usr/local/lib/python3.12/site-packages/bacpypes3/ipv4/__init__.py", line 186, in set_broadcast_transport_protocol
    transport, protocol = task.result()
                          ^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/asyncio/base_events.py", line 1438, in create_datagram_endpoint
    await waiter
asyncio.exceptions.CancelledError
Traceback (most recent call last):
  File "/usr/bin/main.py", line 388, in <module>
    asyncio.run(main())
  File "/usr/local/lib/python3.12/asyncio/runners.py", line 194, in run
    return runner.run(main)
           ^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/asyncio/runners.py", line 118, in run
    return self._loop.run_until_complete(task)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/asyncio/base_events.py", line 685, in run_until_complete
    return future.result()
           ^^^^^^^^^^^^^^^
  File "/usr/bin/main.py", line 315, in main
    object_manager = ObjectManager(
                     ^^^^^^^^^^^^^^
  File "/usr/bin/BACnetIOHandler.py", line 911, in __init__
    self.add_object(object_type="binaryValue", index=index, entity=data)
  File "/usr/bin/BACnetIOHandler.py", line 1101, in add_object
    friendly_name = entity["attributes"].get("friendly_name")
                    ~~~~~~^^^^^^^^^^^^^^
TypeError: 'bool' object is not subscriptable
[12:23:10] INFO: Service BACnet Interface exited with code 1 (by signal 0)
s6-rc: info: service legacy-services: stopping
s6-rc: info: service legacy-services successfully stopped
s6-rc: info: service nginx: stopping
[12:23:10] INFO: Service NGINX exited with code 256 (by signal 15)
s6-rc: info: service nginx successfully stopped
s6-rc: info: service init-nginx: stopping
s6-rc: info: service interface: stopping
s6-rc: info: service init-nginx successfully stopped
s6-rc: info: service interface successfully stopped
s6-rc: info: service init-interface: stopping
s6-rc: info: service init-interface successfully stopped
s6-rc: info: service legacy-cont-init: stopping
s6-rc: info: service legacy-cont-init successfully stopped
s6-rc: info: service fix-attrs: stopping
s6-rc: info: service base-addon-log-level: stopping
s6-rc: info: service fix-attrs successfully stopped
s6-rc: info: service base-addon-log-level successfully stopped
s6-rc: info: service base-addon-banner: stopping
s6-rc: info: service base-addon-banner successfully stopped
s6-rc: info: service s6rc-oneshot-runner: stopping
s6-rc: info: service s6rc-oneshot-runner successfully stopped

https://hvac.io/docs/wacnet

I have used this for years with various controllers and home-assistant rest command templates. It is not the most resource effective solution but runs okay on a raspberry pi with HA. Make sure you limit its access to ram with the various commands available in java as it will hog memory.

Hello:
I am at the same point did you ever make progress or did you switch to node red

We’re using BACnet devices by Contemporary Controls.
Bepacom BACnet/IP Interface seems to be working.
The integration makes all the inputs / outputs accessible.

I’m looking to buy a Daikin D-BACS (DMS502B71) unit, that will then have access to the 10 units in my house.
Does the Bepacom addon support multiple ACs via the one BACnet interface?

@GravySeal

Basically the D-BACS is like a translation unit from the Daikin proprietary (F1F2) commercial bus network that connects to all AC and compressors, to a industry standard API