이 가이드는 약간의 프로그래밍 지식이 필요하며, 터미널과 명령줄이 무엇인지 알아야 합니다.
이 튜토리얼은 Docker를 사용하여 TeslaMate를 설치하는 방법을 설명합니다. 만약 소프트 라우터 환경에서 작업 중이라면, 브라우저에서 접근할 수 있도록 포트 매핑과 같은 추가 작업이 필요할 수 있습니다. 저는 Mac 컴퓨터를 항상 켜놓고 사용하기 때문에 Mac 시스템의 Docker에 설치했습니다.
아쉽게도 TeslaMate는 차량의 과거 정보를 가져올 수 없습니다. 따라서 TeslaMate를 설치한 이후의 차량 주행 데이터만 확인할 수 있으며, TeslaMate 서비스를 종료하면 관련 주행 데이터를 기록할 수 없습니다.
서문
"TeslaMate"는 간단히 번역하면 "테슬라 동반자"입니다. 이는 오픈 소스 소프트웨어로, 차량이 테슬라 서버에 보고하는 데이터를 가져와 Grafana라는 웹 데이터 시각화 대시보드 도구로 표시합니다.
TeslaMate 저장소:
TeslaMate 문서:
테슬라 엔지니어들은 이러한 데이터를 수집하여 차량의 빅데이터 분석, 소프트웨어 최적화, 배터리 충전 최적화 등에 활용합니다. 우리 개인 차주들은 이러한 정보를 통해 자신의 차량에 대한 상세한 데이터(예: 과거 주행 기록, 일일 주행 거리, 전력 소모량, 충전 효율 등)를 더 잘 이해할 수 있습니다.
이 블로그 글이 작성된 이유는 TeslaMate 문서가 설치 방법만 설명하고(매우 간단함), 설치 후 원하는 대시보드를 보기 위해 어떻게 구성해야 하는지 알려주지 않기 때문입니다. 또한 인터넷의 일부 콘텐츠 팜은 SEO 기술을 통해 상위에 노출되지만, 대부분은 공식 문서 내용을 복사한 것뿐입니다. 원하는 정보를 찾는 것은 다소 어려웠으며, 저는 설치부터 완성까지 설명하는 어떤 글도 보지 못했습니다. 따라서 이 글은 처음부터 설명합니다.
먼저 결과물 사진을 보여드립니다(사용자는 패널을 커스터마이즈할 수 있음):

1. Docker 설치
서두에서 언급했듯이, 저는 Docker를 사용하여 설치했습니다. TeslaMate 문서는 Docker와 Docker Compose를 설치할 것을 요구합니다(무엇인지 몰라도 일단 설치하세요). 우리는 Docker Desktop만 설치하면 이 둘을 모두 설치할 수 있습니다. Docker Desktop 다운로드 링크는 다음과 같습니다:
설치 후 실행하고, 임의의 디렉토리(TeslaMate의 모든 파일이 이 디렉토리에 저장되며 삭제하지 마세요)를 선택한 후 공식 docker-compose.yml 파일을 넣습니다. 저는 ~/Developer/Docker/TeslaMate 아래에 배치했으며, docker-compose.yml 내용은 다음과 같습니다:
1 | |
일부 서비스의 비밀번호 설정은 다른 서비스의 비밀번호와 일치해야 합니다. 따라서 위의 모든 비밀번호를 동일하게 설정하는 것이 번거로움을 줄일 수 있습니다. 특히 = 뒤에 공백이 없어야 합니다. 이후 터미널을 열고 다음 명령을 실행합니다(각 줄을 복사한 후 터미널에 붙여넣고 엔터를 누르세요):
1 | |
완료 후 Docker Desktop을 열면 다음과 같은 화면이 나타납니다:

