From 86fe2bfbdb6c64bf6c61db041bdb2f8eebe3f2e3 Mon Sep 17 00:00:00 2001 From: Joseph Kenny Date: Sat, 14 Mar 2026 15:44:36 -0400 Subject: [PATCH 1/4] Implement base level streaming in the RealtimeDatabase Class This adds the base level of streaming to the Realtime Database class and enables it to stream changes at a realtime database path. --- .../realtime_database/realtime_database.py | 85 ++++++++++++++++++- 1 file changed, 84 insertions(+), 1 deletion(-) diff --git a/src/compas_xr/realtime_database/realtime_database.py b/src/compas_xr/realtime_database/realtime_database.py index 2319ba30..8d54daaa 100644 --- a/src/compas_xr/realtime_database/realtime_database.py +++ b/src/compas_xr/realtime_database/realtime_database.py @@ -1,5 +1,6 @@ import json import os +import uuid from typing import Any from typing import Callable @@ -36,6 +37,7 @@ class RealtimeDatabase: def __init__(self, config_path: str): self.config_path = config_path + self._active_streams = {} self._ensure_database() def _ensure_database(self) -> None: @@ -119,8 +121,71 @@ def get_data_from_reference(self, database_reference: pyrebase.pyrebase.Database data_dict = dict(data) return data_dict + @staticmethod + def normalize_stream_message(message: Any) -> dict: + """Normalize a Firebase stream message to a predictable payload. + + Parameters + ---------- + message : Any + Raw stream message from pyrebase. + + Returns + ------- + dict + Dictionary with keys: ``event``, ``path``, ``data``, ``message``. + + """ + if isinstance(message, dict): + return { + "event": message.get("event"), + "path": message.get("path"), + "data": message.get("data"), + "message": message, + } + + return { + "event": getattr(message, "event", None), + "path": getattr(message, "path", None), + "data": getattr(message, "data", None), + "message": message, + } + + @staticmethod + def default_stream_callback(message: dict) -> None: + """Default callback for quickly inspecting stream events.""" + print("Event: {}".format(message.get("event"))) + print("Path: {}".format(message.get("path"))) + print("Data: {}".format(message.get("data"))) + print("Message: {}".format(message.get("message"))) + print("-" * 40) + def stream_data_from_reference(self, callback: Callable, database_reference: pyrebase.pyrebase.Database) -> Any: - raise NotImplementedError("Function Under Developement") + """Stream data from a previously constructed database reference. + + Parameters + ---------- + callback : callable + Callable that accepts one normalized message dictionary. + database_reference : pyrebase.pyrebase.Database + Database reference to stream from. + + Returns + ------- + Any + Stream object returned by pyrebase. + + """ + self._ensure_database() + + def wrapped_callback(raw_message): + callback(self.normalize_stream_message(raw_message)) + + stream = database_reference.stream(wrapped_callback) + stream_id = str(uuid.uuid4()) + self._active_streams[stream_id] = stream + setattr(stream, "_stream_id", stream_id) + return stream def stream_data(self, path: str, callback: Callable) -> Any: """ @@ -142,6 +207,24 @@ def stream_data(self, path: str, callback: Callable) -> Any: database_reference = self.construct_reference(path) return self.stream_data_from_reference(callback, database_reference) + def close_stream(self, stream_id: str) -> bool: + """Close one active stream by its stream id.""" + stream = self._active_streams.get(stream_id) + if not stream: + return False + + stream.close() + del self._active_streams[stream_id] + return True + + def close_all_streams(self) -> int: + """Close all active streams and return the number closed.""" + count = len(self._active_streams) + for stream in list(self._active_streams.values()): + stream.close() + self._active_streams.clear() + return count + def upload_data_to_reference(self, data: Any, database_reference: pyrebase.pyrebase.Database) -> None: """ Method for uploading data to a constructed database reference. From b291720440a8466e6d0de66a3a38764ef0c7e033 Mon Sep 17 00:00:00 2001 From: Joseph Kenny Date: Sat, 14 Mar 2026 17:49:51 -0400 Subject: [PATCH 2/4] Create Basic Stream Component for GH This includes the creation of a basic stream component in GH. This enables the user to steam any information from the database itself. --- .../Cx_StreamRealtimeDatabase/code.py | 131 ++++++++++++++++++ .../Cx_StreamRealtimeDatabase/icon.png | Bin 0 -> 989 bytes .../Cx_StreamRealtimeDatabase/metadata.json | 51 +++++++ 3 files changed, 182 insertions(+) create mode 100644 src/compas_xr/ghpython/components/Cx_StreamRealtimeDatabase/code.py create mode 100644 src/compas_xr/ghpython/components/Cx_StreamRealtimeDatabase/icon.png create mode 100644 src/compas_xr/ghpython/components/Cx_StreamRealtimeDatabase/metadata.json diff --git a/src/compas_xr/ghpython/components/Cx_StreamRealtimeDatabase/code.py b/src/compas_xr/ghpython/components/Cx_StreamRealtimeDatabase/code.py new file mode 100644 index 00000000..5eb74187 --- /dev/null +++ b/src/compas_xr/ghpython/components/Cx_StreamRealtimeDatabase/code.py @@ -0,0 +1,131 @@ +# r: compas_xr>=2.0.0 +""" +Component to stream data from Realtime Database. + +Streams updates from Firebase Realtime Database using a background worker. + +COMPAS XR v1.0.0 +""" + +import time + +import Grasshopper +from compas_eve.ghpython import BackgroundWorker + +from compas_xr.realtime_database import RealtimeDatabase + + +def start_rtdb_stream(worker, config_filepath, rtdb_path, return_full_data): + worker.config_filepath = config_filepath + worker.rtdb_path = rtdb_path + worker.return_full_data = bool(return_full_data) + worker.db = RealtimeDatabase(config_filepath) + worker.stream_id = None + worker.update_count = 0 + worker.display_message("Connecting...") + + def on_message(message): + evt = message.get("event") + pth = message.get("path") + raw_dat = message.get("data") + + if worker.return_full_data: + # Pull the full current subtree from the subscribed path. + try: + dat = worker.db.get_data(worker.rtdb_path) + except Exception: + dat = raw_dat + else: + # Use raw event delta payload. + dat = raw_dat + + worker.update_count += 1 + worker.update_result((evt, pth, dat), delay=1) + + mode = "full" if worker.return_full_data else "delta" + worker.display_message("Received Update #{} ({})".format(worker.update_count, mode)) + + stream_obj = worker.db.stream_data(rtdb_path, on_message) + worker.stream_id = getattr(stream_obj, "_stream_id", None) + + mode = "full" if worker.return_full_data else "delta" + worker.display_message("Streaming... waiting for updates ({})".format(mode)) + + while not worker.has_requested_cancellation(): + time.sleep(0.1) + + return None + + +def stop_rtdb_stream(worker): + # Called by worker.dispose(). + if hasattr(worker, "db") and worker.db and hasattr(worker, "stream_id") and worker.stream_id: + try: + worker.db.close_stream(worker.stream_id) + except Exception as e: + worker.display_message("Stop error: {}".format(e)) + worker.display_message("Stopped") + + +class StreamRealtimeDatabaseComponent(Grasshopper.Kernel.GH_ScriptInstance): + def RunScript(self, config_filepath, path, stream, return_full_data): + event = None + event_path = None + data = None + status = "stopped" + + if stream is None: + stream = False + + if return_full_data is None: + return_full_data = True + + if not stream: + BackgroundWorker.stop_instance_by_component(ghenv) # noqa: F821 + return event, event_path, data, status + + if not config_filepath or not path: + status = "error: provide config_filepath and path" + return event, event_path, data, status + + worker = BackgroundWorker.instance_by_component( + ghenv, # noqa: F821 + start_rtdb_stream, + dispose_function=stop_rtdb_stream, + auto_set_done=False, + force_new=False, + args=(config_filepath, path, return_full_data), + ) + + must_restart = False + if hasattr(worker, "config_filepath") and hasattr(worker, "rtdb_path"): + if worker.config_filepath != config_filepath or worker.rtdb_path != path: + must_restart = True + elif hasattr(worker, "return_full_data") and worker.return_full_data != bool(return_full_data): + must_restart = True + + if must_restart: + worker = BackgroundWorker.instance_by_component( + ghenv, # noqa: F821 + start_rtdb_stream, + dispose_function=stop_rtdb_stream, + auto_set_done=False, + force_new=True, + args=(config_filepath, path, return_full_data), + ) + + if not worker.is_working(): + worker.start_work() + + if hasattr(worker, "result") and worker.result: + event, event_path, data = worker.result + + if worker.is_working(): + mode = "full" if bool(return_full_data) else "delta" + status = "streaming ({}, {})".format(getattr(worker, "stream_id", None), mode) + elif worker.is_done(): + status = "done" + else: + status = "idle" + + return event, event_path, data, status diff --git a/src/compas_xr/ghpython/components/Cx_StreamRealtimeDatabase/icon.png b/src/compas_xr/ghpython/components/Cx_StreamRealtimeDatabase/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..459834b5b67e1856cf52743337d9a36695162145 GIT binary patch literal 989 zcmV<310wv1P)`Wj$ojlR0&*zgjM21MyGliTnA@YVJ!H z9k_7Mz32RX=iYPAxm;^&t5U6w)VH;Dyp4*|jyEO%VLvFR!%&&{l z(TkoQ?(@fwy3*3pF{9ClPoF-In9UW98ja>F04IRy<--jg1v|lpox66i^U@ZcCnjB8 zUDVOhF+oI$;o;%he?0*#7K^T_sVPOL*9!z}R92oRlgUK6xw+)?`7~N>l!5_Xx^($* zO3JpqArW}J-s`=+y$6{+CzlHZDwT>36&8{)Cx>p`zD){+LS0^7Ue8WeP*89#6oOT5 zxBKqk(2$Tsnwx`Mp}>Lsd?=MlXfzts)zwW@S64r2XlSTlHc3fId?+c9_xJaI>3sHV zPz(vlJdY@?79*phc;|BA#Rl`(f`oqCsFl-Km05vr=d-&vJ;qG^&r&CEu32jbHq-MLFf{DlDVYd1eCz*)$ z#wR2Q1V@XCC^apOTJGH=De?JyB$LT{0Ne};2qXhIzNojiw;$$YGUB&xrHsr>ve|5s z;7+HLva_@O&-uOt!BuhpsGwV|){|@@JtKo`wq{B2?(S}ii;G*V6^`Q`1px16Hx57t z;5`7Bux_{8uP}#)kC^>0nVg)Yfq?;XI2=@4TT4o%auHmtmFEEjr~Q!wC|gJo0e9-_ z8=9M!MxK|Kw*(Zwjo8@OHzIHefKC9>0EPg(2Cxyp2cghjIvm4USy|r$UsqpWAEu|J z`{z!3m*ecjZ|0nqgbq Date: Sat, 14 Mar 2026 17:50:41 -0400 Subject: [PATCH 3/4] Test GH Component Rebuild This includes testing the GH component rebuild just to ensure that everything builds successfully. --- .../components/ghuser/Cx_AppSettings.ghuser | Bin 5076 -> 5076 bytes .../ghuser/Cx_Firebase_Config.ghuser | Bin 5177 -> 5187 bytes .../ghuser/Cx_GetTrajectoryRequest.ghuser | Bin 4608 -> 4602 bytes .../ghuser/Cx_MqttTrajectoryResult.ghuser | Bin 5987 -> 5986 bytes .../ghuser/Cx_PlanningServiceResponse.ghuser | Bin 4238 -> 4239 bytes .../ghuser/Cx_SendTrajectory.ghuser | Bin 5658 -> 5658 bytes .../ghuser/Cx_StreamRealtimeDatabase.ghuser | Bin 0 -> 5766 bytes .../components/ghuser/Cx_XrOptions.ghuser | Bin 4683 -> 4685 bytes 8 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/compas_xr/ghpython/components/ghuser/Cx_StreamRealtimeDatabase.ghuser diff --git a/src/compas_xr/ghpython/components/ghuser/Cx_AppSettings.ghuser b/src/compas_xr/ghpython/components/ghuser/Cx_AppSettings.ghuser index 47c943c935023cb03265917577465d72e8f6e356..7bdb14b68561bce83bc973fdf23b323f7e9151fc 100644 GIT binary patch literal 5076 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 literal 5076 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 literal 5177 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 diff --git a/src/compas_xr/ghpython/components/ghuser/Cx_GetTrajectoryRequest.ghuser b/src/compas_xr/ghpython/components/ghuser/Cx_GetTrajectoryRequest.ghuser index 059c4c28910d0098551e04d17b111028acf9630c..cd7fdf74d6280f37ce6b0f978e6379600ec60ee2 100644 GIT binary patch literal 4602 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 literal 4608 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 qIZ#NyP^fRxOEojQ9d_)zJn0`_2>%C~9Qm>U diff --git a/src/compas_xr/ghpython/components/ghuser/Cx_MqttTrajectoryResult.ghuser b/src/compas_xr/ghpython/components/ghuser/Cx_MqttTrajectoryResult.ghuser index bbf24accd1a726af1e131f56da64da35c0dbe76c..a119e9f681bd9de4788c8c993bac85f0c9968463 100644 GIT binary patch literal 5986 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 Q=k7nxNF3?^{S(aJ0DA@M{{R30 literal 5987 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 R26+0~*$VCT|Ni~uzW{8x%t8PF diff --git a/src/compas_xr/ghpython/components/ghuser/Cx_PlanningServiceResponse.ghuser b/src/compas_xr/ghpython/components/ghuser/Cx_PlanningServiceResponse.ghuser index 536ca5da0edffdf75758bdd9d757a9777d53f32f..171697c45f25d0437438c14cd5d868448baf88e9 100644 GIT binary patch literal 4239 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 literal 4238 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 diff --git a/src/compas_xr/ghpython/components/ghuser/Cx_SendTrajectory.ghuser b/src/compas_xr/ghpython/components/ghuser/Cx_SendTrajectory.ghuser index ba35f58c5177941497ea2c6e3bef28cfcaa27cd3..f28bff4aad5b24aeb37d881a46966d16cba86b19 100644 GIT binary patch literal 5658 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 ANB{r; literal 5658 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 A&;S4c diff --git a/src/compas_xr/ghpython/components/ghuser/Cx_StreamRealtimeDatabase.ghuser b/src/compas_xr/ghpython/components/ghuser/Cx_StreamRealtimeDatabase.ghuser new file mode 100644 index 0000000000000000000000000000000000000000..c90598205d21ad8fd8d1b16214a7ff472ed31a80 GIT binary patch literal 5766 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 Pv;7js8b|uyUP1l?qzp+Y literal 4683 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 Date: Sat, 14 Mar 2026 17:55:17 -0400 Subject: [PATCH 4/4] Update CHANGELOG.md --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index e3ffb82b..5b27aad2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added +* Added Stream Realtime Database Methods and Component * Added type hints to all public methods and functions ### Changed