I hope my message finds you well,
I am trying to show real time sensor data on Revit UI, using dynamo. I have written the script regarding acquiring the real time data and plotting them on a graph on dynamo environment. Now I am wondering how I can import the graph to Revit UI? is there any python function or any other way that I can use to perform this task.
I appreciate your responses in advance.
Define ‘real time’. Are you looking for updates every 250ms? Every hour? Five minutes?
How would you want this displayed? As a element’s parameter? As a single family instance? I have built families which show ‘temperature’ gauges, and even line and bar charts that may do the trick.
Lastly, why? What data are you pulling in which has relevant information for the authoring of BIM content? most often when people ask for this type of data they’re looking to incorporate it into some form of Digital Twin or facility maintenance model, so I don’t ask this one to make you second guess your choice, but I am genuinely curious as to the end use here.
Regarding your question about how we display it, since it is vibration data we have already displayed it in a line graph in dynamo using graph packages. The graph is associated with a pump element in the Revit model.
Your guess is correct. I am developing a Digital Twin-driven maintenance approach using machine learning and BIM for water infrastructure, in which we also define lots of new IFC elements.
End-users are facility managers, who would receive the analysis from machine learning and “near” real-time data from multiple data bases.
Back to my question, I was wondering if there is any python function or node in dynamo environment to simply map my already-plotted line graph into Revit UI?
I am not aware of anything at the moment, but if you wanted something ‘updating’ once opened you could pop open a hosted web component, similar to the UI for the Revit Issues Add-In, docked or not (up to you).
If you wanted static (update when asked) then the same component could be run as well, but with better performance.
My biggest concern here would be performance. Revit (like most if not all design applications) can only take one command in at a time. This is a good thing from a data fidelity standpoint as it keeps you from making contradicting changes to the same element.
However applying this to your effort causes a different issue as Revit hosts Dynamo, and since Dynamo starts that UI Revit either can’t start the UI until Dynamo stops sending commands. Depending on how you set it up, when it is running, both Dynamo and Revit might be locked up for a good while, preventing any meaningful use of either application. Building the ‘display’ as an add-in is likely a better option, as those have more flexibility as a whole.
Revit is the wrong tool for the job.
You can use a spoon to dig a swimming pool, but I’d advise against it
I’m pretty sure the average facility manager wouldn’t want to open up Revit (or have a PC with enough horsepower) just to see if a pump is vibrating. They probably don’t need to even see a model- I’d suggest some kind of dashboard reporting perhaps with a simple location graphics- say PowerBI, Tableau or a GIS solution
You have static data, Revit, and dynamic data, sensor readings. You need to show those two things together to have a good understanding of both. Right now, you’re trying to embed the dynamic data in the static database. This more or less degrades the “real time” streaming of the data to a manual process or (at best) periodic interruption of your Revit model.
You should be going the other direction. Host the (mostly static) Revit geometry somewhere where the dynamic data from your sensors can actively run in whatever “real time” rate it needs, without interrupting anything in Revit. You only need Revit for the geometry (and maybe some parameter updates which could be automated but handled separately). It will be way easier to make the geometry play by the sensor’s rules than to make the sensor data play by Revit’s rules.
Thanks for your replies, but It should be noted that the judgment of a project, on which I have not elaborated at all, is not appropriate. Because you are not definitely familiar with nature and context of the project. Definitely " just to see if a pump is vibrating" is not the aim of this project! Hopefully in the future, these forums will provide more constructive and context-relevant feedbacks for dynamo users.
For those people who would have same or similar questions, I have found some helpful resources for data visualisation in Revit using Dynamo:
Respectfully, I disagree. You came here looking for advice on how to execute a problem without providing any context. The community exists to help each other solve problems, in the context of Dynamo but not always exclusively with Dynamo. Some of the most experienced Dynamo developers I know including someone who’s an expert in connecting external data to Revit indicated that we would use different tools to accomplish the task as it had been defined.
I am glad you found a possible solution in Mandril, and hope it works out for you - please be sure to follow up on how well it works so we can all continue to learn from each other.
I hope so too, but we can only answer the questions that are asked, not the questions that were intended.