这将只检索模拟值......如果它是你想要的。但更全局的方法是使用该BAC0.device
方法。
您将需要设备的 BACnet ID 来定义它:
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