Это приведет к получению только аналоговых значений... если это то, что вы хотите. Но более глобальным подходом было бы использование подхода BAC0.device
.
Вам понадобится идентификатор BACnet устройства, чтобы определить его:
import BAC0
bacnet = BAC0.lite()
deviceID = 1000 # example
dev = BAC0.device(‘10.1.1.9’, deviceID,bacnet,poll=30)
dev.points #will give you all points on which you can iterate if you want...
Это создаст устройство с именем «dev», на котором вы сможете взаимодействовать со многими свойствами. По умолчанию BAC0 будет определять AI, AV, AO, BI, BV, BO, MV, TrendLogs.
Вы также сможете получить информацию о точках или записать их, используя синтаксис квадратных скобок:
dev[“NameOfPoint”]
#Let’s pretend a point is named HTG-O
dev[“HTG-O”] = 100 #this will override the output
dev[“HTG-O”].value # will output the value to be used in some calculation
dev.properties #will give you more details on the point itself
Использование этого метода гарантирует, что ReadPropertyMultiple будет использоваться для чтения всех точек. Это означает гораздо меньше сетевых запросов (и большую скорость). Вы также получите единицы для каждой аналоговой точки... и текст состояния для каждой точки с несколькими состояниями... и описание, и т.д.
poll=30
скажет BAC0 читать все переменные каждые 30 секунд... так что вы можете выбрать то, что соответствует вашим потребностям. Использование 0 отключит опрос. По умолчанию 10.
Каждый раз, когда значение опрашивается, оно будет сохранено в истории точек, чтобы вы могли получить все значения, используя:
dev[“YourPoint”].history
# This will give you a Pandas series ready to be used
Если вы хотите взаимодействовать с устройством, имеющим много точек (> 1000), вы, вероятно, захотите отключить опрос, возможно, отключить сегментацию, если требуется... но лучше всего было бы создать собственный список объектов с переменными, которые вы хотеть. Больше не надо.
Подробнее см. здесь: https://bac0.readthedocs.io/en/latest/controller.html
person
Christian Tremblay
schedule
05.02.2019