TeslaMate 使用ガイド

✍🏼 作成日 2023年09月06日    💡 更新日 2023年09月08日
🖥  説明:TeslaMateのインストールと使用におけるいくつかの問題について紹介します。

💡このガイドには、プログラミングに関する少しの知識と、ターミナルやコマンドラインが何であるかを理解していることが必要です。

💡このチュートリアルではDockerを使用してTeslaMateをインストールします。ソフトルーター環境の場合、ブラウザからアクセスできるようにポートマッピングなどの追加操作が必要になることがあります。私のMacは常時稼働しているため、Macシステム上のDockerにインストールしました。

💡残念ながら、TeslaMateは車両の過去の情報を取得できないため、TeslaMateインストール後の走行データしか確認できません。また、TeslaMateのサービスを停止すると関連する走行データが記録されなくなります。

はじめに

「TeslaMate」は、簡単に訳すと「テスラの相棒」という意味で、車両がテスラサーバーに報告するデータを取得し、GrafanaというWebデータ可視化ダッシュボードツールで表示するオープンソースソフトウェアです。

TeslaMateのリポジトリ:

GitHub - adriankumpf/teslamate: A self-hosted data logger for your Tesla 🚘 A self-hosted data logger for your Tesla 🚘. Contribute to adriankumpf/teslamate development by creating an account on GitHub. https://github.com/adriankumpf/teslamate#teslamate

TeslaMateのドキュメント:

Docker install | TeslaMate This document provides the necessary steps for installation of TeslaMate on a any system that runs Docker. For a walkthrough that provides the necessary steps for manual installation see Manual Install. https://docs.teslamate.org/docs/installation/docker


テスラのエンジニアはこれらのデータを収集し、車両のビッグデータ分析、ソフトウェア最適化、バッテリー充電の最適化などに利用しています。個人のオーナーがこれらの情報を取得することで、愛車の詳細なデータ(過去の走行履歴、日々の走行距離、電力消費状況、充電効率など)をよりよく理解することができます。

このブログ記事を書いた理由は、TeslaMateのドキュメントにはインストール方法(非常に簡単)しか記載されておらず、インストール後に目的のダッシュボードを表示するための設定方法が書かれていないからです。また、インターネット上のコンテンツファームはSEOテクニックに依存しており、検索上位にあるものも公式サイトの内容をコピーしたものが多く、求めている情報を見つけるのは少し困難です。現在のところ、インストールから完成品までの全プロセスを説明している記事は見当たりません。そのため、この記事では最初から説明します。

まず完成イメージ(ユーザーはパネルをカスタマイズ可能)をご覧ください:

TeslaMate 成果图

一、Dockerのインストール

冒頭で述べたように、私はDockerを使用してインストールを行います。TeslaMateのドキュメントではDockerとDocker Composeのインストールが要求されています(何であるか気にせず、とにかくインストールしてください)。Docker Desktopをインストールすれば、これら両方がインストールされます。Docker Desktopのダウンロードはこちら:

Docker Desktop: The #1 Containerization Tool for Developers | Docker Docker Desktop is collaborative containerization software for developers. Get started and download Docker Desktop today on Mac, Windows, or Linux. https://www.docker.com/products/docker-desktop/

インストール後、起動し、適当なディレクトリ(TeslaMateのすべてのファイルはこのディレクトリに保存されるため、削除しないでください)に公式のdocker-compose.ymlファイルを配置します。私は~/Developer/Docker/TeslaMateの下に配置しました。docker-compose.ymlの内容は以下の通りです:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
version: '3'

services:
teslamate:
image: teslamate/teslamate:latest
restart: always
environment:
- ENCRYPTION_KEY= #设置 TeslaMate API 加密密码,注意等号后面不要有空格
- DATABASE_USER=teslamate
- DATABASE_PASS= #设置安全数据库密码,注意等号后面不要有空格
- DATABASE_NAME=teslamate
- DATABASE_HOST=database
- MQTT_HOST=mosquitto
ports:
- 4000:4000
volumes:
- ./import:/opt/app/import
cap_drop:
- all

