特斯拉Tesla引薦連接(買(mǎi)車(chē)可減免1750元):https://gao.ee/tesla
咕咕拿不到錢(qián),但是可以拿到積分有機(jī)會(huì)能換個(gè)不銹鋼吸杯或者是車(chē)鑰匙,哈哈。
1.前言
咕咕10月份下單的Tesla Model Y 長(zhǎng)續(xù)航版本上周終于提車(chē)了。
今天就來(lái)分享一個(gè)和特斯拉相關(guān)的Docker項(xiàng)目,一個(gè)強(qiáng)大的、自托管的特斯拉數(shù)據(jù)記錄器——TeslaMate,可以全面分析特斯拉充電、續(xù)航、行駛里程等等的情況。
- 使用Elixir編寫(xiě)
- 數(shù)據(jù)存儲(chǔ)在Postgres數(shù)據(jù)庫(kù)中
- 使用Grafana進(jìn)行可視化和數(shù)據(jù)分析
- 車(chē)輛數(shù)據(jù)發(fā)布到本地MQTT代理
網(wǎng)頁(yè)端:
駕駛數(shù)據(jù)詳情:
充電統(tǒng)計(jì)數(shù)據(jù)
駕駛統(tǒng)計(jì)數(shù)據(jù)
駕駛情況
能耗
車(chē)輛狀態(tài)
充電情況
充電記錄
電池靜置耗電(Vampire Drain)情況
預(yù)計(jì)續(xù)航里程
概覽
更新情況
終身駕駛地圖
開(kāi)過(guò)的地方
2. 功能
儀表板
- 駕駛和充電報(bào)告
- 駕駛效率報(bào)告
- 消耗(凈/毛)
- 充電能量增加與能量使用
- 電池靜置耗電
- 預(yù)測(cè)的100%電量范圍(電池退化)
- 充電統(tǒng)計(jì)
- 駕駛統(tǒng)計(jì)
- 已安裝更新的歷史記錄
- 查看您的汽車(chē)何時(shí)在線或休眠
- 終身駕駛地圖
- 訪問(wèn)過(guò)的地址
通用
- 高精度駕駛數(shù)據(jù)記錄
- 無(wú)額外的電池靜置耗電:汽車(chē)會(huì)盡快進(jìn)入休眠狀態(tài)
- 自動(dòng)地址查找
- 易于集成到家庭助手(通過(guò)MQTT)
- 易于集成到Node-Red和Telegram(通過(guò)MQTT)
- 地理圍欄功能,可創(chuàng)建自定義位置
- 支持每個(gè)特斯拉賬戶多輛車(chē)
- 充電成本跟蹤
- 從TeslaFi和tesla-apiscraper導(dǎo)入
3. 相關(guān)地址
官方GitHub地址:https://github.com/teslamate-org/teslamate文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-800104.html
官方文檔:https://docs.teslamate.org/docs/installation/docker文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-800104.html
4. 搭建環(huán)境
-
服務(wù)器:咕咕這邊用的騰訊輕量應(yīng)用服務(wù)器 ,(最好選 非大陸的,而且線路還不錯(cuò)的機(jī)器)如果是小白剛開(kāi)始玩的話,也可以選擇Racknerd的高性價(jià)比服務(wù)器(注意地區(qū)選美國(guó)西部城市的)或者萊卡云的香港或者美國(guó)CN2 GIA
-
系統(tǒng):Debian 11 (DD 腳本 非必需 DD,用原來(lái)的系統(tǒng)也 OK,之后教程都是用 Debian 或者 Ubuntu 搭建~)
-
安裝好 Docker、Docker-compose(相關(guān)腳本)
-
【非必需但建議】域名一枚,并做好解析到服務(wù)器上(域名購(gòu)買(mǎi)、域名解析 視頻教程)
-
【非必需】提前安裝好寶塔面板海外版本 aapanel,并安裝好 Nginx(安裝地址)
-
【非必需本教程選用】安裝好 Nginx Proxy Manager(相關(guān)教程)
服務(wù)器建議:1核1G即可
5. 搭建視頻
5.1 YouTube
視頻地址:https://youtu.be/epjibyUPw3A
5.2 嗶哩嗶哩
嗶哩嗶哩:https://www.bilibili.com/video/BV1Fc411C7K7/
6. 搭建方式
如果你不是用的騰訊云的輕量應(yīng)用服務(wù)器,可以直接跳到 6.1 部分。
安裝系統(tǒng)(騰訊云輕量應(yīng)用服務(wù)器)

