1
0
mirror of https://github.com/JoelBender/bacpypes synced 2025-10-05 22:18:16 +08:00
bacpypes/samples/CommandableMixin.py
2019-11-17 14:57:47 -05:00

94 lines
2.4 KiB
Python

#!/usr/bin/env python
"""
Rebuilt Commandable
"""
from bacpypes.debugging import ModuleLogger
from bacpypes.consolelogging import ConfigArgumentParser
from bacpypes.core import run
from bacpypes.primitivedata import Date
from bacpypes.app import BIPSimpleApplication
from bacpypes.object import register_object_type
from bacpypes.local.device import (
LocalDeviceObject,
)
from bacpypes.local.object import (
AnalogValueCmdObject,
BinaryOutputCmdObject,
DateValueCmdObject,
)
# some debugging
_debug = 0
_log = ModuleLogger(globals())
# register the classes
register_object_type(LocalDeviceObject, vendor_id=999)
register_object_type(AnalogValueCmdObject, vendor_id=999)
register_object_type(BinaryOutputCmdObject, vendor_id=999)
register_object_type(DateValueCmdObject, vendor_id=999)
def main():
global this_application
# parse the command line arguments
args = ConfigArgumentParser(description=__doc__).parse_args()
if _debug:
_log.debug("initialization")
if _debug:
_log.debug(" - args: %r", args)
# make a device object
this_device = LocalDeviceObject(ini=args.ini)
if _debug:
_log.debug(" - this_device: %r", this_device)
# make a sample application
this_application = BIPSimpleApplication(this_device, args.ini.address)
# make a commandable analog value object, add to the device
avo1 = AnalogValueCmdObject(objectIdentifier=("analogValue", 1), objectName="avo1")
if _debug:
_log.debug(" - avo1: %r", avo1)
this_application.add_object(avo1)
# make a commandable binary output object, add to the device
boo1 = BinaryOutputCmdObject(
objectIdentifier=("binaryOutput", 1),
objectName="boo1",
presentValue="inactive",
relinquishDefault="inactive",
minimumOnTime=5, # let it warm up
minimumOffTime=10, # let it cool off
)
if _debug:
_log.debug(" - boo1: %r", boo1)
this_application.add_object(boo1)
# get the current date
today = Date().now()
# make a commandable date value object, add to the device
dvo1 = DateValueCmdObject(
objectIdentifier=("dateValue", 1), objectName="dvo1", presentValue=today.value
)
if _debug:
_log.debug(" - dvo1: %r", dvo1)
this_application.add_object(dvo1)
if _debug:
_log.debug("running")
run()
_log.debug("fini")
if __name__ == "__main__":
main()