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:

 

Geef een antwoord

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