2. 테슬라 계정 로그인 및 권한 부여
위 단계가 오류 없이 완료되면 모든 서비스가 Running 상태인지 확인하세요(위 스크린샷의 각 서비스 이름을 클릭하여 해당 로그를 확인하고 error와 같은 오류가 있는지 확인할 수 있습니다). 브라우저에서 localhost:4000을 열면 API Token과 Refresh Token을 입력하라는 메시지가 표시됩니다. 이 두 가지를 얻는 방법은 공식 문서에 설명되어 있으며, 여기에서 확인할 수 있습니다:
여기서 저는 세 번째 방법인 "Tesla Auth (macOS, Linux, Windows)"를 사용했습니다. 다음 링크를 클릭하여 자신의 시스템에 맞는 버전을 확인하고 해당 파일(실행 가능한 파일)을 다운로드하세요.
MacOS에서 직접 더블 클릭으로 열거나(또는 터미널에서 열 경우) 실행 파일이 위험할 수 있다는 경고가 표시되면, 系统设置-隐私与安全性로 이동하여 "계속 열기"를 클릭하면 됩니다. 열리면 Tesla 계정 로그인 창이 나타나며, 로그인 완료 후 페이지에 Tesla의 API 토큰과 Refresh Token이 표시됩니다(스크린샷은 생략). 이를 localhost:4000 페이지의 해당 위치에 복사하면 로그인에 성공하며, 성공 화면은 다음과 같습니다:

이제 인증이 완료되었으며, 다음으로 Grafana를 구성합니다.
三、Grafana 기본 개념
Grafana는 매우 강력한 웹 기반 데이터 시각화 대시보드 도구로, 사용법이 상대적으로 복잡하며 한글화 방법은 연구하지 않았습니다. 다행히 Tesla 데이터 필드는 간단하여 한글화가 필요 없습니다. 여기서는 사용자 정의를 위해 관련 개념을 간단히 소개합니다.
Dashboard와 Panel
Dashboard는 다양한 데이터를 표시하는 인터페이스로, 다른 Panel을 표시할 수 있습니다. Panel은 데이터베이스에서 데이터를 조회한 후 시각화하는 모듈로, 아래 각 빨간 상자는 하나의 Panel입니다:

Panel은 다른 Dashboard 간에 복사할 수 있으며 방법은 다음과 같습니다:

복사 후 다른 Dashboard에 붙여넣을 수 있습니다. Dashboard 오른쪽 상단의 Add Panel 버튼을 클릭하거나(또는 처음 Dashboard를 생성할 때)(이전 단계에서 Panel에 Copy를 클릭하지 않았다면 아래 그림의 네 번째 "Paste from Clipboard"가 나타나지 않음) 다음과 같은 새 Panel이 생성됩니다:

Variable(변수) 및 JSON Model
Variable
각 Dashboard는 Panel에서 사용할 Variable을 설정할 수 있습니다. Panel이 Variable을 어떻게 사용할까요? Panel의 데이터는 SQL 쿼리를 통해 조회되며, SQL 문법 중 일부는 grafana의 SQL 템플릿 문법입니다. 다음은 고도(altitude)를 조회하는 SQL 문법입니다:
1 | |
여기서 $ 기호가 붙은 것은 미리 정의된 Variable입니다. 일부는 내장된 변수(예: $__timeFilter)이고, 일부는 사용자 정의 변수(예: $alternative_length_unit)입니다. 사용자 정의 변수는 Dashboard에서 설정한 Variable입니다. Dashboard의 Variable은 Dashboard 오른쪽 상단의 Dashboard Setting에서 구성할 수 있습니다:

JSON Model
때로는 Dashboard에서 Panel을 복사해 새 Dashboard에 붙여넣었을 때 Panel이 정상적으로 데이터를 표시하지 않는 경우가 있습니다. 이는 원본 Panel에서 사용한 Variable을 원본 Dashboard에서 새 Dashboard로 복사하지 않아 SQL 문법 오류가 발생하고 데이터를 조회할 수 없기 때문입니다. 하지만 Dashboard의 Variable이 많다면 하나씩 복사하는 것이 매우 번거롭습니다. 이때 JSON Model을 사용하면 해결할 수 있습니다.
JSON Model은 Dashboard 구성의 JSON 형식이므로, 특정 Dashboard의 해당 필드 내용을 복사해 대상 Dashboard에 붙여넣기만 하면 됩니다. Variable은 JSON Model에서 templating 필드에 해당하며, list 내 해당 항목을 대상 Dashboard의 JSON Model templating 필드의 list 필드에 항목으로 추가하면 됩니다(Save Changes를 클릭한 후 Save dashboard를 클릭하는 것을 잊지 마세요):

