Eu tenho um termostato Nest, que é uma tecnologia maravilhosa, no entanto, isso significava que eu tinha que tirar meu telefone do meu bolso, desbloqueá-lo, iniciar o aplicativo Nest, aguardar a conexão e depois ajustar a temperatura. Eu me perguntei se era possível controlar o meu Ninho da linha de comando no meu laptop, na qual estou sempre trabalhando de qualquer maneira. A resposta é SIM, e isso é COMO:

 

Passo 1 - Crie um produto para desenvolvedor do ninho

Você precisa criar uma conta e um desenvolvedor do Nest Developer para obter o acesso à API que você precisa para controlar seu termostato.
Crie uma conta do desenvolvedor do Nest aqui – https://developer.nest.com/

Em seguida, crie um Produto.  O meu é chamado “Devons Command Line Interface”.  Certifique-se de conceder permissões de leitura / gravação para o Termostato e Away.

Reduza os valores do Produto ID e do Produto Secreto.  Você vai precisar deles mais tarde.  Você também precisará do URL da Autorização na próxima etapa para não fechar esta janela!

 

Passo 2 - Obter o seu código PIN para o seu termóstato Nest

Nest Thermostat Authorization ScreenCopie o URL de autorização mostrado no lado direito da página Detalhes do produto Developer Nest e cole-o em uma nova janela do navegador.  Deve solicitar que você permita seu Produto para conectar-se à sua conta pessoal do Nest.  Clique em Continuar.

Em seguida, deve dar-lhe um código PIN.  Copie isso com cuidado!!!

 

 

Passo 3 - Obter seu Código de Acesso

Agora que você tem um Código PIN, você precisa gerar um Código de Acesso da API usando o seu Código PIN e o ID do Produto e o Selo do Produto da Página de Detalhes do Produto do Desenvolvedor Nest.

curl -X POST "https://api.home.nest.com/oauth2/access_token?client_id=%YOUR_PRODUCT_ID%&code=%YOUR_PIN_CODE%&client_secret=%YOUR_PRODUCT_SECRET%&grant_type=authorization_code"

Substitua o %YOUR_*% valores com os valores corretos para seu aplicativo o PIN do Núcleo. E substitua & com &.  Em seguida, execute isso em sua linha de comando.  Você deve recuperar um token de acesso longo que começa com um “c.”.  Esta corda longa é o seu acesso Token e será usado para autorização para chamadas de API.

 

Passo 4 - Obter Seu termostato de ninho e IDs de estrutura

Agora que você tem seu token de acesso você pode recupere os IDs para o seu Termostato e Estrutura (Home), que você precisará configurar os alias da API da linha de comando.

curl -L https://developer-api.nest.com/devices/thermostats\?auth\=%YOUR_ACCESS_TOKEN%

Este comando retornará um grande bloco de dados JSON. & nbsp; O que você procura, há dois valores: the device_id and the structure_id.  Copie esses valores, você precisará deles em breve.

 

Passo 5 - Criar os alias de linha de comando

Agora você tem tudo o que precisa!  Eu uso ZSH, mas isso deve funcionar da mesma forma em BASH ou no shell da sua escolha.  Eu criei quatro alias em meu .zshrc (use seu arquivo .bashrc ou preferido).  Cada comando precisará do seu token de acesso, e seu ID do dispositivo ou o ID da sua estrutura.

nestset() {
curl -L -X PUT "https://developer-api.nest.com/devices/thermostats/%YOUR_DEVICE_ID%/target_temperature_f?auth=%YOUR_ACCESS_TOKEN%" -H "Content-Type: application/json" -d "$1"
}

nestget() {
curl -L https://developer-api.nest.com/devices/thermostats/%YOUR_DEVICE_ID%/target_temperature_f\?auth\=%YOUR_ACCESS_TOKEN%
}

nestaway() {
curl -L -X PUT "https://developer-api.nest.com/structures/%YOUR_STRUCTURE_ID%/away?auth=%YOUR_ACCESS_TOKEN%" -H "Content-Type: application/json" -d '"away"'
}

nesthome() {
curl -L -X PUT "https://developer-api.nest.com/structures/%YOUR_STRUCTURE_ID%/away?auth=%YOUR_ACCESS_TOKEN%" -H "Content-Type: application/json" -d '"home"'
}

 

Passo 6 - Controle seu termostato do ninho da linha de comando!

Agora que você definiu esses alias, você está pronto para usá-los!

nestget retorna a temperatura alvo atual em que seu Nest está configurado para:

[devon:~]$ nestget
71%

nestset toma um único argumento, que é a nova temperatura alvo em Fahrenheit:
[devon:~]$ nestset 72
72%

Awayway define seu modo Nest in Away:
[devon:~]$ nestaway
"away"%

nesthome define o seu modo Nest in Home:
[devon:~]$ nesthome
"home"%