24green – Greenhouse Automation

With 24green I developed a new generation climate computer for Hoogendoorn Growth Managment. I worked on  system architecture, web-based user interface, climate controls and data analysis applications. I was responsible for design, architecture, implementation, testing and support of the project. I worked with a team of 5 other developers together with specialists from the industry.

This project made me experienced in C#, WCF, Windows Services, Windows Azure, SQLite, Entity Framework, MSSQL, AzureSQL, TCP/IP sockets,  MVC, WebAPI, Javascript, JQuery, KnockoutJS, AngluarJS, Kanban and Scrum.

About 24green

24green is a part of the Hoogendoorn Group. 24green develops a new generation climate computer for the greenhouse automation business unit of the Hoogendoorn Group, Hoogendoorn Growth Management. Growers use the climate computer to get the optimal climate conditions for their crops. The newest generation computer is easier to install, easier to use and extendable by third parties.

System basics

The climate computer is made out of an industrial PC running Windodws XP embedded. The PC is connected to a MODBUS I/O station that can be connected to the hardware in the greenhouse, like heaters, pumps and motors. This is all packaged in a case that is waterproof and has active cooling. The PC is connected to a local network and can be controlled by browsing to it in a web browser of any device that is also connected to the network.

User Interface

The user interface was developed with ASP.NET MVC4 and AngularJS. The user interface shows a complete overview of the climate conditions in the greenhouse as well as adjustable settings that the users can change to tweak the climate conditions of their greenhouses. The interface made it very easy to configure the computer to react to certain conditions, like outside temperature changes. The flexibility of the system made it a challenge to present the many options in a easy-to-understand way. We collaborated with users and experts in the climate automation industry and developed an extensive wizard to solve this issue.

Climate Controls

Controls are continually running processes that monitor conditions and react if a certain set of conditions is met. For instance, the heating control monitors the greenhouse temperature and activates a heater when the temperature is too low.

The challenge with controls is the user. Every grower decides the perfect conditions for the crop himself. While extensive research has proven that certain things like lighting and temperature have a certain effect, not every aspect of a greenhouse can be taken into account by the researchers. This leaves the grower to make his own decisions about what the perfect conditions for his crops are. The controls have to be flexible enough to support the many different requirements of the users but also easy to use and maintainable by the development team.

Usability was solved by the wizard in the user interface. We made it flexible by designing a system where controls are broken down into parts. One part would be able to switch a device on or off while another part could monitor a value and send a signal when the temperature would be above a certain threshold. Combining the two could make a heating control or a ventilation control. We ended up with about 20 major parts that covered most of the basic needs for the system. We continue to develop more specialized parts for uncommon circumstances.


Our challenge for this particular aspect was the Windows XP embedded PC. Some controls required such a high degree of precision that timing became crucial. Windows XP embedded would not let us control the timing of its processes to such a degree that this was possible. We solved this issue by creating a separate timing process that would control the timings of the controls separate from the Windows timing.

Local Services

Local services are processes that support the system and run on the PC together with the controls and the user interface. We made services for tasks like backups, updates and licensing. Different services had different challenges; for instance, the update service had to update the system without taking the controls offline. It is also important that the controls are never interrupted by these services. This was solved by changed the windows process priority of local services to a level below the control and I/O processes.

Online Services

All climate computers that were connected to the internet could use the 24green online services. These services formed an online platform of functions that did not have to run on the climate computer itself and thus made it so that the computer didn’t need as much computing power. We made services for data analysis and third party collaboration, parties like crop advisers. Data could also be shared with third party developers through an API, if the grower authorized that party.