Grafana에는 더 많은 복잡한 기능이 있지만, Tesla 데이터 시각화에는 이 정도만 알아도 충분합니다.
四、Grafana 구성
localhost:3000에 접속한 후 먼저 로그인해야 합니다. 처음에는 기본 사용자 이름과 비밀번호가 모두 admin이며, 첫 로그인 성공 후 비밀번호를 설정하라는 메시지가 표시됩니다. 설정 후 접속하면 다음과 같은 화면이 나타납니다:

여기서 TeslaMate는 이미 다양한 대시보드를 구성해 놓았습니다. 왼쪽의 이 부분을 클릭하면 폴더 디렉토리 아래의 각 대시보드를 확인할 수 있습니다:


아무거나 하나 클릭해 보세요, 예를 들어 Drive Stats를 선택하면 해당 대시보드의 다양한 패널을 볼 수 있습니다:

하지만 우리는 여러 개의 이러한 사전 설정된 대시보드의 패널을 우리의 필요에 맞춰 새로운 대시보드로 통합하고 싶을 것입니다. 이 경우에는 이전 단계인 'Grafana 개념’에서 설명한 패널 복사, 변수 복사(JSON 모델 복사) 작업이 필요합니다. 여러분은 자신의 요구에 맞는 대시보드를 직접 구성할 수 있습니다.
5. 기타
여기에는 Grafana의 다른 몇 가지 사용 문제가 있습니다. 간단히 설명하겠습니다.
패널 제목 설정:
패널 상단의 Edit을 클릭한 후 오른쪽에서 Title을 수정하면 됩니다:

지도가 표시되지 않음: 설명이 필요 없습니다. VPN 환경이 필요합니다.
자신의 대시보드를 기본값으로 설정:
다음과 같이 설정하세요:

대시보드에서 마우스를 패널 위에 올렸을 때 다른 패널도 해당 시간대의 데이터를 동시에 표시하도록 하는 방법?
이 기능은 주로 선 그래프 패널의 운전 정보에서 속도를 확인할 때, 다른 지도 패널에서 해당 위치를 동시에 확인하고 싶을 때 사용됩니다. 대시보드 설정을 통해 해결할 수 있으며, 아래 그림에서 두 번째 옵션으로 설정하면 됩니다(기본값은 첫 번째입니다):

보안성? TeslaMate는 해외 오픈소스 소프트웨어로, 보안성은 보장됩니다.
기기를 변경할 때 데이터를 어떻게 마이그레이션하나요? TeslaMate 문서를 참조하시면 자세한 설명이 있습니다.
공인망에서 Grafana에 어떻게 접근하나요? DDNS를 사용해야 합니다. 이 부분은 직접 탐구해 보세요.
궁극의 알림: 패널을 수정한 후에는 반드시 오른쪽 상단의 Save를 클릭하세요.
대시보드를 주기적으로 새로 고치는 방법: 대시보드 오른쪽 상단에서 새로 고침 간격을 설정할 수 있습니다. 일반적으로 큰 디스플레이에 올려놓고 하루 종일 실시간으로 데이터 변화를 확인할 때 사용합니다.

저는 인생의 중요한 선택의 기로에 섰을 때, 누군가 최선의 방법을 알려주어 소중한 시간을 헛되이 보내지 않기를 바라곤 합니다. 그런 마음으로 저는 자주 블로그를 쓰며, 광활한 인터넷의 이 작은 구석에 제게는 단 한 번뿐인 인생 경험을 기록하여 도움이 필요한 분들에게 도움이 되기를 바랍니다.