Tesla JSON API

Fórum de discussão sobre todos os modelos da Tesla.
Avatar do Utilizador
Apr
Proprietário Leaf
Mensagens: 2479
Registado: 22 fev 2014, 02:29
Data de fabrico: 28 jun 2013
Capacidade bateria: 55 Ah 12 barras

Tesla JSON API

Mensagem por Apr » 13 out 2019, 21:46

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-)

Avatar do Utilizador
Filipe
Proprietário Leaf
Mensagens: 3042
Registado: 19 fev 2011, 03:51
Data de fabrico: 09 mai 2011
Capacidade bateria: 51,50 Ah - 10 Barras
Localização: Murtal - Parede - Lisboa

Re: Tesla JSON API

Mensagem por Filipe » 13 out 2019, 22:12

8-)
Nissan LEAF mk1 - Cinzento-Prateado - 86,5 K em 29 Jul 2018.
Nissan LEAF 3.0 +e - Cinzento Diamante - 22 Nov 2019

Avatar do Utilizador
migle
Mensagens: 2977
Registado: 01 set 2017, 00:21
Data de fabrico: 25 set 2017
Capacidade bateria: 78Ah
Localização: Alcochete

Re: Tesla JSON API

Mensagem por migle » 14 out 2019, 21:08

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.
Ioniq EV Imagem — Prius+ Imagem

Avatar do Utilizador
Apr
Proprietário Leaf
Mensagens: 2479
Registado: 22 fev 2014, 02:29
Data de fabrico: 28 jun 2013
Capacidade bateria: 55 Ah 12 barras

Re: Tesla JSON API

Mensagem por Apr » 14 out 2019, 21:55

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.

Avatar do Utilizador
migle
Mensagens: 2977
Registado: 01 set 2017, 00:21
Data de fabrico: 25 set 2017
Capacidade bateria: 78Ah
Localização: Alcochete

Re: Tesla JSON API

Mensagem por migle » 14 out 2019, 22:31

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.
Ioniq EV Imagem — Prius+ Imagem

Avatar do Utilizador
Apr
Proprietário Leaf
Mensagens: 2479
Registado: 22 fev 2014, 02:29
Data de fabrico: 28 jun 2013
Capacidade bateria: 55 Ah 12 barras

Re: Tesla JSON API

Mensagem por Apr » 14 out 2019, 23:03

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!

Avatar do Utilizador
VETL
Proprietário Leaf
Mensagens: 4068
Registado: 03 jul 2013, 13:50
Data de fabrico: 27 jan 2017
Capacidade bateria: 73,25AHr 12B (30kWh)
Localização: Aveiro

Re: Tesla JSON API

Mensagem por VETL » 07 nov 2019, 14:29

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.
=> Automóvel Eléctrico
=> Micro Produção Fotovoltaica
=> Painel Solar AQS
=> Aquecimento central a Pelets
__________________________________________________________________________
Associado da UVE - Associação de Utilizadores de Veículos Elétricos: http://www.uve.pt

Avatar do Utilizador
Apr
Proprietário Leaf
Mensagens: 2479
Registado: 22 fev 2014, 02:29
Data de fabrico: 28 jun 2013
Capacidade bateria: 55 Ah 12 barras

Re: Tesla JSON API

Mensagem por Apr » 07 nov 2019, 22:49

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.

Avatar do Utilizador
Apr
Proprietário Leaf
Mensagens: 2479
Registado: 22 fev 2014, 02:29
Data de fabrico: 28 jun 2013
Capacidade bateria: 55 Ah 12 barras

Re: Tesla JSON API

Mensagem por Apr » 04 set 2021, 18:20

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?

CoolZeroFCP
Mensagens: 116
Registado: 25 ago 2019, 16:44
Data de fabrico: 01 jan 2011

Re: Tesla JSON API

Mensagem por CoolZeroFCP » 04 set 2021, 22:52

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 😉

Responder

Voltar para “Tesla”