騰訊云輕量服務(wù)器最大的特點(diǎn)就是 “輕量”,相比 CVM,更適合小白上手,這邊我們之間選擇 Docker 基礎(chǔ)鏡像,就可以省去后面安裝 Docker 的步驟 (如果你非要用國(guó)內(nèi)的服務(wù)器,這邊裝的 Docker 鏡像還會(huì)幫你配置好國(guó)內(nèi)鏡像源,讓你加速訪問(wèn) docker 鏡像資源) 不建議用國(guó)內(nèi)的 。
登陸(騰訊云輕量應(yīng)用服務(wù)器)



6.1 安裝 Docker 與 Nginx Proxy Manager
可以直接參考這篇內(nèi)容:
https://blog.laoda.de/archives/nginxproxymanager/
6.2 創(chuàng)建安裝目錄
創(chuàng)建一下安裝的目錄:
sudo -i
mkdir -p /root/data/docker_data/teslamate
cd /root/data/docker_data/teslamate
vim docker-compose.yml
英文輸入法下,按 i
version: "3"
services:
teslamate:
image: teslamate/teslamate:latest
restart: always
environment:
- ENCRYPTION_KEY=G1BgNWsb2B9U5owHrntD7g7S8hrAnTf #用一個(gè)安全的密鑰來(lái)加密你的特斯拉API令牌
- DATABASE_USER=teslamate
- DATABASE_PASS=Zej19BtTE3Ydw12sgr1pdLQA9c #請(qǐng)輸入您的安全數(shù)據(jù)庫(kù)密碼!
- DATABASE_NAME=teslamate
- DATABASE_HOST=database
- MQTT_HOST=mosquitto
- TZ=Asia/Shanghai
ports:
- 4000:4000
volumes:
- ./import:/opt/app/import
cap_drop:
- all
database:
image: postgres:15
restart: always
environment:
- POSTGRES_USER=teslamate
- POSTGRES_PASSWORD=Zej19BtTE3Ydw12sgr1pdLQA9c #請(qǐng)輸入您的安全數(shù)據(jù)庫(kù)密碼!
- POSTGRES_DB=teslamate
volumes:
- ./teslamate-db:/var/lib/postgresql/data
grafana:
image: teslamate/grafana:latest
restart: always
environment:
- DATABASE_USER=teslamate
- DATABASE_PASS=Zej19BtTE3Ydw12sgr1pdLQA9c #請(qǐng)輸入您的安全數(shù)據(jù)庫(kù)密碼!
- 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-grafana-data:
簡(jiǎn)單說(shuō)一下:
-
ENCRYPTION_KEY
和DATABASE_PASS
以及POSTGRES_PASSWORD
大家記得自己更改密碼(可以用之前分享過(guò)的Vaultwarden來(lái)生成,更方便一些~)

推薦閱讀:【好玩兒的 Docker 項(xiàng)目】2023 重制版本!10 分鐘搭建一個(gè)專屬的密碼管理工具 ——Vaultwarden
注意,密碼的=后面不要有空格!
切換成英文輸入法,修改好之后,按一下 esc
,然后 :wq
保存退出。
6.3 打開(kāi)服務(wù)器防火墻(非必需)并訪問(wèn)網(wǎng)頁(yè)
打開(kāi)防火墻的端口 4000
舉例,騰訊云打開(kāi)方法如下(部分服務(wù)商沒(méi)有自帶的面板防火墻,就不用這步操作了):


類似圖中的,這邊我們填 4000
,示例填 teslamate
,確定即可(如果你在 docker-compose 文件里換了 9009
,這邊就需要填 9009
,以此類推)

此外,我們還要添加3000
,因?yàn)橐肎rafana可視化我們的數(shù)據(jù)

