Nest Thermostaat

Mijn zoon zijn oude thermostaat happerde en moest vervangen worden. Zelf zat hij al te denken aan een Nest Thermostaat, een goede keus wat mij betreft. Stelt mij ook mooi in de gelegenheid om de tutorial die ik gemaakt had voor de Nest Protect eens na te lopen (zaten toch nog een paar kleine foutjes in) en ook om de aanpassingen die ik voor de Nest Protect in de scripts van Roland Breedveld te testen met een Nest Thermostaat. Ook hier bleek nog een kleine aanpassing in nodig om het werkende te krijgen. In deze tutorial leg ik uit hoe je de Nest Thermostaat (of ander Nest product) kunt integreren met Domoticz.

De Nest Thermostaat is een slimme thermostaat die je aan je WIFI netwerk kunt koppelen en kunt bedienen met een app. Het is een 3de generatie Nest thermostaat met een zelflerend vermogen die op basis van je gedrag er voor zorgt dat het altijd aangenaam warm is op de momenten dat jij thuis bent. De Nest plugin maakt gebruik van API’s van de Nest server en logt in met de credentials van je Nest account.

 

Benodigdheden:

  • Nest Thermostaat V3
  • Smartphone
  • Google account
  • Schroevendraaier
  • Tweelingsnoer + stekker
Reeds geïnstalleerd en up-and-running:
  • Chrome browser op je laptop of desktop
  • Domoticz

Testopstelling: Pak de Nest Thermostaat uit en verwijder alle verpakking- en bescherm foliën. De Nest Thermostaat bestaat uit de Thermostaat met “base-plate” en een zogenaamde “Heat link”. Deze Heat link hang je aan je CV en communiceert draadloos of bedraad met de Thermostaat. Ik heb een testopstelling gemaakt door de beschermkap van de Heat Link te schroeven, hierdoor komen een 12 tal schroefconnectors vrij. Vervolgens heb ik een stukje tweelingsnoer met stekker op de L (bruine draad) en N (blauwe draad) schroefconnectors te monteren. Omdat de draadloze connectie bij mij niet goed werkte, een ander stukje tweelingsnoer gemonteerd op de T1 en T2 schroefconnectors van de Heat Link, en deze afgemonteerd op de T1 en T2 schroefconnectors van de base-plate van de Thermostaat. Tot slot de Thermostaat op de base-plate gedrukt. Stappenplan:

 

Stap 1. Nest app gedownload vanuit Play store op mijn Smartphone Stap 2. Ingelogd in de Nest app m.b.v. mijn google account en de volgende instellingen gedaan

  • Woning (Thuis) toegevoegd
  • Thuisadres ingevuld
  • Exacte adres locatie gekoppeld
  • Instellingen geopend
  • Thuis/Afwezig-functie ingesteld

Stap 3. WiFi ingesteld op de Thermostaat

  • Doorloop onderstaande schermen, die spreken voor zich
  • Tip: letters/cijfers kiezen doe je door de thermostaat rond te draaien, bevestig keuze letter/cijfer door de thermostaat in te drukken

Note: Hier ging het bij mis, ik kreeg geen draadloze verbinding tussen Thermostaat en Heat Link, daarom gekozen om dit bedraad uit te voeren. Dit is ook hoe ik het ga af monteren in de woning van mijn zoon.

  • Vervolgens de Thermostaat verder geconfigureerd

Stap 3. Nest Thermostaat toegevoegd het in Stap 1 aangemaakte huis via https://home.nest.com (kan ook via de app)

  • Schermen spreken wederom voor zich
  • Kies op het hoofdscherm van https://home.nest.com voor de + Product toevoegen
  • Kies voor Nest Thermostaat
  • Kies voor Nest Learning thermostaat
  • Kies voor ‘Al geinstalleerd’
  • Voer de code in die op de thermostaat staat

