By Eamonn Ryan derived from a SAIRAC Johannesburg Centre TechTalk on 12 February
In the February SAIRAC Johannesburg Centre TechTalk presented by Robert Fox, SAIRAC national president with over 31 years of experience, he discusses the critical differences between open-source and proprietary solutions for HVAC systems. As a senior cost and design estimator at Club Refrigeration, Fox has extensive insight into both the challenges and benefits associated with each system. This is Part 4 of a ten-part series.

Once the hardware setup was determined, Fox’s team moved to the software development stage. Pressfoto/Freepik.com
A case study for temperature and humidity monitoring in HVAC systems
In this segment, Robert Fox provides a detailed case study to demonstrate how he solved a client’s problem involving temperature and humidity monitoring and display. The client had specific requirements, including the need to display temperature and humidity data on large screens while integrating the Environmental Monitoring System (EMS). Fox discusses the challenges he faced, the steps taken to find a solution and the tools used, ultimately showcasing how effective programming and system integration could meet the client’s needs.
The client’s initial request was straightforward: display temperature and humidity data on large screens from the EMS. Fox’s team reviewed the project’s requirements and network topology:
- Sensors: They needed to collect temperature and humidity data
- Controller: A central unit to manage communication with the EMS
- Display: A large screen to present the data clearly
However, there were limitations with the existing controller. The largest screen size supported by the controller was only 10 inches, and it could only output a proprietary signal instead of HDMI. This posed a significant challenge, as the client wanted to display the data on two large screens located about 40m apart. HDMI connections would not work effectively beyond a certain distance (around 15m to 25m).
To meet the client’s requirements, Fox and his team took the following steps:
- Custom controller integration: They decided to install a standalone controller that would run parallel to the EMS, exposing data points via BACnet.
- Hardware setup: PC or Raspberry Pi: The team proposed running a custom application on either a PC or a Raspberry Pi, a small, credit-card-sized computer that runs on Linux. This would help manage the custom display logic and serve as the main interface for data collection.
- HDMI over Ethernet: Since HDMI would not work effectively at the required distance, the team explored using HDMI over Ethernet, which would allow the signal to be transmitted over longer distances (up to 40m or more).
- Data flow: The sensors collected temperature and humidity data.
The standalone controller communicated with the EMS via BACnet to fetch the necessary data points. The data was displayed on large screens using HDMI over Ethernet.
Writing the application
Once the hardware setup was determined, Fox’s team moved to the software development stage. They wrote a custom application using Python and the BAC0 library for communicating with the BACnet controller.
Key steps included:
- Config properties file: Fox explained that a configuration file was created to define key parameters for the project, such as company name, zones and communication settings. This file made it easier to customise and modify parameters without changing the core code.
- Defining data points: The team worked closely with the controls team to define the specific data points that needed to be exposed. These data points included:
- Object instance: Each sensor (e.g., temperature sensor) had a unique object instance.
- Property: The key property to fetch was the present value, which provided real-time data for temperature and humidity.
- Connecting to BACnet: The team used the BAC0 library to establish a connection with the BACnet controller. This involved defining the IP address and port for the device, as well as specifying the object instances and properties they wanted to read (e.g., temperature).
- Exception handling: They incorporated error handling into the program. If the controller failed to provide a reading, the application would not crash. Instead, it would display a message indicating an error and continue running.
- Visual indicators: The application also included visual indicators to reflect the status of the data. For example:
- Green: If the temperature or humidity was within acceptable ranges
- Red: If the values exceeded the predefined setpoints (too high or too low)
- Blue: If the values were too low
- Testing: Fox shared a screenshot of the custom application running on a 40-inch screen, where the temperature and humidity data were displayed. The solution proved to be stable and met the client’s requirements for dual displays.