ラズパイに入れたHome Assistantで、家の消費電力と買電・売電が見えるようになりました。次はクルマの番です。
私は完全な文系人間です。APIもOAuthも公開鍵も、言葉として聞いたことがあるだけで中身はさっぱり分かりません。
なので今回は、設定のほとんどをClaude Codeにやってもらいました。私がやったのは、画面を見て「これでいい?」と聞くことと、最後にスマホで承認ボタンを押すことくらいです。
夜11時すぎに始めて、終わったのが0時10分。約1時間で、パソコンからモデルYLの車両情報が取れるところまで来ました。

もくじ
テスラの開発者アカウントを作る
車両の情報を外から取るには、テスラの開発者ポータルでアプリを登録して、Fleet APIというものを使えるようにする必要があるそうです。
登録の種類は「個人用」

個人用か法人用かを選ぶところから始まります。ここは迷いません。
アプリの説明と利用目的を書く

アプリ名を決めて、説明を150字以内、利用目的を1000字以内で書きます。
この文面はClaudeが用意してくれたものをそのまま貼りました。「太陽光の余剰電力に合わせてEV充電を最適化するための、個人利用の読み取り専用アプリ」といった感じの文章です。
自分で書けと言われたら、たぶんここで諦めていました。
許可するURLを入れる

OAuth付与タイプは「認証コードおよびM2M」、リダイレクトURIには https://my.home-assistant.io/redirect/oauth を入れます。
ここは言われるがままで、何をしているのかは正直まだ分かっていません。
スコープ選びで方針が変わった

どのデータにアクセスするかを選ぶ画面です。
もともとは読み取りだけのつもりでした。車両情報と車両の位置、この2つだけ取れれば充電の制御は充電器側でできる、という設計だったからです。
車両充電管理は、将来クルマ側の充電操作も使うかもしれないと思って選びました。エナジー製品情報は、いずれPowerwallをつけるかもしれないと考えて追加したものです。車両のロック解除などに使う「車両コマンド」は選んでいません。
そうしたらClaudeから「利用目的に読み取り専用と書いてあるので矛盾します」と指摘されて、前の画面まで戻って文面を書き直すことになりました。
このときの何気ないひと手間が、最後にちょっとした場面を連れてくることになります。
「オプション」と書いてある請求先が必須だった

次が請求先の入力です。ステップ名にはっきり「請求先詳細(オプション)」と書いてあります。
カードを登録せずに進みたかったので「カードいれずにスキップして送信でいい?」と聞いてみました。
いったんは「大丈夫です」という話だったのですが、調べ直したうえで訂正が返ってきました。テスラの説明では、支払方法を設定していないアプリや請求限度額を超えたアプリは無効になります。初期の請求限度額も0です。
画面の情報ボックスにも、請求限度額が0のままだと使えない旨が書いてありました。Home Assistantの案内では請求先登録を「後からでも可」としていますが、この時点で使える状態まで進めたかったので、私はカードを登録しました。
個人利用向けには月10ドル分の割引があります。ただ、使い方次第でそれを超える可能性はあるので、万一に備えて請求限度額をカスタム制限の1000円にしておきました。請求額が必ず0円になる、という意味ではありません。

送信すると、アプリが「適用中」になりました。ここまでで17分です。
Home Assistantと繋ぐ
ここからはHome Assistant側の作業です。
統合を追加してClient IDを入れる

設定からデバイスとサービスを開いて、統合を追加でTesla Fleetを選びます。Tesla PowerwallやTesla Wall Connectorも候補に並んでいました。

Client IDとClient Secretは開発者ポータルの詳細画面からコピーします。ここに写っている2つは念のため隠してあります。

テスラ側の認可画面です。さっき選んだ4つのスコープがそのまま並んでいます。
My Home Assistantを経由する

認証のあと、自宅のHome Assistantに戻ってくるための橋渡しの画面が出ます。インスタンスのURLを入れてSaveです。

私が入力したのは自宅LAN内のHome AssistantのURLです。そのため、このときは自宅のネットワークに繋いだ状態で作業しました。
公開鍵を自分のサーバーに置く

ここが今回いちばん「これは無理だ」と思ったところです。
公開鍵という文字列を、自分が持っているドメインの決まった場所に置かないといけません。私の場合はこのブログのドメインでした。