database:
image: postgres:15
restart: always
environment:
- POSTGRES_USER=teslamate
- POSTGRES_PASSWORD= #设置数据库密码,注意等号后面不要有空格
- POSTGRES_DB=teslamate
volumes:
- teslamate-db:/var/lib/postgresql/data

grafana:
image: teslamate/grafana:latest
restart: always
environment:
- DATABASE_USER=teslamate
- DATABASE_PASS= #设置 grafana 的数据库密码,注意等号后面不要有空格
- DATABASE_NAME=teslamate
- DATABASE_HOST=database
ports:
- 3000:3000
volumes:
- teslamate-grafana-data:/var/lib/grafana

mosquitto:
image: eclipse-mosquitto:2
restart: always
command: mosquitto -c /mosquitto-no-auth.conf
# ports:
# - 1883:1883
volumes:
- mosquitto-conf:/mosquitto/config
- mosquitto-data:/mosquitto/data

volumes:
teslamate-db:
teslamate-grafana-data:
mosquitto-conf:
mosquitto-data:

一部のサービスのパスワード設定は他のサービスのパスワードと一致させる必要があるため、上記のパスワードはすべて同じに設定することをお勧めします。また、特に注意が必要なのは=の後ろにスペースを入れないことです。その後、ターミナルを開いて以下のコマンドを実行します(各行をターミナルにコピーしてEnterキーを押してください):

1
2
3
# 假设你放上述文件的目录为 ~/Developer/Docker/TeslaMate
cd ~/Developer/Docker/TeslaMate
docker compose up -d

完了後、Docker Desktopを開くと、以下のような状態になっているはずです:

安装完成后截图

二、テスラアカウントでのログインと認証

前の手順がエラーなく完了し、すべてのサービスが「Running」状態であることを確認してください(上記のスクリーンショットの各サービス名をクリックして対応するログを確認し、errorなどのエラーがないか確認できます)。ブラウザでlocalhost:4000を開くと、API TokenとRefresh Tokenの入力を求められます。これらの取得方法は公式ドキュメントに記載されています:

Frequently Asked Questions | TeslaMate How to generate your own tokens https://docs.teslamate.org/docs/faq/#how-to-generate-your-own-tokens

ここでは3番目の方法「Tesla Auth (macOS, Linux, Windows)」を使用します。以下のリンクをクリックして自分のシステムに適したバージョンを確認し、対応するファイル(実行可能ファイル)をダウンロードしてください。

GitHub - adriankumpf/tesla_auth: Securely generate API tokens for third-party access to your Tesla. TeslaにサードパーティがアクセスするためのAPIトークンを安全に生成 - GitHub - adriankumpf/tesla_auth: TeslaにサードパーティがアクセスするためのAPIトークンを安全に生成 https://github.com/adriankumpf/tesla_auth#download

MacOSで直接ダブルクリックして開く(またはターミナルで開く)場合、実行ファイルが危険である可能性があるという警告が表示されることがあります。系统设置-隐私与安全性に移動し、「開く」をクリックしてください。開くとウィンドウが表示され、Teslaアカウントにログインするよう求められます。ログインが完了すると、TeslaのAPIトークンとリフレッシュトークンが表示されます(スクリーンショットは割愛します)。これをlocalhost:4000ページの対応する欄にコピーすると、ログインに成功します。ログイン成功時の画面は以下のようになります:

TeslaMate 授权成功界面

ここまでで認証は成功です。次にGrafanaの設定を行います。

三、Grafanaの基本概念

Grafanaは非常に強力なWebデータ可視化ダッシュボードツールで、使用は比較的複雑です。また、日本語化の方法については調査していません。幸い、Teslaのデータフィールドはシンプルなので、日本語化は必要ありません。ここでは、カスタマイズを進める上で役立つ基本概念を簡単に紹介します。

ダッシュボードとパネル

ダッシュボードは、さまざまなデータを表示する画面で、異なるパネルを表示できます。パネルとは、データベースをクエリしてデータを取得し、それを可視化する個々のモジュールです。以下の各赤枠がパネルです:

N 个 Panel 组成了一个 Dashboard

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

Panel 复制

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

