Basic Thermostat Template 1.0
1. Introduction
The User Interface Socket Description for a basic thermostat defines the minimum set of socket elements needed to control a heating or cooling system through the URC framework. The template covers three functional concerns: reading the current ambient temperature, setting the desired temperature (setpoint), and selecting the operating mode. These three variables together represent the complete user-accessible interface of a standard residential or light commercial thermostat, whether the underlying system is a boiler, a heat pump, a chiller, or a split-type air conditioner.
The template was developed in the context of the Cloud4all accessibility project, where thermostats were identified as one of the appliance categories most likely to present barriers to users with motor impairments or cognitive disabilities. A standardised URC socket description allows any conforming controller — including screen readers, switch-access interfaces, and voice-controlled systems — to operate any conforming thermostat service without custom integration. The template defines the minimum conformant interface; implementers may extend it to expose additional variables such as humidity setpoint, schedule programming, or filter maintenance alerts, provided that extensions do not break conformance with the base set.
2. Variables
The template defines three socket variables. The ambientTemperature variable is a read-only decimal value representing the current temperature measured by the thermostat’s sensor, expressed in degrees Celsius. The variable is notification-capable: a conforming service must support subscriptions that deliver updates when the ambient reading changes by more than the implementation-defined resolution threshold, typically 0.5°C. The setpointTemperature variable is a read-write decimal value representing the target temperature. Its permissible range is defined in the Resource Property file accompanying the master socket description; a typical residential range is 5°C to 35°C. Write operations on this variable must take effect immediately on the underlying system; the service is not required to expose a pending-change indication unless it adds a conformant extension for that purpose.
The operatingMode variable is a read-write enumeration with four defined values: heat, cool, auto, and off. In heat mode the system activates heating when the ambient temperature falls below the setpoint. In cool mode the system activates cooling when the ambient exceeds the setpoint. In auto mode the system selects heating or cooling based on the relationship between ambient and setpoint, subject to implementation-defined hysteresis. In off mode neither heating nor cooling is activated regardless of setpoint or ambient conditions. A service that controls a heating-only system such as a boiler may omit the cool and auto values; a service that controls a cooling-only system may omit heat and auto. The omission must be declared in the Resource Property file so that controller authors can adapt their presentation accordingly.
3. Conformance
A thermostat service conforms to this template if it exposes a user interface socket that contains all three variables defined in section 2, with the data types, access modes, and notification behaviours specified above, and if the socket description references this template through the Dublin Core source element. Optional variables may be added provided that their names do not collide with any variable name reserved in this specification or in any other template registered with the openURC Resource Server. Conformance testing can be performed using the standard URC socket validator available through the Resource Server HTTP Interface.
4. Master Documents
The master documents for this template are stored in the openURC Resource Server under the project identifier assigned at template registration. The master set comprises four files: the User Interface Socket Description XML file (basic-thermostat.uis), the Resource Property file (basic-thermostat.rp), an example Atomic Resource file for the operatingMode enumeration labels (mode-labels.res), and the present document. The socket description file is the normative reference for implementers. The Resource Property file specifies permitted ranges, resolution, and unit declarations required by ISO/IEC 24752-5. The Atomic Resource file provides localised string labels for the four operating mode values in English, German, French, and Italian.
5. References
- [ISO/IEC 24752-1] — ISO/IEC 24752-1:2014, Information Technology — User Interfaces — Universal Remote Console — Part 1: Framework.
- [ISO/IEC 24752-2] — ISO/IEC 24752-2:2014, Part 2: User Interface Socket Description.
- [ISO/IEC 24752-4] — ISO/IEC 24752-4:2014, Part 4: Target Description.
- [ISO/IEC 24752-5] — ISO/IEC 24752-5:2014, Part 5: Resource Description.
- [RES-SERV-HTTP] — Resource Server HTTP Interface 1.0, openURC Alliance, March 2014.
- [UCH-1.0] — Universal Control Hub 1.0, openURC Alliance, December 2013.