Notificaties,
ik heb getest met de mail notificatie en dat werkt op zich prima...op dit moment weet ik geen betere notificatie. Wat heb ik gemaakt :
- In sheet 1 een paar instel opties voor het mailen : wil je een mail als de verwarming aan gaat En/Of wil je een mail als de verwarming uit gaat (Ja of Nee)
neem dit over :
(kolom AB zorgt ervoor dat je maar 1 mail kijgt als de verwarming aan staat), zet hier initieel een 0 in, en kom hier verder niet meer aan.
Dan de code aanpassing, ga naar je code: Tools, Script editor
En zoek de functie function getNestWeather()
Kopieer onderstaande stukje code en vervang in de functie TOT regel (dus laat onderstaande regel staan)
:
if (Tcountdown==15) // every 15 minutes a new line in the sheet
function getNestWeather()
{
var time = new Date();
var notityHeatingOnStatus=-1;
var notityHeatingOn="Nee";
var notityHeatingOffStatus=-1;
var notityHeatingOff="Nee";
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];
// update countdown timer in sheet
var Tcountdown=sheet.getRange('N13').getValue();
if (Tcountdown==1) { Tcountdown=15 } else { Tcountdown--;}
sheet.getRange('N13').setValue(Tcountdown);
if ((Tcountdown % 5)==0) // timer every minute...but check every 5 minutes
{
var login_auth = performLogin();
var headers = {
"Authorization" : 'Basic '+login_auth['access_token'],
"X-nl-user-id" : login_auth['userid'],
"X-nl-protocol-version" : '1',
'Accept-Language': 'en-us',
'Connection' : 'keep-alive',
'Accept' : '*/*',
};
var options = {
'headers' : headers
};
var request=UrlFetchApp.fetch(login_auth['urls']['transport_url']+'/v2/mobile/user.'+login_auth['userid'], options);
var result=JSON.parse(request.getContentText());
var structure_id = result['user'][login_auth['userid']]['structures'][0].split('.')[1]
var device_id = result['structure'][structure_id]['devices'][0].split('.')[1]
var heater_state = result["shared"][device_id]["hvac_heater_state"];
var current_temp = result["shared"][device_id]["current_temperature"];
var target_temp = result["shared"][device_id]["target_temperature"];
var humidity = result["device"][device_id]["current_humidity"];
var auto_away = result["shared"][device_id]["auto_away"];
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];
if ((notityHeatingOn = sheet.getRange('AA1').getValue())=="Ja")
{
notityHeatingOnStatus=sheet.getRange('AB1').getValue();
}
if (heater_state) // Heating is ON, update cell for Verwarmen in last row
{
var numMaxRow = sheet.getLastRow();
var current=sheet.getRange('E'+numMaxRow ).getValue();
current+=5;
sheet.getRange('E'+numMaxRow ).setValue(current);
notityHeatingOffStatus=1;
if ((notityHeatingOnStatus==0) && (notityHeatingOn=="Ja"))// First heating on this cyclus, so mail....
{
notityHeatingOnStatus=1;
MailMe("Verwarmen Aan: " + current_temp.toFixed(1) + " -> " + target_temp.toFixed(1),"Verwarming aan : " + time.toLocaleTimeString());
}
}
else // Heating is OFF
{
notityHeatingOnStatus=0;
if ((notityHeatingOff = sheet.getRange('AA2').getValue())=="Ja") //Notify on heating OFF
{
notityHeatingOffStatus = sheet.getRange('AB2').getValue();
if (notityHeatingOffStatus==1)
{
notityHeatingOffStatus=0;
MailMe("Verwarmen Uit: Nu" + current_temp.toFixed(1) + " (" + target_temp.toFixed(1) + ")","Verwarming uit : " + time.toLocaleTimeString());
}
}
else
{
notityHeatingOffStatus=0;
}
}
sheet.getRange('AB1').setValue(notityHeatingOnStatus);
sheet.getRange('AB2').setValue(notityHeatingOffStatus);
}
En dan dit nieuwe stukje code bovenin de pagina erbij, vervang het mail adres naar jou mail adres:
function MailMe(Titel,Body)
{
MailApp.sendEmail
({
to: "Jou@mailAdres.nl",
subject: "NEST " + Titel,
htmlBody: Body,
});
}