レンタルサーバーの公開ルートを開いてみると、置くべき場所そのものがありません。フォルダから作る必要があります。


私がやったのは、レンタルサーバーの管理画面にログインしたことだけです。

そこから先は、Claudeが自分でブラウザを動かしてフォルダを2つ作り、ファイルを1つ置きました。3分34秒です。
画面の右側に「well-knownを作成しました」「appspecificも作成できました」と作業のログが流れていくのを、私はただ見ていました。

中身はこういう文字列です。公開鍵は人に見せてもいいものだそうなので、そのまま載せています。
仮想キーの承認が必要
ドメインの登録が通ると、スマホのテスラアプリに通知が来ました。

「第三者に車両へのアクセスを許可しますか?」
承認をおしていいのかなと、一瞬も迷いませんでした笑。

押したら成功しました。
Home AssistantのTesla Fleet連携は、コマンドの署名が必要な車両では仮想キーの登録を案内しています。私のモデルYLでも、設定の途中でテスラアプリから承認しました。
選んだ「車両充電管理」の権限には、充電の開始・停止などが含まれます。ただし、私はここで実際に車両へコマンドを送るテストはしていません。「車両コマンド」は選んでいないので、ロック解除やリモート起動まで許可したわけではありません。
すごいなと思う反面、ちょっと怖くもあります。
私はこのまま有効にしておくつもりです。今のところ外での無料充電がメインなので出番は少ないのですが、いずれガレージに充電器を増やしたときには、車両側から充電電流を制御する必要が出てくるかもしれません。
真似される方は、許可する範囲と、あとで連携を解除する方法を先に確認しておいたほうが安心だと思います。

後日、Home Assistantに並んだ車両情報
ここからの5枚は、設定をおえてHomeAssistantに整えて並べてもらったスマホでみた画面です。

モデルYLの欄に、残量、航続距離、ケーブルの状態、充電中かどうかが並びました。これで「パソコンから車両情報を取れた」だけでなく、普段見るHome Assistantの画面にも表示できています。

「EV SoC」は私のHome Assistantで作ったTemplateセンサーです。Tesla Fleetの車両データを、充電制御で使いやすい名前にそろえています。画面の履歴は9月24〜26日のもので、下に見える58%は撮影時の値です。

「EV At Home」もTesla Fleetがそのまま返す項目ではなく、Home AssistantのTemplateで作った在宅判定です。外出と帰宅の時間帯が分かるため、細かい活動時刻は画像から外しました。

これに対して「充電制限」は、Home Assistant上でTesla Fleet統合のモデルYLデバイスに紐づく項目です。撮影時は85%でした。充電制限の表示があることと、今回その値をHome Assistantから変更して車両で動作確認したことは別です。この記事では後者のテストはしていません。

最後の「EV Battery kWh」はFleetから取得した電池容量ではありません。私がHome Assistantに作った手入力のヘルパーで、いまは計算用に87 kWhを入れています。モデルYLの公式な電池容量を示す数字ではないので、車両データと混ぜないようにしています。
まとめ
1時間たらずで、パソコンからモデルYLの車両情報を取得するところまで進みました。その後のHome Assistantの画面でも、残量や充電状態を確認できています。
自分でやった作業を数えてみると、選択肢を選んだのと、コピーしたテキストを貼ったのと、レンタルサーバーにログインしたのと、スマホで承認を押したくらいです。技術的な判断は一つもしていません。
ただ、判断はしなくても、決めるのは自分でした。スコープをどこまで許可するか、カードを登録するか、仮想キーを承認するか。分からないなりに聞いて、納得してから押す。そこだけは人任せにできない部分だと思います。
WallboxをHome Assistantから操作する話は、すでに別の記事にまとめました。今回のTesla Fleet連携は車両の情報を読むための入口です。車両情報を使った充電計算や自動制御の中身は、別の記事で扱います。
テスラを買うなら紹介リンクをどうぞ
リンク経由で注文すると、購入したかたに特典が適用されます。私への連絡は不要です。
※注文を確定する前に、特典が適用されているかご確認ください。
紹介リンクについて詳しくはこちら
