TeslaMate

💡 快速導航

TeslaMate 是我用來保存 Tesla 長期車輛資料的服務。官方 App 很適合看即時狀態,但它不是為了長期分析而設計;TeslaMate 的價值在於把行程、充電、電耗和狀態變化保留下來,讓我可以用資料回顧實際使用習慣。

這類服務和一般 Home Lab 工具不同,因為它保存的是高度個人化的行為資料。車輛資料會反映日常作息、通勤模式、常去地點、充電習慣,甚至可能推測住家與工作地點。因此公開筆記只適合記錄架構與維運原則,不適合展示真實 dashboard 或完整設定。

Important

這篇是公開筆記,所以不會記錄真實網域、內網位址、port、Tesla 帳號、token、encryption key、資料庫密碼、VIN、車牌、車名、住家/公司位置、GPS 座標、充電地點、行程截圖或 Grafana 圖表截圖。


🎯 我為什麼用它

官方 App 看的是當下,TeslaMate 看的是歷史

Tesla 官方 App 很適合回答「現在車在哪裡、電量多少、是否正在充電」。但我更想知道的是長期趨勢:

  • 每月實際開了多少里程
  • 通勤與長途行程的耗電差異
  • 家用充電和外部充電的比例
  • 不同天氣、速度和路線對電耗的影響
  • 長期電池狀態是否有明顯變化

這些不是每天都要看,但累積半年、一年後很有價值。資料量一多,就能從「感覺好像很耗電」變成「哪些情境真的比較耗電」。

讓車輛資料留在自己的系統裡

我不希望車輛使用紀錄只存在於第三方平台。TeslaMate 讓我可以把資料保留在自己的資料庫裡,並用 Grafana 做長期分析。

但資料掌握在自己手上,也代表自己要負責:

  • 服務更新
  • token / session 狀態
  • 資料庫備份
  • Grafana dashboard 維護
  • 隱私邊界與公開內容控管

🧱 在 Home Lab 裡的角色

TeslaMate 跑在 OMV 的 Docker 環境,屬於 App Layer。它不需要像 Immich 一樣貼近大量媒體資料,也不是 TrueNAS 的儲存層服務;它更像是一個長期資料收集與分析系統。

flowchart TD
    CAR[Tesla 車輛 / Tesla Cloud] --> TM[TeslaMate]
    TM --> DB[(Postgres Database)]
    TM --> MQTT[Mosquitto MQTT]
    TM --> API[TeslaMate API]
    DB --> GF[Grafana]
    USER[使用者 / 瀏覽器] --> NPM[Nginx Proxy Manager]
    NPM --> API
    NPM -. 視需求 .-> GF

部署摘要

項目目前做法
部署位置OMV / Docker
核心服務TeslaMate、Postgres、Grafana、Mosquitto、TeslaMate API
資料庫Postgres 保存車輛歷史與設定狀態
視覺化Grafana 讀取資料庫並提供 dashboard
MQTTMosquitto 作為 TeslaMate stack 內部訊息通道
對外入口由 nginx-proxy-manager 控制需要公開或反代的入口

Note

實際 compose、環境變數、掛載路徑、port、token 和 proxy host 設定都保留在私有設定裡。公開筆記只保留元件關係與維運重點。

關於 Mosquitto

目前 Mosquitto 是這個 stack 裡的內部元件,主要給 TeslaMate / API 相關流程使用。這種情境下,重點是不要把 MQTT broker 當成公開入口,也不要把它暴露給不需要的網路範圍。


📊 我實際會看的資料

TeslaMate 很容易讓人一開始被 dashboard 數量吸引,但真正有用的是能改善決策的資料。

常看的方向

類型用途
行駛里程了解每月用車量和長途比例
電耗看通勤、天氣、速度與路線對效率的影響
充電紀錄觀察家充和外部充電比例、充電時間與頻率
電池狀態長期追蹤趨勢,不用單次數值過度解讀
休眠狀態確認車輛是否能正常 sleep,避免不必要耗電

我不會公開展示的資料

  • 單趟行程路線
  • 常用停車點
  • 充電站與時間規律
  • 住家或公司附近的 geofence
  • 原始地圖、座標或 dashboard 截圖

TeslaMate 的資料很適合自己回顧,但不適合原樣公開。就算只是截圖,也可能暴露行程模式或固定地點。


🔐 隱私與安全邊界

TeslaMate 需要和 Tesla 帳號 / API 流程互動,也會保存長期車輛遙測資料,所以安全邊界要比一般 dashboard 更嚴格。

公開筆記只記錄原則

面向原則
Tesla account不公開帳號、授權流程、token 或任何恢復資訊
車輛識別不公開 VIN、車牌、車名或可識別車輛的細節
地點資料不公開 GPS、geofence、住家、公司或常去地點
Grafana不公開實際 dashboard 截圖或 query 細節
API不公開 token、endpoint、header 或實際路由

