Integration of a hotel reservation system into Domat

In building with integrated room controls with variable occupation, such as in hotels, building owners often require to set the room to Off  automatically on long-term unoccupation. The room then goes to energy saving state (also known as „Eco“ or „Building protection“) rather than to Comfort or Standby based on occupancy status.  The Eco heating setpoint is about 12 to 15 °C, while cooling is completely off. Whole groups of rooms or floors are off in the low season period, and the activation to Standby follows before guests check-in.

It makes sense if the room activation follows automatically, based on the data from the hotel reservation system. The system knows the estimated time of check-in, and is able to provide the activation command in advance. If the hotel reservation system supports a standard protocol, such as BACnet, the integration is not very different from integration of other 3rd party systems, such as air-conditioning units. However, the most common interface to provide the room occupancy information is a text file which is generated by the hotel management system in regular intervals, and saved to a disk where the building management system can read it.

When specifying the functionality, the BMS designer and software engineer should talk to the hotel system supplier, and agree on the file format definition. Most probably the file will consist of lines, containing room number and required state as a number (0, 1, 2…) or text (UNOCC, RESERVED, FREE etc), separated by line separators.

In the example below, used rooms are marked as U and reserved rooms as R. Free rooms are not included in the file. Of course, the file may have a different format.


The integration into a BMS follows either at the management station level (RcWare Vision SCADA), or at the automation (PLC) level. The rule of thumb is that the integration in SCADA is more spmple and easier to maintain, while its functionality depends on connection between SCADA and the automation level. This is why some customers require integration directly at the automation level. This is also the only possible solution at plants where there is no SCADA and the process stations are operated over a web panel.

Integration in a PLC

A simple solution to read the room status from a text file is a SoftPLC File Driver. It reads files or web pages (HTML, XML), picks up the required information on room occupation using regular expressions, and updates the corresponding SoftPLC variable. This variable then sets the required room status in the room controller over the bus.

In the variable properties, the location of the file with room states must be defined first.


The file may be on a disk, if the platform supports disk drives, such as a SoftPLC RT running as a service on a PC with OS Windows. A web address also can be used and the file can be read from a URL from a server in the network.

Regular expressions are general specifications of character strings, see details e.g. at The File Driver, in simple words, searches through the reservation system export file, and tries to find a string which fits the regular expression entered in the SoftPLC variable definition. The resulting substring, which gives the information on room occupancy, is then converted to a number and written into the SoftPLC variable.


In the example above the regular expression describes a string „310;“ followed by „U“ or „R“ and another semicolon. This is the status of room 310. The text „<value>“ points to the substring to be converted. In the Masking strings window, the substring is converted to an integer number, because the variable to describe the room status is of Integer type. If the room is used (U), the variable is 1, if the room is reserved (R), it is 2. The state mapping should be defined so as to make the room status control as easy as possible. More states may be mapped to one value.

According to the export file specification (see above), also free rooms, which are missing in the list, must be processed. This returns a communication error: the string defined by the regular expression is not found in the file, and the variable status is set to Bad, CommError. However, the ComError state can also be assigned a predefined value in the general variable properties:


If the room is free, the variable is set to 0.

Integration in RcWare Vision

In the SCADA the integration is scripted. The data point controlling the room status is a Digital Output in RcWare Vision: a button, which – when pushed – brings the room into the required state.


There is also a script in the project which opens the input file in predefined intervals, reads the room states, and if the room status shall be changed, it „pushes the button“. The script must be modified so as to fit the input file format. There are many ways how to program the script: please contact Domat Control System technical support and ask for a project example or personal assistance. The example script is written so as to separate the scripting from application programming, so definition of new rooms and modification of rooms can be done by an application programmer with no special scripting knowledge.