Stap 5. NEST-API van Robert Breedveld geïnstalleerd conform https://github.com/rolandbreedveld/nest-api

  • Voer onderstaande commando’s uit op je Raspberry PI (of ander linux systeem)
  • Open in Chrome een incognitovenster (ctrl-shift-n)
  • Open Hulpprogramma’s voor ontwikkelaars (ctr-shift-i)
  • Klik op de Network tab, zorg ervoor dat de “Preserve log” optie aangevinkt staat
  • Voer “issueToken” in in de Filter Box
  • Ga naar https://home.nest.com
    • (Ik kreeg een melding dat de cookies van de Nest site werden geblokkeerd, middels Instellingen, Privacy en beveiliging, Cookies en andere sitegegevens heb ik “Alle cookies toestaan” aangevinkt)
    • Kies voor Inloggen met Google
    • Log in met je emailadres, wachtwoord
  • Er verschijnt nu een netwerk-call beginnend met “iframerpc” in het hulpprogramma voor ontwikkelaars, klik daar op
  • Kopieer op het Headers tab, onder General de volledige Request URL
    • Beginnend met https://account/google.com
    • Eindigend op nest.com
    • Dit is je $issue_token
  • Open nest.auth.php met je favoriete linux editor, bijv. nano of vi
    • Vervang achter $issue_token alles tussen de twee quotes (‘) met de inhoud vanuit je Klembord (wat je in de vorige stap gekopieerd hebt naar je klembord)
  • Ga terug naar het incognitovenster in Chrome
    • Vul in oauth2/iframe in in de filterbox
    • Meerdere netwerk calls verschijnen in het hulpprogramma voor ontwikkelaars
    • Klik op de laatste iframe call
    • In het Header tab, onder Request Headers, kopieer de hele cookie waarde (zonder de Cookie prefix !)
    • Dit is je $cookies waarde
  • Ga terug naar je terminal venster
    • Vervang achter $cookies alles tussen de quotes (‘) met de inhoud vanuit je Klembord (wat je in de vorige stap gekopieerd hebt naar je klembord)
    • Zorg ervoor dat zowel de waardes achter $issue_token en $cookies tussen quotes (‘) staat, en dat de regels worden afgesloten met een semi-colon (;)
  • Je nest.auth.php ziet er dan als volgt uit
  • <?php $issue_token = ‘https://accounts.google.com/o/oauth2/iframerpc?action=issueToken&response_type=token%20id_token&login_hint=AJDLj6LQu-SMCQLMxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxTYzobKJ-1q4pJZjmUkKTLN2NoeA&client_id=733249279899-4xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxpps.googleusercontent.com&origin=https%3A%2F%2Fhome.nest.com&scope=openid%20profile%20email%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fnest-account&ss_domain=https%3A%2F%2Fhome.nest.com‘; $cookies = ‘SID=sgfrxxxxxxxxxxxxxxxTo-j_vf_-2Nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxy1df-rxe1WQ.; __Secure-3PSID=sxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxO64o74; __Secure-SSID=AxQEaWXSZg-1H2ZKk; __Secure-APISID=3tUvrVrS3ee–006/ApgGjs40awnwM2xFm; __Secure-3PAPISID=p9x18iZgyVgn6fFq/A7xjBbjEtWTgkOlEE; ACCOUNT_CHOOSER=AFx_qI67YjE14CI19N1npadly9l_FaDC_Q0x6stLujg2ispYwS9JCkpNTxXudBApImZ_uiK1DUI1iIr-zS62yUCSRSig4eZ5YJMf80s4c_kud9VdkUVmUmOQb30grwGeKXQjEHU6iQZsyskHzmrcjH1J5rkCOL4t5A; 1P_JAR=2020-1-13-18; NID=195=ZTTDd73Ta21uqwWY9ukPTFzpuAHFTAQd1RErNvg4z6NYKy_f-tuRJ78VGYXjEAaYBg58uVky8glL34mfROU_O2_tSqykTdE2KsJSfWONMXjL9UQtnibTyGEV–wyGX4aifkTflh4decHpLSC-_TlETZY6P2hlUz-c-RgdysyQ_vTegE-kaOb65xLfSu_B1qz; OCAK=hWss9zjy_ldnrr7A19jB3uiqDiMuIaU0dox0X9PTMvE; LSID=lso|s.NL|s.youtube:sgfulHAAN5u0Tzye6kJPb8RCE48c-8-ZPXtpOfuZGrPD7BEtf6r7h1KEc9bjBnm2gYFtkw.; __Host-3PLSID=lso|s.NL|s.youtube:sgfulHAAN5u0Tzye6kJPb8RCE48c-8-ZPXtpOfuZGrPD7BEtOVUIcmmh7iwpdYBOspgN8w.; user_id=11535263xxxxxxxxxxxxx; GAPS=1:0Bk-p2Evy7j9Cywz5JC5_Pv6BdixXBKHIYskyaNf5C32y7zwG5-1TIQakrz2m12ke5CZK1iM4BZh17yf7WZG6qF2jj_c:Zs3mYu8VtozyiY_d; SIDCC=AN0-TYsO6VDzcdyseOsCvt-yMZPxxxxxxxxxxxxxxxx8fZjPoHunLprx4_h4J9irKSjne9EJ‘;
    •  

