📚

TESLA FleetAPIを利用する上でのハマりどころ

に公開

利用していて戸惑ったところなど簡単に紹介します。

VehicleEndpointであれば公開鍵秘密鍵の作成は不要

チュートリアルを順に進めていて、あまり詳細を読んでいませんでしたが不要でした。アプリケーションを登録後に、採番されるカスタマーIDとシークレットIDがあればVehicleEndpointなどは参照できます。
https://developer.tesla.com/docs/fleet-api/getting-started/what-is-fleet-api

開発環境も https で整合性の取れた証明書が必要

アプリケーション登録時にドメイン名やリダイレクト先を登録する必要があります。開発環境を作成する際に http://localhost のような単体のURLを登録自体はできます。しかし、TESLAのAPIでログインした後にリダイレクトでアクセストークンを受け取る際に set-Cookie にSecureが付いてるためhttpsの環境が必須です。

そうなると caddy などを使って https://localhost と指定したくなるのですが、これはテスラの管理画面上で正しいURLではないとしてエラーとなります。

hostsに任意のURLを書いたとしても管理画面上で正しい認証局の登録がないみたいなエラーになります。実際のところ、インターネット経由でhttpsで通信可能で、整合性の取れたサーバ証明書を準備する必要があります。

車両が通信可能な状態でなければ参照できないAPIがある

車両を操作しなければスリープ状態になりますがその場合だとAPIが408を返す場合があります。
具体的には車両のデータを取る vehicle_data などです。

https://developer.tesla.com/docs/fleet-api/endpoints/vehicle-endpoints#vehicle-data

アカウントに対して所有車両のデータを取得する list などはスリープ状態など関係なく参照できます。

https://developer.tesla.com/docs/fleet-api/endpoints/vehicle-endpoints#list

また、スリープ状態の車両を起こす wake_up というAPIもあります。しかし、APIの通信する目的で wake_up をコールすることは公式でも避けるべきとのことです。

vehicle_dataを蓄積してデータ推移を出せるか

日次の総走行距離、電池残量、走行可能距離は出せるので日次で電費や電池の劣化率をグラフなど可視化できそうです。また社外と社内の気温も取れるので、気温との相関も見ていきたい。

APIの参照を電池の消費がでかいみたい

APIをコールし始めて社内のエネルギーアプリを見たところ、全消費内訳のうち、サードパーティAPPの消費割合が3%を超えてた。多く見積もっても参照系APIを50くらいしかCallしてないのに…。使いすぎには気をつけたいと思います!

Discussion