このガイドには、プログラミングに関する少しの知識と、ターミナルやコマンドラインが何であるかを理解していることが必要です。
このチュートリアルではDockerを使用してTeslaMateをインストールします。ソフトルーター環境の場合、ブラウザからアクセスできるようにポートマッピングなどの追加操作が必要になることがあります。私のMacは常時稼働しているため、Macシステム上のDockerにインストールしました。
残念ながら、TeslaMateは車両の過去の情報を取得できないため、TeslaMateインストール後の走行データしか確認できません。また、TeslaMateのサービスを停止すると関連する走行データが記録されなくなります。
はじめに
「TeslaMate」は、簡単に訳すと「テスラの相棒」という意味で、車両がテスラサーバーに報告するデータを取得し、GrafanaというWebデータ可視化ダッシュボードツールで表示するオープンソースソフトウェアです。
TeslaMateのリポジトリ:
TeslaMateのドキュメント:
テスラのエンジニアはこれらのデータを収集し、車両のビッグデータ分析、ソフトウェア最適化、バッテリー充電の最適化などに利用しています。個人のオーナーがこれらの情報を取得することで、愛車の詳細なデータ(過去の走行履歴、日々の走行距離、電力消費状況、充電効率など)をよりよく理解することができます。
このブログ記事を書いた理由は、TeslaMateのドキュメントにはインストール方法(非常に簡単)しか記載されておらず、インストール後に目的のダッシュボードを表示するための設定方法が書かれていないからです。また、インターネット上のコンテンツファームはSEOテクニックに依存しており、検索上位にあるものも公式サイトの内容をコピーしたものが多く、求めている情報を見つけるのは少し困難です。現在のところ、インストールから完成品までの全プロセスを説明している記事は見当たりません。そのため、この記事では最初から説明します。
まず完成イメージ(ユーザーはパネルをカスタマイズ可能)をご覧ください:

一、Dockerのインストール
冒頭で述べたように、私はDockerを使用してインストールを行います。TeslaMateのドキュメントではDockerとDocker Composeのインストールが要求されています(何であるか気にせず、とにかくインストールしてください)。Docker Desktopをインストールすれば、これら両方がインストールされます。Docker Desktopのダウンロードはこちら:
インストール後、起動し、適当なディレクトリ(TeslaMateのすべてのファイルはこのディレクトリに保存されるため、削除しないでください)に公式のdocker-compose.ymlファイルを配置します。私は~/Developer/Docker/TeslaMateの下に配置しました。docker-compose.ymlの内容は以下の通りです:
1 | |
一部のサービスのパスワード設定は他のサービスのパスワードと一致させる必要があるため、上記のパスワードはすべて同じに設定することをお勧めします。また、特に注意が必要なのは=の後ろにスペースを入れないことです。その後、ターミナルを開いて以下のコマンドを実行します(各行をターミナルにコピーしてEnterキーを押してください):
1 | |
完了後、Docker Desktopを開くと、以下のような状態になっているはずです:

二、テスラアカウントでのログインと認証
前の手順がエラーなく完了し、すべてのサービスが「Running」状態であることを確認してください(上記のスクリーンショットの各サービス名をクリックして対応するログを確認し、errorなどのエラーがないか確認できます)。ブラウザでlocalhost:4000を開くと、API TokenとRefresh Tokenの入力を求められます。これらの取得方法は公式ドキュメントに記載されています:
ここでは3番目の方法「Tesla Auth (macOS, Linux, Windows)」を使用します。以下のリンクをクリックして自分のシステムに適したバージョンを確認し、対応するファイル(実行可能ファイル)をダウンロードしてください。
MacOSで直接ダブルクリックして開く(またはターミナルで開く)場合、実行ファイルが危険である可能性があるという警告が表示されることがあります。系统设置-隐私与安全性に移動し、「開く」をクリックしてください。開くとウィンドウが表示され、Teslaアカウントにログインするよう求められます。ログインが完了すると、TeslaのAPIトークンとリフレッシュトークンが表示されます(スクリーンショットは割愛します)。これをlocalhost:4000ページの対応する欄にコピーすると、ログインに成功します。ログイン成功時の画面は以下のようになります:

ここまでで認証は成功です。次にGrafanaの設定を行います。
三、Grafanaの基本概念
Grafanaは非常に強力なWebデータ可視化ダッシュボードツールで、使用は比較的複雑です。また、日本語化の方法については調査していません。幸い、Teslaのデータフィールドはシンプルなので、日本語化は必要ありません。ここでは、カスタマイズを進める上で役立つ基本概念を簡単に紹介します。
ダッシュボードとパネル
ダッシュボードは、さまざまなデータを表示する画面で、異なるパネルを表示できます。パネルとは、データベースをクエリしてデータを取得し、それを可視化する個々のモジュールです。以下の各赤枠がパネルです:

パネルは異なるダッシュボード間でコピーできます。以下のように:

コピーした後、別のダッシュボードに貼り付けることができます。ダッシュボード右上の「Add Panel」ボタンをクリック(または初めてダッシュボードを作成する場合)(前の手順でパネルを「Copy」していないと、下図の4番目の「Paste from Clipboard」は表示されません)すると、以下のように新しいパネルが作成されます:

変数(Variable)とJSONモデル
変数
各ダッシュボードは、パネルで使用する変数を設定できます。パネルはどのように変数を使用するのでしょうか?パネルのデータはSQLクエリによって取得され、SQLの一部の構文はGrafanaのSQLテンプレート構文です。以下は高度をクエリするSQL構文です:
1 | |
ここで$記号が付いているものは、事前に設定された変数です。$__timeFilterのように組み込みのものもあれば、$alternative_length_unitのようにカスタムのものもあります。カスタム変数はダッシュボードで設定された変数です。ダッシュボードの変数は、ダッシュボード右上の「Dashboard Settings」で設定します:

JSONモデル
時々、あるダッシュボードからパネルをコピーして新しいダッシュボードに貼り付けた後、パネルが正常にデータを表示しないことがあります。これは、ソースパネルが使用している変数をソースダッシュボードから新しいダッシュボードにコピーしていないため、SQL構文がエラーになり、データをクエリできないからです。しかし、ダッシュボードの変数が多い場合、一つ一つコピーするのは非常に面倒です。どうすればよいでしょうか?この場合、JSONモデルを使用して解決できます。
JSONモデルは、ダッシュボード設定のJSON形式です。したがって、あるダッシュボードの対応するフィールドの内容をコピーするだけで、対象のダッシュボードに該当する内容をコピーできます。変数はJSONモデルではtemplatingフィールドに対応します。その中のlistの対応する項目を、対象ダッシュボードのJSONモデルのtemplatingフィールドのlistフィールドに項目としてコピーします(「Save Changes」をクリックした後、「Save dashboard」をクリックするのを忘れないでください):

Grafanaには他にも多くの複雑な機能がありますが、Teslaのデータ可視化にはこれだけ知っていれば十分です。
四、Grafanaの設定
localhost:3000にアクセスすると、まずログインが必要です。初回のデフォルトユーザー名とパスワードはどちらもadminです。初回ログイン成功後、パスワードの設定を求められます。設定後、以下のような画面になります:

ここでは、TeslaMateがさまざまなダッシュボードを設定してくれています。左側のこの部分をクリックすると、フォルダ内の各ダッシュボードを確認できます:


任意のダッシュボード、例えばDrive Statsを開くと、対応するダッシュボード内のさまざまなパネルを確認できます:

しかし、複数のプリセットダッシュボードからパネルを選び、新しいダッシュボードにまとめたい場合もあるでしょう。その際には、前ステップ「Grafanaの概念」で説明した「パネルの複製」「変数の複製(JSONモデルの複製)」操作が必要です。各自で必要なダッシュボードを設定してください。
五、その他
Grafanaのその他の使用に関する問題を簡単に記述します。
パネルタイトルの設定:
パネル上部のEditをクリック後、右側でTitleを変更します:

地図が表示されない場合: 説明は不要ですが、特別なネットワーク環境が必要です。
自分のダッシュボードをデフォルトに設定:
以下の通り:

ダッシュボードで、あるパネルにマウスをホバーしてデータを確認する際、別のパネルでも対応する時点のデータを表示させるには?
この機能が特に有用なのは、折れ線グラフパネルで運転情報の速度を確認しながら、同時に地図パネルで対応する位置を確認したい場合です。ダッシュボード設定で解決可能で、以下の設定を2番目に変更します(デフォルトは1番目):

セキュリティについて?:TeslaMateは海外のオープンソースソフトウェアで、セキュリティは保証されています。
マシンを変更した際のデータ移行方法?:TeslaMateのドキュメントに詳細な説明があります。
公衆ネットワークからGrafanaにアクセスする方法?:DDNSを使用する必要があり、各自で調査してください。
最終的な注意点: パネルを変更した後は、右上のSaveを忘れずにクリックしてください。
ダッシュボードの自動更新設定: ダッシュボード右上で更新間隔を設定できます。大きなディスプレイに表示し、終日データの変化をリアルタイムで確認する場合などに便利です。

人生の重要な選択に直面したとき、最善の方法を誰かが教えてくれて、貴重な時間を無駄にせずに済めばと、私はよく願っています。だからこそ、自分の経験を踏まえて頻繁にブログを書き、広大なインターネットのこの小さな片隅に、私にとって一度きりの人生経験を記録し、助けを求める人々の力になれればと思っています。