I recently had to work with the BMS system of my office building and study how to retrofit it with new web-based technologies. I am by no mean even slightly knowledgeable about these systems, but this gave me a few ideas to explore.
For example, I wanted to measure temperature and humidity in my apartment to understand thermal conditions and optimise comfort in my own home.
I first looked into integrated home monitoring systems, but they are more expensive that I wish to spend on this small experiment. Furthermore, they mostly work with proprietary software solutions and offer little possibility for tinkering.
Instead, I ordered two Raspberry Pi Zero W along with two DHT22 humidity and temperature sensors to build my own Wifi enabled indoor thermometer and humidity monitor. Since I will need to use the GPIO interface of the Raspberry Pi, I ordered the H version of the Raspberry Pi Zero W, with pre-soldered headers. This allows me to connect the DHT22 to the GPIO interface of the Raspberry Pi without having to solder it on the board. Following the instructions from this post in Home Automation Community, I quickly plug the sensor into the GPIO interface of the Raspberry.
To read the values coming from the DHT22 sensors, I use the associated Adafruit python library. Just run these commands to install pip, the python package manager and add the Adafruit_DHT library:
To store the values coming from these sensors, I am using an Azure Cosmos DB database. This solution come with a nice Python library that I will use as well in my project:
sudo pip3 install azure-cosmos
Using the sample provided by Adafruit, I wrote a small python script to read the values coming from the DHT sensors and upload the result to my online database. You can find the resulting script in this Gist.
To run this script, I am using crontab, the Linux job scheduler. Don’t forget to run the crontab with sudo, since the GPIO need sudo permission to be accessed:
sudo crontab -e
To run the command every 5 min, I use the following crontab command:
*/5 * * * * cd /home/smoreau/sources/ && /usr/bin/python3 /home/smoreau/sources/readings.py
This will go in my home dir (cd /home/smoreau/sources/), use python3 (/usr/bin/python3) on the python file (/home/smoreau/sources/readings.py).
Since I have two Raspberry Zero with a DTH22 sensor wired on each, I add the sensorId property to be able to differentiate the values coming from them.
Now that I have temperature and humidity values nicely stored in a database, I need to display them. I started with a simple line graph to get an idea of the evolution of the temperature and the humidity:
As you can see, we can start seeing patterns here. For example, you can see a spike in the temperature around 6 PM every day, when the sun hit the sensor. We can also see that the humidity is inversely correlated to temperature.
But I wanted something a bit fancier to display the sensor values.
I found the work of Kean Walmsley on Project Dasher very interesting and I have often used it to showcase possibilities of connection between IOT and BIM. Inspired by this, I created my own visualization tool for this data.
To create this visualization tool, I am using the Forge viewer with the great wrapper for Angular published by Alan Smith. With a few lines of code, I was able to create a nice visualization tool albeit not very useful:
You can hover over the red dots to display the values coming from the temperature and humidity sensors.
To spread usage of building models, it is important to provide easy to use interfaces to extract data from these models. Being able to see a model and interact with it is a good first step. The next one is obliviously being able to extract quantities from this model.
My first attempt at creating a quantity take-off system for bimsync assumed that all the models I wanted to analyse will follow the same structure. This was necessary to be able to create a first dashboard and then keep meaningful results in this dashboard as the model evolved. But a lot of models I receive don’t follow a rigorous enough structure to be able to extract them through a Power BI dashboard.
I wanted to be able to analyse less structured models. So, I needed something different than my previous dashboard-based solution.
I looked for inspiration in many quantity take-off systems from various software packages. I took notice of the one from of Solibri, which I found quite good. I also drew inspiration from the pivot table systems available in Excel and Power BI. The main idea was to replicate the principle of the pivot table on a building model.
With these ideas in mind, I drew a few sketches to refine my solution and find the user interface I was looking for:
After a few iterations, I came up with a first version of my quantity take-off system for bimsync. You can now use it on your own models in bimsyncManager.
This quantity take-off system will display in colors all the elements you are quantifying, providing a very visual way of extracting quantities. You can also select the properties you want to display and group them just like an Excel pivot table.
Let see how to use it:
In your project list, click on the chart icon to open the quantity take-off interface. Select your model, its revision and the IFC class of the elements you want to quantify. A list of the associated properties is loaded below. Select or drag and drop some of these properties to group your elements.
A table summarizing the results appears below your model. Selected elements are also displayed in colors:
Drag and drop new properties and select how you want to group each one of them. For example, we can count how many walls of each type we have by counting Guids. You can also add the GrossSideArea and select Sum to get the total area for each type:
bimsyncManager highlight in color every selected element. You can also hide or make translucent the others to fully understand in a visual way what are the elements you are quantifying. A more conventional feature, you can select a specific element to have a detailed view of its properties:
When the information you retrieved is satisfying, you can download the resulting table as a spreadsheet to analyse it further.
The solution is now freely available as a public beta on bimsyncManager. Don’t hesitate to share your feedback or issues you might encounter, I will try to address them.
As usual, the entire solution is open source and available on the bimsyncManager Github repository. If you want to contribute, I would be happy to integrate your Pull Requests.
Letting non-technical users see a model used to be a pain. Web-based viewers have started to make it way easier. They now allow you to review any models without having to install some heavy software or buy the latest gaming computer.
I am myself a regular user of bimsync and enjoy this ability to let anyone see a model as long as there are members of a project.
But I also wanted something easier to let people see a specific version of a model without even having to be invited to a bimsync project. Think of it as the “Share” button of Dropbox or OneDrive.
Making use of the bimsync API, I created a new feature in bimsync Manager to let you share your bimsync models with a simple link.
Once logged to bimsync Manager with your bimsync account, click on the “Share” button of your project. Select one or more models to share, their version and the associated 2D view.
Then click on “Publish” to get a public link. This link allows you to see the selected version of these models without having to be invited to the corresponding bimsync project. You can view the result here.
In this window, you have access to most of the usual features of the bimsync viewer, like sectioning, showing or hiding models and spaces.
A word of warning here, the sharing link is public. If you use it to share you models, everybody with the link will be able to see them, so be cautious before sharing something that might be confidential.
You can also use the second link, an iFrame, to embed the viewer in your website, like in this example below:
Along with this new feature, I updated the link between Power BI and bimsync.
If you want to use it, you must now use the updated dashboards, available on the Help page. These new dashboards now include an access to your bimsync issues.
I had to do some modification to the inner working of bimsync manager. You might have to log out and login in again if you were already using bimsync Manager.
A few updates have been made to Group Clashes, my Navisworks plugin to automatically group clashes.
This new version is mostly about fixing bugs that were causing Navisworks to crash, especially when you didn’t save your work. I must thank all of you who were kind enough to report these bugs and help me solve them.
Another change is the renaming of single clashes. In some cases, clashes where renamed without being grouped. This is now corrected, and clashes won’t be renamed. This will allow you to use the name of a clash to follow its resolution. It’s also mean that I will never rename your clashes anymore, whether they are in a group or not. However, the groups themselves are still named after the feature that made them exist, whether it be a level, grid intersection or element name.
Along with this update, I also made two videos to explain how to use Group Clashes. You can find them below, or on the Autodesk App Store.
The first one will teach you the basics of group Clashes:
Group Clashes Main Functionalities - YouTube
The second one will describe you in detail every available grouping mode:
Group Clashes Grouping Modes - YouTube
I hope this video will help you make good use of Group Clashes.
Three of my applications have been updated for Revit 2019. Room Finishes, Time Stamper and bimsync4Revit now support Revit versions from 2016 to 2019.
The most important change this year is the migration of all code to Github. I also add a proper Readme explaining these applications and how you can contribute to them. I hope this will encourage anyone to propose Pull Requests, point out issues or simply ask for new features.
All source code is now licensed under the MIT licence. As usual, feel free to use this code in your own applications.
Aside from this, there is not much improvement this year except a few bug fixes, so I will just take that as an opportunity to present you again these three tools.
Room Finishing is my oldest Revit plugin. You can use it to model skirting boards and floor finishes based on rooms.
To model skirting boards, the application uses a user-created wall type on a specific height to model a skirting board all around a previously selected room. You can also run the command on all visible rooms.
bimsync4Revit is an unofficial Revit plugin for bimsync. You can use it to upload your model to bimsync without having to quit Revit. This plugin makes use of the Revit custom IFC Exporter and you can select your own IFC configuration.
I have finally find the time to update Align, my plugin for aligning elements, tags and text in Revit.
The app now supports Revit version from 2016 to 2019 and it is available on the Autodesk App Store.
The main update this year is the Untangle function. This function comes with two new buttons, “Untangle Vertically” and “Untangle Horizontally”.
You can now select a few randomly placed tags, click on Untangle and the tags will sort themselves nicely:
As you can see, the tags will move vertically (or horizontally) so they don’t overlap, while keeping themselves as close as possible. They will also be sorted so the leaders won’t cross.
If you are using text annotation, this function will also work these texts, with or without leaders:
It also works with every Revit elements. If you have a bunch of overlapping element, like furniture for example, select them and hit “Untangle” to see them sort themselves:
I also made a few modifications to the code source repository. I have migrated the repository to Github and I won’t be using Bitbucket anymore. You can now find the source code here: Align-Tag
I also add a proper Readme explaining what this application is about and how you can contribute to it. I hope this will encourage anyone to propose Pull Requests, point out issues or simply ask for new features.
The source code is now licensed under the MIT licence. I am far from a licence expert, so I take the word from ChooseALicense:
“The MIT License is a permissive license that is short and to the point. It lets people do anything they want with your code as long as they provide attribution back to you and don’t hold you liable.”
As usual, feel free to use this code in your own application.
I must give my deepest thanks to all of you who have contributed to this application by your code, remarks and sample models. Don’t hesitate to keep asking me new features!