Commit 883d958b authored by vertighel's avatar vertighel
Browse files

Sequencer, now with working stream

parent f3e09937
Loading
Loading
Loading
Loading
Loading
+6 −3
Original line number Diff line number Diff line
@@ -18,7 +18,7 @@ from noctua.api.basecontext import ends, resource_registry, config_path
from noctua.utils.logger import log
from .blocks import blocks_api
from .defaults import defaults_api
from .sequencer import sequencer_api
from .sequencer import sequencer_api, BobRun

api_blueprint = Blueprint('api', __name__)

@@ -30,13 +30,16 @@ api_blueprint.register_blueprint(sequencer_api, url_prefix='/sequencer')
# # Uncomment to test dependecy errors
# resource_registry = {}

resource_registry['/sequencer/run'] = BobRun(seq)


def dynamic_import(url_path):
    """
    Import and register resources from api.ini with debug logging of supported methods.
    """
    
    try:
        if url_path.startswith(("/blocks", "/sequencer")):
        if url_path.startswith(("/blocks", "/templates", "/sequencer")):
            return

        dev = getattr(devices, ends.get(url_path,"device"))             # devices.light instance
@@ -64,5 +67,5 @@ def dynamic_import(url_path):
        
# Load all routes from ini
for section in ends.sections():
    if not section.startswith(("/blocks", "/sequencer")):
    if not section.startswith(("/blocks", "/templates", "/sequencer")):
        dynamic_import(section)
+0 −1
Original line number Diff line number Diff line
@@ -102,4 +102,3 @@ class BobRun(BaseResource):

# --- ROUTING RULES ---
sequencer_api.add_url_rule('/run', view_func=BobRun.as_view('bob_run', dev=seq))
+5 −1
Original line number Diff line number Diff line
@@ -64,14 +64,18 @@ async def start_background_tasks():
        
    # subsystems
    subsystems = set()
    subsystems.add("sequencer")
    for section in ends.sections():
        parts = section.strip('/').split('/')
        if parts:
            subsystems.add(parts[0])

    print("---")
    for subsys in subsystems:
        if subsys not in ("blocks", "sequencer", "templates"):
        if subsys not in ("blocks", "templates"):
            asyncio.create_task(streamer.subsystem_poll_loop(subsys))
            print(subsys)
    print("---")


@web_blueprint.websocket('/socket')
+3 −0
Original line number Diff line number Diff line
@@ -6,6 +6,9 @@ document.addEventListener('DOMContentLoaded', () => {

    document.addEventListener('noctua-telemetry', (event) => {
        const msg = event.detail;

        console.log(msg)

        if (!msg || !msg.name.startsWith('all-')) return;

        const subsystem = msg.name.replace('all-', '');
+6 −3
Original line number Diff line number Diff line
@@ -166,7 +166,7 @@ class StreamManager:
        subsystem : str
            The subsystem name (e.g. ``'camera'``, ``'dome'``).
        """
        
        log.debug(subsystem)
        while True:
            subsys_data = {}

@@ -177,7 +177,7 @@ class StreamManager:
                if not hasattr(instance, "get"):
                    continue

                # Salta le risorse immagine per non bloccare la telemetria json
                # Avoid images
                if "snapshot" in path:
                    continue

@@ -190,9 +190,12 @@ class StreamManager:
                    data = res[0] if isinstance(res, tuple) else res
                    device_name = path.split('/')[-1]
                    subsys_data[device_name] = data
                                        
                except Exception as e:
                    pass
                
                

            if subsys_data and self.last_states.get(subsystem) != subsys_data:
                await self.broadcaster.broadcast(f"all-{subsystem}", subsys_data)
                self.last_states[subsystem] = subsys_data