查看端口是否被占用(以 4000
為例),輸入:
lsof -i:4000 #查看 4000 端口是否被占用,如果被占用,重新自定義一個(gè)端口
如果啥也沒(méi)出現(xiàn),表示端口未被占用,我們可以繼續(xù)下面的操作了~
如果出現(xiàn):
-bash: lsof: command not found
運(yùn)行:
apt install lsof #安裝 lsof
如果端口沒(méi)有被占用(被占用了就修改一下端口,比如改成 4001
,注意 docker 命令行里和防火墻都要改)
理論上我們就可以輸入 http://ip:4000
和http://ip:3000
訪問(wèn)了。
其中http://ip:3000
默認(rèn)的登陸賬號(hào)和密碼均為admin
,首次登陸之后會(huì)要求你重新設(shè)置一個(gè)密碼。
如果你是部署在內(nèi)網(wǎng)環(huán)境中(比如家里的NAS或者樹(shù)莓派上),那就可以看是玩耍了!
不過(guò)這邊我們是部署在服務(wù)器上的,所以我們需要再搞一個(gè)域名,給倆網(wǎng)頁(yè)都做https,并且要給http://ip:4000
做一個(gè)簡(jiǎn)單的web驗(yàn)證,讓我們的訪問(wèn)更加安全!
這邊我們就用到了反向代理這個(gè)概念?。ú恢赖目梢钥匆幌逻@篇文章:【Docker 系列】一個(gè)反向代理神器 ——Nginx Proxy Manager)
做反向代理前,你需要一個(gè)域名!
namesilo 上面 xyz 后綴的域名一年就 7 塊錢(qián),可以年拋。(冷知識(shí),namesilo上 6位數(shù)字的xyz續(xù)費(fèi)永遠(yuǎn)都是0.99美元 = =)
如果想要長(zhǎng)期使用,還是建議買(mǎi) com 后綴的域名,更加正規(guī)一些,可以輸入 laodade
來(lái)獲得 1 美元的優(yōu)惠(不知道現(xiàn)在還有沒(méi)有)
namesilo 自帶隱私保護(hù),咕咕一直在用這家,價(jià)格也是這些注冊(cè)商里面比較低的,關(guān)鍵是他家不像其他家域名注冊(cè)商,沒(méi)有七七八八的套路?。ň褪呛笈_(tái)界面有些丑 古老 = =)
【域名購(gòu)買(mǎi)】Namesilo 優(yōu)惠碼和域名解析教程(附帶服務(wù)器購(gòu)買(mǎi)推薦和注意事項(xiàng))
我們接著往下看!
7. 反向代理
7.1 利用 Nginx Proxy Manager
在添加反向代理之前,確保你已經(jīng)完成了域名解析,不會(huì)的可以看這個(gè):域名一枚,并做好解析到服務(wù)器上(域名購(gòu)買(mǎi)、域名解析 視頻教程)

之后,登陸 Nginx Proxy Manager(不會(huì)的看這個(gè):安裝 Nginx Proxy Manager(相關(guān)教程))
注意:
Nginx Proxy Manager(以下簡(jiǎn)稱 NPM)會(huì)用到
80
、443
端口,所以本機(jī)不能占用(比如原來(lái)就有 Nginx)
直接丟幾張圖(這邊以4000
這個(gè)端口為例子,3000
也是一樣做一遍):




注意填寫(xiě)對(duì)應(yīng)的
域名
、IP
和端口
,按文章來(lái)的話,應(yīng)該是4000
IP 填寫(xiě):
如果 Nginx Proxy Manager 和 teslamate 在同一臺(tái)服務(wù)器上,可以在終端輸入:
ip addr show docker0
查看對(duì)應(yīng)的 Docker 容器內(nèi)部 IP。

否則直接填 teslamate
所在的服務(wù)器 IP 就行。
然后你就可以用諸如:tesla.gugu.ovh
和grafana.gugu.ovh
來(lái)訪問(wèn)了。