Stap 6. IDX’en van devices in Domoticz toegevoegd aan nest_devices.cfg

  • Rename de file nest_devices.cfg-example naar nest-devices.cfg

mv nest_devices.cfg-example nest_devices.cfg

  • In nest_devices.cfg de volgende devices toegevoegd met hun respectievelijke IDX identificatienummers uit Domoticz (Zie stap 8)

Device idx
============
SETPOINT 5
TEMP 3
HUMIDITY 4
AWAYMODE 7
ECOMODE 6
HEAT 8
TEMPHUM 77
COSTAT_06CA01AC1320038L 83
SMOKSTAT_06CA01AC1320038L 82
COSTAT_06AA01AC4720005J 210
SMOKSTAT_06AA01AC4720005J 209
DOMOTICZ 127.0.0.1:8080

 

Noot: als je alleen een Nest Thermostaat hebt kun je COSTAT* en SMOKSTAT* weglaten. Heb je wel een Nest Protect, zie dan mijn tutorial voor de Nest Protect voor de configuratie.>

    • Het geheel kun je testen in de debug mode met /home/pi/nest-api/get_nest.sh -d

Stap 7. Virtuele sensors toegevoegd aan Domoticz

  • Achtereenvolgens de volgende virtuele devices toegevoegd:
    • voor Temperatuur : Temperature LaCross TX3
    • voor Luchtvochtigheid : Humidity LaCross TX3
    • voor TempHum : Temp+Hum THGN122/123/132
    • voor SetPoint : Thermostat SetPoint
    • voor ECOMode :  schakelaar
    • voor AwayMode : schakelaar
    • voor Heat : schakelaar
  •  

 

Toelichting op non-default waardes
Label Waarde Doel
Naam Nest Temperatuur Zinvolle naam
   
Toelichting op non-default waardes
Label Waarde Doel
Naam Nest Luchtvochtigheid Zinvolle naam

 

 

Toelichting op non-default waardes
Label Waarde Doel
Naam Nest Zinvolle naam

 

Toelichting op non-default waardes
Label Waarde Doel
Naam Nest ECOMode Zinvolle naam
Aan actie script:///usr/bin/php /home/pi/nest-api/set_nest_eco_mode.php Voert php script uit die nest in Eco mode zet
Uit actie script:///usr/bin/php /home/pi/nest-api/unset_nest_eco_mode.php Voert php script uit die nest uit de Eco mode haalt

 

Toelichting op non-default waardes
Label Waarde Doel
Naam Nest AwayMode Zinvolle naam
Aan actie script:///usr/bin/php /home/pi/nest-api/set_nest_away_mode.php Voert php script uit die nest in Away mode zet
Uit actie script:///usr/bin/php /home/pi/nest-api/set_nest_away_mode.php Voert php script uit die nest uit de Away mode haalt

 

Toelichting op non-default waardes
Label Waarde Doel
Naam Nest Heat Zinvolle naam

Stap 8. dzVents script van Rolald gebruikt om Setpoint waarde in te stellen op de Nest

  • Ga binnen Domoticz naar Instellingen, Meer opties, Gebeurtenissen.
  • Klik op het + teken, en kies voor dzVents, Devices
  • Knip-en-plak onderstaand script