粘贴刚刚复制的 Panel

変数(Variable)とJSONモデル

変数

各ダッシュボードは、パネルで使用する変数を設定できます。パネルはどのように変数を使用するのでしょうか?パネルのデータはSQLクエリによって取得され、SQLの一部の構文はGrafanaのSQLテンプレート構文です。以下は高度をクエリするSQL構文です:

1
2
3
4
5
6
7
8
9
10
SELECT
$__time(date),
ROUND(convert_m(elevation, '$alternative_length_unit')) AS elevation_[[alternative_length_unit]]
FROM
positions
WHERE
car_id = $car_id AND
$__timeFilter(date)
ORDER BY
date ASC

ここで$記号が付いているものは、事前に設定された変数です。$__timeFilterのように組み込みのものもあれば、$alternative_length_unitのようにカスタムのものもあります。カスタム変数はダッシュボードで設定された変数です。ダッシュボードの変数は、ダッシュボード右上の「Dashboard Settings」で設定します:

Variable 配置

JSONモデル

時々、あるダッシュボードからパネルをコピーして新しいダッシュボードに貼り付けた後、パネルが正常にデータを表示しないことがあります。これは、ソースパネルが使用している変数をソースダッシュボードから新しいダッシュボードにコピーしていないため、SQL構文がエラーになり、データをクエリできないからです。しかし、ダッシュボードの変数が多い場合、一つ一つコピーするのは非常に面倒です。どうすればよいでしょうか?この場合、JSONモデルを使用して解決できます。

JSONモデルは、ダッシュボード設定のJSON形式です。したがって、あるダッシュボードの対応するフィールドの内容をコピーするだけで、対象のダッシュボードに該当する内容をコピーできます。変数はJSONモデルではtemplatingフィールドに対応します。その中のlistの対応する項目を、対象ダッシュボードのJSONモデルのtemplatingフィールドのlistフィールドに項目としてコピーします(「Save Changes」をクリックした後、「Save dashboard」をクリックするのを忘れないでください):

直接复制对应 JSON

Grafanaには他にも多くの複雑な機能がありますが、Teslaのデータ可視化にはこれだけ知っていれば十分です。

四、Grafanaの設定

localhost:3000にアクセスすると、まずログインが必要です。初回のデフォルトユーザー名とパスワードはどちらもadminです。初回ログイン成功後、パスワードの設定を求められます。設定後、以下のような画面になります:

Grafana 默认 Dashboard

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

查看 TeslaMate 预设的 Dashboard

各种 Dashboard

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

Drive Stats Dashboard

しかし、複数のプリセットダッシュボードからパネルを選び、新しいダッシュボードにまとめたい場合もあるでしょう。その際には、前ステップ「Grafanaの概念」で説明した「パネルの複製」「変数の複製(JSONモデルの複製)」操作が必要です。各自で必要なダッシュボードを設定してください。

五、その他

Grafanaのその他の使用に関する問題を簡単に記述します。

パネルタイトルの設定:

パネル上部のEditをクリック後、右側でTitleを変更します:

修改 Panel 标题

地図が表示されない場合: 説明は不要ですが、特別なネットワーク環境が必要です。

自分のダッシュボードをデフォルトに設定:

以下の通り:

配置默认的 Dashboard

ダッシュボードで、あるパネルにマウスをホバーしてデータを確認する際、別のパネルでも対応する時点のデータを表示させるには?

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

セキュリティについて?:TeslaMateは海外のオープンソースソフトウェアで、セキュリティは保証されています。

マシンを変更した際のデータ移行方法?:TeslaMateのドキュメントに詳細な説明があります。

公衆ネットワークからGrafanaにアクセスする方法?:DDNSを使用する必要があり、各自で調査してください。

最終的な注意点: パネルを変更した後は、右上のSaveを忘れずにクリックしてください。

ダッシュボードの自動更新設定: ダッシュボード右上で更新間隔を設定できます。大きなディスプレイに表示し、終日データの変化をリアルタイムで確認する場合などに便利です。

- EOF -
この記事の初出: TeslaMate 使用ガイド - Xheldon Blog