7.2 利用寶塔面板
發(fā)現(xiàn)還是有不少小伙伴習(xí)慣用寶塔面板,這邊也貼一個(gè)寶塔面板的反代配置:
直接新建一個(gè)站點(diǎn),不要數(shù)據(jù)庫(kù),不要 php,純靜態(tài)即可。
然后打開(kāi)下面的配置,修改 Nginx 的配置。


代碼如下:
location / {
proxy_pass http://127.0.0.1:4000/; # 注意改成你實(shí)際使用的端口
rewrite ^/(.*)$ /$1 break;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Upgrade-Insecure-Requests 1;
proxy_set_header X-Forwarded-Proto https;
}
此方法對(duì) 90% 的反向代理都能生效,然后就可以用域名來(lái)安裝訪問(wèn)了。
有同學(xué)可能會(huì)問(wèn),為什么不直接用寶塔自帶的反向代理功能。

也可以,不過(guò)咕咕自己之前遇到過(guò)當(dāng)有多個(gè)網(wǎng)站需要反代的時(shí)候,在這邊設(shè)置會(huì)報(bào)錯(cuò)的情況 = =
所以后來(lái)就不用了,直接用上面的方法來(lái)操作了。
8. 使用教程
建議參考視頻,或者自己嘗試一下。
后臺(tái):
如果發(fā)現(xiàn)右上角沒(méi)有控制臺(tái)
,可以在設(shè)置
里面填上Grafana的地址
設(shè)置總覽:
進(jìn)入休眠模式,可以省電,就是那個(gè)電池靜置耗電(Vampire Drain)情況。
8.1 更新 teslamate
項(xiàng)目最近更新比較頻繁,建議大家及時(shí)跟著更新。
cd /root/data/docker_data/teslamate
docker-compose pull
docker-compose up -d # 請(qǐng)不要使用 docker-compose stop 來(lái)停止容器,因?yàn)檫@么做需要額外的時(shí)間等待容器停止;docker-compose up -d 直接升級(jí)容器時(shí)會(huì)自動(dòng)停止并立刻重建新的容器,完全沒(méi)有必要浪費(fèi)那些時(shí)間。
docker image prune # prune 命令用來(lái)刪除不再使用的 docker 對(duì)象。刪除所有未被 tag 標(biāo)記和未被容器使用的鏡像
提示:
WARNING! This will remove all dangling images.
Are you sure you want to continue? [y/N]
輸入 y
利用 Docker 搭建的應(yīng)用,更新非常容易~
8.2 卸載 teslamate
同樣進(jìn)入安裝頁(yè)面,先停止所有容器。
cd /root/data/docker_data/teslamate
docker-compose down
cd ..
rm -rf /root/data/docker_data/teslamate # 完全刪除
可以卸載得很干凈。
8.3 獲取Tesla的令牌
第一次登陸之后,你會(huì)發(fā)現(xiàn)需要一個(gè)令牌和刷新令牌。

這個(gè)需要你下載對(duì)應(yīng)的app然后登陸你的特斯拉賬號(hào)來(lái)獲取。

文檔地址:https://docs.teslamate.org/docs/faq/#how-to-generate-your-own-tokens
這邊我是Mac,可以在App Store下載:
如果你是 Windows或者Linux的用戶,可以在這邊下載:https://github.com/adriankumpf/tesla_auth/releases
對(duì)應(yīng)的app
9. 常見(jiàn)問(wèn)題及注意點(diǎn)
9.1 添加簡(jiǎn)單的網(wǎng)頁(yè)驗(yàn)證
當(dāng)你第一次成功用令牌登陸網(wǎng)頁(yè)之后,你會(huì)發(fā)現(xiàn)之后你再次輸入這個(gè)域名,默認(rèn)是直接登陸的狀態(tài),這個(gè)時(shí)候就需要我們來(lái)給這個(gè)網(wǎng)頁(yè)做一個(gè)HTTP Basic Auth,就是一個(gè)簡(jiǎn)單的登陸驗(yàn)證了。
這邊我們還是用NPM來(lái)舉例子。


這一步的名字可以隨便取,這邊我以tesla
為例子:

這一步先點(diǎn)一下add
,再來(lái)設(shè)置一個(gè)用戶和密碼:

然后點(diǎn)擊保存即可