入口保護思路

TeslaMate 本體、Grafana 和 API 的暴露面要分開思考:

  • TeslaMate 管理介面不應隨意公開
  • Grafana dashboard 即使只讀也可能洩漏位置與行程
  • API 應該只開給明確需要的整合使用
  • NPM 負責入口與 HTTPS,但不是唯一安全防線

Warning

車輛資料的敏感性不只在帳號密碼,也在「行為模式」。能看見長期位置和充電紀錄的人,可能推測日常作息。


💾 備份與還原

TeslaMate 的核心價值是長期歷史資料,所以備份重點在資料庫和設定狀態。

需要保護的內容

類型說明
Postgres 資料行程、充電、狀態、位置、車輛 metadata
TeslaMate 設定授權狀態、車輛設定、地點/geofence 設定
Grafana 資料dashboard、資料來源、使用者設定
Compose / .env服務定義與必要環境變數,但必須私有保存
匯入/備份檔migration 或 restore 時使用的備份資料

還原後檢查

  1. Postgres 是否正常啟動
  2. TeslaMate 是否能連到資料庫
  3. 車輛是否恢復資料同步
  4. Grafana dashboard 是否能讀取資料
  5. Mosquitto 是否正常供 stack 內部使用
  6. TeslaMate API 是否仍能被需要的整合使用
  7. NPM 入口是否仍只暴露必要服務

備份文件要跟實際 stack 同步

我目前的 stack 包含 TeslaMate、Postgres、Grafana、Mosquitto 和 TeslaMate API。備份/還原筆記要跟著實際服務數量更新,避免災難恢復時照著舊文件漏掉元件。


📈 Grafana 與回顧習慣

TeslaMate 最有價值的地方不是 dashboard 很多,而是能定期回顧。

我會固定看的問題

  • 最近一段時間的平均電耗是否改變
  • 家充比例是否符合預期
  • 長途行程的充電策略是否需要調整
  • 車輛是否有異常耗電或無法 sleep 的情況
  • 使用習慣是否因季節或路線改變而變化

如果只把資料收起來但從不看,它就只是另一個需要維護的資料庫。對我來說,TeslaMate 的價值來自「用資料調整行為」。

公開分享時的處理方式

如果未來要分享圖表,我會先做去識別化:

  • 移除日期與時間細節
  • 避免地圖與地點標籤
  • 只保留聚合後的趨勢
  • 不放原始 dashboard 截圖
  • 不顯示車輛名稱或帳號資訊

⚠️ 我踩過的坑

只收集資料,不回顧就沒有決策價值

TeslaMate 很容易變成「資料都有,但沒有被使用」。如果沒有固定回顧,久了只會增加維護成本,不會真的改善用車習慣。

Dashboard 截圖比想像中敏感

Grafana 圖看起來只是漂亮的統計,但常常包含時間、地點、路線、充電站和車輛狀態。這些資訊單獨看可能還好,組合起來就能推測很多私人習慣。

更新前一定要先確認備份

TeslaMate 依賴資料庫,Grafana 也有自己的持久化資料。更新前如果只看 app container,可能忽略資料庫 migration、dashboard 設定或 API 整合相容性。


⬆️ 升級與維運原則

TeslaMate stack 有多個元件,升級時要當成一組服務看,而不是只更新單一 container。

升級前

  1. 確認 Postgres 備份可用
  2. 確認 Grafana 資料有備份
  3. 保留 compose 和 .env 的私有備份
  4. 閱讀 TeslaMate、Grafana、Postgres 相關變更
  5. 避免同時大改 NPM、資料庫和 TeslaMate

升級後

  1. TeslaMate Web UI 是否正常
  2. 車輛資料是否繼續更新
  3. Grafana dashboard 是否正常顯示
  4. API 整合是否仍可用
  5. Mosquitto 是否正常
  6. 備份任務是否仍然成功

日常巡檢

  • 車輛最後同步時間是否合理
  • 車輛是否能正常 sleep
  • 資料庫容量是否持續成長但可控
  • Grafana dashboard 是否仍能讀取資料
  • 對外入口是否仍只開必要服務
  • 備份檔是否能完成還原演練

結論

TeslaMate 是我 Home Lab 裡很有生活感的資料服務。它讓車輛使用從「看當下狀態」變成「理解長期趨勢」,可以幫助我回顧里程、電耗、充電習慣和車輛休眠狀態。

但它也是高隱私資料服務。公開分享時,我只記錄架構、備份範圍和維運原則,不公開任何能還原車輛身份、行程模式、地點或帳號授權的資訊。

延伸閱讀:Home Lab 總覽、OpenMediaVault、Nginx Proxy Manager、Home Assistant