Yep, wel via Node-RED Add-on, meteen mijn eerste project daarin:
Access-token om het uur refreshen:
msg.url = "https://www.googleapis.com/oauth2/v4/token";
msg.method = "POST";
msg.payload = {
"client_id": "CHANGE_ME.apps.googleusercontent.com",
"client_secret": "CHANGE_ME",
"refresh_token": "CHANGE_ME",
"grant_type": 'refresh_token'
};
return msg;
Status devices opvragen::
let projectId = 'CHANGE_ME';
msg.url = "https://smartdevicemanagement.googleapis.com/v1/enterprises/" + projectId + "/devices"
msg.method = "GET";
msg.headers = {
'Authorization': 'Bearer ' + flow.get('access_token'),
'Content-Type': 'application/json'
};
return msg;
Temperatuur instellen:
let projectId = 'CHANGE_ME';
var targettemp = msg.payload
msg.url = "https://smartdevicemanagement.googleapis.com/v1/enterprises/" + projectId + "/devices/" + flow.get('device_id') + ":executeCommand";
msg.method = 'POST';
msg.headers = {
'Authorization': 'Bearer ' + flow.get('access_token'),
'Content-Type': 'application/json'
};
msg.payload = {
"command" : "sdm.devices.commands.ThermostatTemperatureSetpoint.SetHeat",
"params" : {
}
}
msg.payload.params.heatCelsius = +targettemp;
return msg;
Heating On/Off:
let projectId = 'CHANGE_ME';
var heatingState = msg.payload
msg.url = "https://smartdevicemanagement.googleapis.com/v1/enterprises/" + projectId + "/devices/" + flow.get('device_id') + ":executeCommand";
msg.method = 'POST';
msg.headers = {
'Authorization': 'Bearer ' + flow.get('access_token'),
'Content-Type': 'application/json'
};
msg.payload = {
"command" : "sdm.devices.commands.ThermostatMode.SetMode",
"params" : {
}
}
msg.payload.params.mode = heatingState;
return msg;
En nu heb ik (basic) controle over mijn Nest op m'n dashboard:
next up: GCP Pub/Sub events gebruiken om status te syncen ipv API te pollen.
Ik vind alleen niet waar ik m'n google project ID kan definiëren in de NodeRed docker environment...