這個(gè)時(shí)候會(huì)出現(xiàn)這個(gè):
回到這邊:

再這邊下拉選項(xiàng)中選擇tesla

再點(diǎn)擊保存即可!

這樣當(dāng)你登陸的時(shí)候就會(huì)出現(xiàn)一個(gè)登陸提示框:

只有輸入了正確的賬號(hào)和密碼才能登陸了。
如果輸錯(cuò),會(huì)提示:

10. FAQ(常見(jiàn)問(wèn)題解答)
會(huì)不會(huì)頻繁的喚醒車(chē)機(jī)呢?導(dǎo)致耗電增多?
答:用的官方streaming API,不會(huì)無(wú)故喚醒和耗電,放心使用
為什么Grafana中沒(méi)有顯示消耗值?
特斯拉API沒(méi)有返回行程的消耗值。為了能夠顯示值,TeslaMate會(huì)根據(jù)記錄的(充電)數(shù)據(jù)估算消耗。在首次估算可以顯示之前至少需要兩次充電會(huì)話。充電會(huì)話必須超過(guò)10分鐘且電量狀態(tài)少于95%。每次未來(lái)的充電會(huì)話都會(huì)輕微提高估算的準(zhǔn)確性,這會(huì)追溯應(yīng)用到所有數(shù)據(jù)。
車(chē)輛沒(méi)有進(jìn)入睡眠模式
帶有媒體控制單元版本1(MCU1)的汽車(chē)需要某些設(shè)置才能入睡。在2018年3月之前生產(chǎn)的Model S和Model X配備了MCU1單元,這也可以從軟件 -> 額外車(chē)輛信息中查看。如果“娛樂(lè)處理器”是“NVIDIA Tegra”,則車(chē)輛配備了MCU1。
啟用MCU1的睡眠模式所需的設(shè)置是:
‘顯示’ -> ‘節(jié)能’ -> 開(kāi)啟
‘顯示’ -> ‘始終連接’ -> 未勾選
‘安全與保安’ -> ‘車(chē)艙過(guò)熱保護(hù)’ -> 關(guān)閉
通過(guò)這些設(shè)置,MCU1車(chē)輛應(yīng)在不活動(dòng)約15分鐘后入睡。
注意!如果您同時(shí)使用其他數(shù)據(jù)記錄器,如TeslaFi,睡眠嘗試可能會(huì)失敗,因?yàn)槠渌麛?shù)據(jù)記錄器將使汽車(chē)保持喚醒狀態(tài)。特別是調(diào)用車(chē)輛數(shù)據(jù)API將重置汽車(chē)的不活動(dòng)計(jì)時(shí)器。
11. 其他項(xiàng)目
基于這個(gè)TeslaMate,還有其他很多有意思的項(xiàng)目,有興趣的小伙伴可以自行研究一下:https://docs.teslamate.org/docs/projects
其中一個(gè)TeslaMate_Telegram_Bot應(yīng)該是結(jié)合telegram的機(jī)器人推送特斯拉系統(tǒng)更新的一個(gè)項(xiàng)目,有機(jī)會(huì)打算試試看。
12. 結(jié)尾
祝大家用得開(kāi)心,有問(wèn)題可以去 GitHub 提 Issues,也可以在評(píng)論區(qū)互相交流探討。
同時(shí),有能力給項(xiàng)目做貢獻(xiàn)的同學(xué),也歡迎積極加入到 項(xiàng)目 中來(lái),貢獻(xiàn)自己的一份力量!
最后,感謝開(kāi)發(fā)人員們的辛苦付出,讓我們能用到這么優(yōu)秀的項(xiàng)目!
參考資料
官方GitHub地址:https://github.com/teslamate-org/teslamate
官方文檔:https://docs.teslamate.org/docs/installation/docker
到了這里,關(guān)于【好玩兒的Docker項(xiàng)目】特斯拉(Tesla)車(chē)友必備!帶可視化面板!10分鐘搭建TeslaMate——一個(gè)強(qiáng)大的特斯拉數(shù)據(jù)記錄器?。麲rafana數(shù)據(jù)可視化的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!