Overview
Get the current thermostat schedule or update it with a new schedule configuration.
Hosted service only. This endpoint is part of the hosted API at https://nolongerevil.com/api/v1 and requires an nle_ API key. It is not available on the self-hosted server.
Endpoints
GET https://nolongerevil.com/api/v1/thermostat/{deviceId}/schedule
PUT https://nolongerevil.com/api/v1/thermostat/{deviceId}/schedule
Authentication
Required Scopes :
read for GET
write for PUT
Get Schedule
Request
GET /api/v1/thermostat/{deviceId}/schedule
Authorization: Bearer nle_your_api_key_here
Response (200 OK)
{
"device" : {
"id" : "dev_abc123xyz" ,
"serial" : "02AA01AB01234567" ,
"name" : "Living Room"
},
"schedule" : {
"ver" : 2 ,
"days" : {
"0" : {
"0" : {
"temp" : 24.83397 ,
"time" : 0 ,
"type" : "COOL" ,
"entry_type" : "continuation"
},
"1" : {
"temp" : 22.0 ,
"time" : 61200 ,
"type" : "COOL" ,
"entry_type" : "setpoint"
}
},
"1" : { ... },
...
},
"name" : "Current Schedule" ,
"schedule_mode" : "COOL"
}
}
Response if No Schedule
{
"device" : { ... },
"schedule" : null
}
Update Schedule
Request
PUT /api/v1/thermostat/{deviceId}/schedule
Authorization: Bearer nle_your_api_key_here
Content-Type: application/json
Request Body
Field Type Required Description scheduleobject Yes Complete schedule object
{
"schedule" : {
"ver" : 2 ,
"days" : { ... },
"name" : "Weekly Schedule" ,
"schedule_mode" : "HEAT"
}
}
Schedule Structure
Days Object
Keys are day of week (0 = Sunday, 6 = Saturday):
{
"0" : { ... }, // Sunday
"1" : { ... }, // Monday
"2" : { ... }, // Tuesday
...
"6" : { ... } // Saturday
}
Schedule Entry
Each day contains numbered entries (0, 1, 2, …):
Field Type Description tempnumber Temperature in Celsius timenumber Seconds since midnight (0-86400) typestring "HEAT", "COOL", or "RANGE"entry_typestring "setpoint" or "continuation"
Example : 6:00 AM = 21600 seconds (6 × 60 × 60)
Code Examples
cURL - Get
JavaScript - Get
JavaScript - Update
curl https://nolongerevil.com/api/v1/thermostat/dev_abc123xyz/schedule \
-H "Authorization: Bearer nle_your_api_key_here"
Use Cases
Simple Weekly Schedule
const weekdaySchedule = {
ver: 2 ,
name: "Weekday Schedule" ,
schedule_mode: "HEAT" ,
days: {
1 : { // Monday
0 : { temp: 18 , time: 0 , type: "HEAT" , entry_type: "continuation" },
1 : { temp: 21 , time: 21600 , type: "HEAT" , entry_type: "setpoint" }, // 6 AM
2 : { temp: 18 , time: 32400 , type: "HEAT" , entry_type: "setpoint" }, // 9 AM
3 : { temp: 22 , time: 61200 , type: "HEAT" , entry_type: "setpoint" } // 5 PM
},
// Repeat for Tuesday-Friday (2-5)
...
}
};
await updateSchedule ( deviceId , weekdaySchedule );
Copy Schedule
// Copy schedule from one device to another
const { schedule } = await getSchedule ( sourceDeviceId );
await updateSchedule ( targetDeviceId , schedule );
Schedules are complex objects. It’s recommended to get the existing schedule, modify it, and update it rather than creating from scratch.
Next Steps
Set Temperature Manual temperature control
Get Status Check current settings