Página 1 de 2

Tesla JSON API

Enviado: 13 out 2019, 21:46
por Apr
Crio este tópico para quem quisere trocar ideias sobre o API da tesla que está disponivel para ser usado.
A fonte é esta: https://tesla-api.timdorr.com/

Há uns videos no YouTube para quem quiser começar, como para mim não foi trivial, deixo um cábula do que uso para recolher informação, usando qualquer OS linux com o curl instalado.

O processo é o seguinte:

(1) - Com o username e password pede-se um token
(2) - Com o token recebe-se os ID's de cada veiculo
(3) - Com o token + ID de um veiculo podem-se executar comandos no carro, tal e qual como a APP.

Em mais detalhe:

(1) Extrair token: é preciso colocar o as credenciais da conta da tesla, username onde aparece "USERNAMETELSA" e password onde aparece PASSWORDTESLA

Código: Selecionar todos

curl --include --data "grant_type=password&client_id=81527cff06843c8634fdc09e8ac0abefb46ac849f38fe1e431c2ef2106796384&client_secret=c7257eb71a564034f9419ee651c7d0e5f7aa6bfbd18bafb5c5c033b093bb2fa3&email=USERNAMETELSA&password=PASSWORDTESLA" --request POST 'https://owner-api.teslamotors.com/oauth/token'
Este comando é perfeitamente seguro, tem um token válido do serviço OAUTH que é divulgado na net, mas o pedido é direto ao servidor da tesla, não há nenhum intermediário.


A resposta vai incluir o seguinte:

Código: Selecionar todos

{
	"access_token"  :  "aaaaaaaaaaaaaaabbbbbbbbbbbbbbbbcccccccccccccccddddddddddeeeeeeee",
}

Este valor vai ser usado em todos os pedidos seguintes


(2) recolher ID do veiculo: basta substituir OMEUTOKEN com o token recebido em cima

Código: Selecionar todos

curl --request GET --header 'Authorization: Bearer OMEUTOKEN' 'https://owner-api.teslamotors.com/api/1/vehicles'
Resposta:

Código: Selecionar todos

{
  "response": {
    "id": 1111222233334444,
...
}
A partir de agora todos os pedidos usam o token OMEUTOKEN + ID do veiculo OMEUIDDOVEICULO, por exemplo:


(3) Get Vehicle State

Código: Selecionar todos

curl --include --header "Authorization: Bearer OMEUTOKEN" --header "user-agent: 007" 'https://owner-api.teslamotors.com/api/1/vehicles/OMEUIDDOVEICULO/data_request/vehicle_state'
(3) Wake UP

Código: Selecionar todos

curl --include --request POST --header "Authorization: Bearer OMEUTOKEN" --header "user-agent: 007" 'https://owner-api.teslamotors.com/api/1/vehicles/OMEUIDDOVEICULO/wake_up'


Por agora para mim apenas me interessa acordar o carro para carregar quando há sol. o meu EVSE decide sozinho quando há sol suficiente para carregar e liga-se, no entanto o tesla quando está adormecido não responde a nenhum EVSE a querer dar carga. com esta API consigo acordar o carro e inicar a carga com eletrões exclusivamente solares. 8-)

Re: Tesla JSON API

Enviado: 13 out 2019, 22:12
por Filipe
8-)

Re: Tesla JSON API

Enviado: 14 out 2019, 21:08
por migle
Apr Escreveu:
13 out 2019, 21:46
Este comando é perfeitamente seguro, tem um token válido do serviço OAUTH que é divulgado na net, mas o pedido é direto ao servidor da tesla, não há nenhum intermediário.
Sim, é por HTTPS. Por essa razão, não é de forma nenhuma divulgado na net. Nenhum intermediário o pode ler. A comunicação HTTP só se estabelece depois de se ter estabelecido uma ligação cifrada e autenticada.

Mesmo assim, parece algum atrevimento por parte da Tesla. Não sei se outros construtores teriam coragem (ou talvez, até saiba).
E, no entanto, não é através de uma simples ligação HTTPS que fazemos tantas outras coisas, como comércio electrónico, etc?

Nos carros que eu conheço, não é possível comunicar com nenhuma das várias ECUs que comunicam com a Internet.
Elas só comunicam com o backend da marca através de VPNs em que a autenticação é feita através de certificados que são instalados antes de sair da fábrica e que asseguram o backend do VIN do carro. Para cúmulo, existem protecções que impedem nos carros de produção que os certificados sejam trocados.

São bué camadas de segurança. E, como sempre com a segurança, torna-se impossível este género de utilizações que vão além daquilo que quem desenvolveu o carro imaginou. Se nós queremos usar o carro de uma determinada maneira, isso só é possível se eles pensaram na feature, demonstraram que ela tinha mercado, e a entregaram com o carro.

Re: Tesla JSON API

Enviado: 14 out 2019, 21:55
por Apr
Não é isso, migle, é o serviço OAUTH que autentica clientes (apps?) e devolve tokens válidos para comunicar com a tesla.

Para autenticar na tesla é preciso as credenciais de acesso da conta da tesla mais as credenciais do serviço OAUTH. Estes ultimos são partilhados por quem faz reverse engineering aqui: https://pastebin.com/pS7Z6yyP

Eu também tive duvidas em saber o que significa usar essas credenciais mas é absolutamente inócuo pois estamos a autenticar nos servidores da tesla diretamente e, ai sim, o HTTPS garante que a comunicação é cifrada entre o cliente e a tesla.

Re: Tesla JSON API

Enviado: 14 out 2019, 22:31
por migle
Pois...
E esquece o que eu disse em relação a comunicar com o carro, tu estás a comunicar com o backend da Tesla e esse sim, e provavelmente só esse também, é que pode comunicar com o carro.

Isso até na Toyota é possível (tipo alterar algumas configurações, poucas, do carro) portanto não há aqui nada de mais aberto que qualquer outro construtor.

Re: Tesla JSON API

Enviado: 14 out 2019, 23:03
por Apr
Sim, o carro faz um tunel direto para a tesla. E as apps comunicam com os servidores da tesla. Na garagem com o carro ligado ao wifi não consigo abrir nenhum dispositivo da minha rede local no browser do carro, vai tudo para o tunel.

em todo o caso, na APP levas com updates de de estado do veiculo a cada meio segundo!

Re: Tesla JSON API

Enviado: 07 nov 2019, 14:29
por VETL
Quando me preparava para vir aqui pesquisar como "acordar" o carro para iniciar carregamento quando ele está a "dormir", descobri que se deixar a frunk destrancada (aberta), o gajo nunca adormece. Fica permanentemente acordado.

Re: Tesla JSON API

Enviado: 07 nov 2019, 22:49
por Apr
Boa dica, ia dar jeito no inicio quando o carro adormecia e nunca mais acordava remotamente. Agora já de ha umas largas versões para cá, nunca falha, acorda sempre que é preciso.

Re: Tesla JSON API

Enviado: 04 set 2021, 18:20
por Apr
Estive a fazer um pequeno script que destranca a ficha do carro através de um widget do meu telemóvel e estava com dificuldade em acertar com a API. As pesquisas do google trouxeram-me a este tópico com as respostas que queria.

Mais alguem usa a API para fazer coisas interessantes?

Re: Tesla JSON API

Enviado: 04 set 2021, 22:52
por CoolZeroFCP
Estive para tentar fazer isso mesmo utilizando o nfc do telemóvel da esposa (o meu não tem), mas os tag nfc que encomendei nunca chegaram e acabei por nunca experimentar.
Se quiseres partilhar como fizeste esse widget sabes 😉