Я занимаюсь разработкой на python 3.13 в Windows.
У меня 2 компьютера:
На первом я хочу запустить файл .py для имитации нескольких устройств BACnet на моем компьютере. IP-адрес: 192.168.1.54/24, порт = BAC0 (47808)
На втором, в той же подсети, я хочу визуализировать свои устройства, подключившись к YABE (еще один BACnet Explorer) со следующей конфигурацией: «BACnet/IP V4 и V6 через Udp» port = BAC0 и Local endpoint = 192.168.1.38
До сих пор мне удавалось создать 1 устройство с 2 переменными по умолчанию, используя BAC0.lite (BAC0==2025.9.15):
(xml_3_13) PS C:\Users\POTIEAL\Documents\RetD\m2524238-convertisseur_xml_danfoss> python .\test_bacnet_BAC0_eng.py
🚀 Starting BACnet device with objects...
2026-03-27 17:05:07,682 - INFO | Starting Asynchronous BAC0 version 2025.09.15 (Lite)
2026-03-27 17:05:07,682 - INFO | Using bacpypes3 version 0.0.106
2026-03-27 17:05:07,682 - INFO | Use BAC0.log_level to adjust verbosity of the app.
2026-03-27 17:05:07,682 - INFO | Ex. BAC0.log_level('silence') or BAC0.log_level('error')
2026-03-27 17:05:07,762 - INFO | Using ip : 192.168.1.54/24 on port 47808 | broadcast : 192.168.1.255
2026-03-27 17:05:08,394 - INFO | Using default JSON configuration file
2026-03-27 17:05:08,400 - INFO | Registered as BACnet/IP App | mode normal
2026-03-27 17:05:08,401 - INFO | Device instance (id) : 1234
✅ BACnet device with objects created!
Device ID: 1234
Address: 192.168.2.110/24
Created objects:
- Room_Temperature: 22.5 °C
- Room_Pressure: 1013.25 Pa
🔍 Scan with YABE to see objects
2026-03-27 17:05:08,402 - INFO | Installing recurring task Ping Registered Devices Task (id:2480079317248)
2026-03-27 17:05:08,405 - INFO | Installing recurring task Cleanup Tasks List (id:2480079430160)
Вид YABE моего устройства 1234
Но когда я попытался создать другое устройство:
с помощью BAC0 и пытаясь установить другой экземпляр BAC0.lite, я получил: BAC0.core.io.IOExceptions.InitializationError: предоставленный IP-адрес (192.168.49.110) недействителен. Проверьте, не использует ли другое программное обеспечение порт 47808 на этом сетевом интерфейсе. Если да, вы можете определить несколько IP-адресов для каждого интерфейса. Или укажите другой IP с помощью BAC0.lite(ip='IP/mask')
Я также пробовал напрямую работать с bacpypes3 вместо BAC0 с такими объектами, как:
raise ConfigurationError("unbound server")
bacpypes3.comm.ConfigurationError: unbound server
при получении whois() со 2-го компьютера..
Как просто объявить отдельные устройства на основе их идентификатора (или имени) на одном и том же ip:port, чтобы видеть все объекты BACnet с одним соединением на YABE моего 2-го компьютера?>
Я занимаюсь разработкой на [b]python 3.13 в Windows[/b]. У меня 2 компьютера: [list] [*]На первом я хочу запустить файл .py для имитации нескольких устройств [b]BACnet[/b] на моем компьютере. IP-адрес: 192.168.1.54/24, порт = BAC0 (47808)
[*]На втором, в той же подсети, я хочу визуализировать свои устройства, подключившись к [b]YABE[/b] (еще один BACnet Explorer) со следующей конфигурацией: «BACnet/IP V4 и V6 через Udp» port = BAC0 и Local endpoint = 192.168.1.38
[/list] До сих пор мне удавалось создать 1 устройство с 2 переменными по умолчанию, используя [b]BAC0[/b].lite (BAC0==2025.9.15): [code]#!/usr/bin/env python3 """ BACnet device with custom objects - Fixed version => Mahé can see my 2 variables on his PC using YABE! """
import asyncio from BAC0 import lite from bacpypes3.local.analog import AnalogValueObject, AnalogInputObject from bacpypes3.primitivedata import Real, ObjectIdentifier from bacpypes3.basetypes import EngineeringUnits
async def main(): try: print("🚀 Starting BACnet device with objects...")
print("✅ BACnet device with objects created!") print(" Device ID: 1234") print(" Address: 192.168.2.110/24") print(" Created objects:") print(f" - {temp_sensor.objectName}: {temp_sensor.presentValue} °C") print(f" - {pressure_sensor.objectName}: {pressure_sensor.presentValue} Pa") print("\n🔍 Scan with YABE to see objects")
# Keep running await asyncio.Future()
except KeyboardInterrupt: print("\n🛑 Stopped") except Exception as e: print(f"❌ Error: {e}") finally: if 'bacnet_device' in locals(): await bacnet_device.disconnect()
if __name__ == "__main__": asyncio.run(main()) [/code] Во время выполнения: [code](xml_3_13) PS C:\Users\POTIEAL\Documents\RetD\m2524238-convertisseur_xml_danfoss> python .\test_bacnet_BAC0_eng.py 🚀 Starting BACnet device with objects... 2026-03-27 17:05:07,682 - INFO | Starting Asynchronous BAC0 version 2025.09.15 (Lite) 2026-03-27 17:05:07,682 - INFO | Using bacpypes3 version 0.0.106 2026-03-27 17:05:07,682 - INFO | Use BAC0.log_level to adjust verbosity of the app. 2026-03-27 17:05:07,682 - INFO | Ex. BAC0.log_level('silence') or BAC0.log_level('error') 2026-03-27 17:05:07,762 - INFO | Using ip : 192.168.1.54/24 on port 47808 | broadcast : 192.168.1.255 2026-03-27 17:05:08,394 - INFO | Using default JSON configuration file 2026-03-27 17:05:08,400 - INFO | Registered as BACnet/IP App | mode normal 2026-03-27 17:05:08,401 - INFO | Device instance (id) : 1234 ✅ BACnet device with objects created! Device ID: 1234 Address: 192.168.2.110/24 Created objects: - Room_Temperature: 22.5 °C - Room_Pressure: 1013.25 Pa
🔍 Scan with YABE to see objects 2026-03-27 17:05:08,402 - INFO | Installing recurring task Ping Registered Devices Task (id:2480079317248) 2026-03-27 17:05:08,405 - INFO | Installing recurring task Cleanup Tasks List (id:2480079430160) [/code] Вид YABE моего устройства 1234 Но когда я попытался создать другое устройство: [list] [*]с помощью BAC0 и пытаясь установить другой экземпляр BAC0.lite, я получил: BAC0.core.io.IOExceptions.InitializationError: предоставленный IP-адрес (192.168.49.110) недействителен. Проверьте, не использует ли другое программное обеспечение порт 47808 на этом сетевом интерфейсе. Если да, вы можете определить несколько IP-адресов для каждого интерфейса. Или укажите другой IP с помощью BAC0.lite(ip='IP/mask')
[*]Я также пробовал напрямую работать с bacpypes3 вместо BAC0 с такими объектами, как: [code]from bacpypes3.vlan import Network as VirtualNetwork, Node as VirtualNode [/code] Однако я был ошеломлен, поскольку попробовал дюжину вариантов и получил такие ошибки, как: [code] File "C:\Users\POTIEAL\Documents\RetD\m2524238-convertisseur_xml_danfoss\venv\xml_3_13\Lib\site-packages\bacpypes3\netservice.py", line 576, in bind raise RuntimeError("already bound: %r" % (net,)) [/code] при исполнении или [code] raise ConfigurationError("unbound server")
bacpypes3.comm.ConfigurationError: unbound server [/code] при получении whois() со 2-го компьютера..
[/list] Как просто объявить отдельные устройства на основе их идентификатора (или имени) на одном и том же ip:port, чтобы видеть все объекты BACnet с одним соединением на YABE моего 2-го компьютера?>