— Nest SetPoint
— dzVents script for updatting SetPoint of Nest thermostat with Google account
— Roland@Breedveld.net
— the name of my device is “Nest”, change it if you likei, on both places.
return{
on = {
devices = {
‘Nest’
}
},
execute = function(domoticz, device)
local setpoint = tostring(domoticz.devices(‘Nest’).setPoint)
if (domoticz.devices(‘Nest ECOMode’).state == ‘On’) then
print(“Nest Setpoint not Called because in EcoMode”)
else
print(“Nest Setpoint Called, change SetPoint to :” .. setpoint .. ” …”)
cmd = “/usr/bin/php /home/pi/nest-api/nest_setpoint.php ” .. setpoint
print(cmd)
os.execute(cmd)
end
end
}

  • Noem het script “Nest SetPoint” en sla het script op

Stap 9. get-nest.sh toegevoegd aan de crontab van root zodat iedere minuut het script gedraaid wordt

  • Voer onderstaand commando uit

sudo crontab -e

  • Voeg onderstaande regel onderaan in je crontab toe

* * * * * /home/pi/nest-api/get_nest.sh > /var/log/nest-api.log 2>&1

Stap 11. Test de schakelaars Nest AwayMode, Nest ECOMode en Nest (Setpoint) uit:

 

3 thoughts on “Nest Thermostaat

  1. Sander says:

    Hallo Syds,

    Wat een klus om dit netjes te noteren/programmeren? Ik kluns maar wat aan met code, en met goed lezen en copy paste kom je ook een heel eind. Nu heb ik sinds vorige week ook een nest thermostaat hangen en wil die uiteindelijk ook opnemen in mijn Domoticz systeem. Nu staat er bij hardware een nest plugin, de tweede, niet de eerste (protect) ik begrijp dat die ondertussen obsolete is.
    Die tweede zou dus iets kunnen? Gaan doen..? Maar dan moet je dus een API van Google hebben. Ik heb hier al eens mee zitten knoeien voor wat anders en voor de nest kan je dat ook doen met de SDM plugin, maar ik heb dat nog niet werkend kunnen krijgen. Het lijkt of nest nog geen toegang heeft via de API, maar dat kan heel goed aan mij liggen dat ik iets nog niet goed heb staan.
    Heb jij hier al eens naar gekeken, is het een optie om via die route een en ander te koppelen? Misschien is het een kwestie van tijd. Ik ben benieuwd wat jouw ervaringen zijn.
    B.v.d. groeten Sander.

    Beantwoorden
    1. Syds says:

      Sander,

      Dank je voor je positieve reactie, daar doe ik het voor ! Inderdaad een hele klus, maar als je het je hobby is, dan steek je daar graag tijd in. Daarbij komt dat het voor mij ook een vorm van documenteren is, zodat als er problemen zijn ik kan nalopen waar een en ander eventueel fout gaat.

      Ik heb geen ervaringen met andere plugins, alleen die van Ronald Breeveld. Ik ben op dit moment ook niet in staat de Nest Thermostaat te testen met andere plugins, want hij hangt bij mijn oudste zoon thuis 😉 Als je deze tutorial letterlijk volgt, dan moet je het werkend kunnen krijgen lijkt me. Je hebt geen Google API nodig, wat je nodig hebt is een Google account die je gekoppeld hebt aan je Nest Thermostaat. Dit laatste doe je door met je Google account in te loggen op de Nest website home.nest.com. Daarna kun je in de developermode van Chrome de key’s achterhalen die je nodig hebt om de plugin werkend te krijgen.

      Ik zou zeggen, ga er is een avondje lekker voor zitten en volg de tutorial stap-voor-stap. Mocht je er daarna niet uitkomen, of zitten er omissies of fouten in de tutorial, laat me dat vooral weten. Ik help je graag.

      Syds

      Beantwoorden
  2. Sander says:

    Hallo Syds, ik ben even druk met wat andere dingen, maar ik ga het binnenkort proberen voorelkaar te maken. Ik laat het weten of het lukt.

    Beantwoorden

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *