Skip to content

bbartling/easy-aso

Repository files navigation

Easy ASO

Discord CI MIT License Development Status Python PyPI

Easy-to-follow Automated Supervisory Optimization (ASO) event-driven logic combined with an asyncio-first supervisory layer for BACnet building automation — lightweight BAS orchestration at the IoT edge with one BACnet/IP core, small agents, optional REST/JSON-RPC, and room to grow without a full platform stack.


Install from PyPI

pip install easy-aso

ASO made easy

Subclass EasyASO and implement on_start, on_step, and on_stop — same pattern for reads, writes, and releasing overrides:

import asyncio

from easy_aso import EasyASO


class CustomHvacAso(EasyASO):
    async def on_start(self):
        print("Custom ASO is deploying! Let's do something!")

    async def on_step(self):
        # BACnet read request
        sensor = await self.bacnet_read("192.168.0.122", "analog-input,1")

        # Custom step logic - BACnet write request
        override_valve = sensor + 5.0
        await self.bacnet_write("192.168.0.122", "analog-output,2", override_valve)

        print("Executing step actions... The system is being optimized!")
        await asyncio.sleep(60)

    async def on_stop(self):
        # Custom stop logic - BACnet release request
        await self.bacnet_write("192.168.0.122", "analog-output,2", "null")
        print("Executing stop actions... The system is released back to normal!")

License

MIT — see LICENSE.

About

This is a framework for Automated Supervisory Optimization (ASO) with built-in BACnet methods.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages