teslamate-notify Docs

Interactive Guide

应用部署向导

按照步骤顺序推进。您可以利用底部的『下一步』或是侧边栏进行步骤跳转与回溯。


这个工具能做什么

把 TeslaMate 收到的数据再加工一层,挑出你真正关心的事件,然后推送到手机。下面是它会替你盯的几件事:

停在收费停车场时,下一个计费周期开始前几分钟提醒你,免得超时多扣一段费用。

车停着不动也会持续盯电量。如果待机时段掉电幅度异常(哨兵长开、漏电之类),下次启动车辆时通知你。

每次熄火停好车,自动汇总这趟的里程、能耗、起点终点,发一条通知给你。

充电结束后通知你(充满或者中途断开都算),告诉这次充进了多少电、用了多久。

下车走开后,如果发现车没锁、窗户没关、前后备箱没盖,过几分钟提醒你回去处理。

有新固件可装时通知你;安装完成再发一次确认。胎压偏低也会报。

除了 iOS App,同一条事件可以同时发到飞书、Telegram、钉钉、Discord。开几个就发几路。

App 里能直接看车的实时状态:电量、位置、车内温度、有没有在充电、有没有进哨兵模式。

注意:如果你的服务器已经部署过 TeslaMate,并且 Grafana 页面可以正常打开、登录和访问数据源,请直接点击底部『下一步』跳过此步骤,进入 Notify 安装流。

部署 TeslaMate (服务端前置)

官方参阅:如欲深入各类进阶配置,请务必参阅 TeslaMate 官方 Docker 部署文档

在安装 notify 服务之前,你的服务器上必须已经稳定运行着 TeslaMate 本体,并且 Grafana 必须可以正常访问。Notify 的 App 侧连接依赖 Grafana 数据源代理,因此只有 TeslaMate 本体可用还不够。

建库与配表方案

创建一个文件夹,并编写你的核心 docker-compose.yml 文件:

bash & yaml
mkdir teslamate && cd teslamate
nano docker-compose.yml

# ------------- yaml 内容 -------------
services:
  teslamate:
    image: teslamate/teslamate:latest
    restart: always
    environment:
      - ENCRYPTION_KEY=secretkey #replace with a secure key to encrypt your Tesla API tokens
      - DATABASE_USER=teslamate
      - DATABASE_PASS=password #insert your secure database password!
      - DATABASE_NAME=teslamate
      - DATABASE_HOST=database
      - MQTT_HOST=mosquitto
    ports:
      - 4000:4000
    volumes:
      - ./import:/opt/app/import
    cap_drop:
      - all

  database:
    image: postgres:18-trixie
    restart: always
    environment:
      - POSTGRES_USER=teslamate
      - POSTGRES_PASSWORD=password #insert your secure database password!
      - POSTGRES_DB=teslamate
    volumes:
      - teslamate-db:/var/lib/postgresql

  grafana:
    image: teslamate/grafana:latest
    restart: always
    environment:
      - DATABASE_USER=teslamate
      - DATABASE_PASS=password #insert your secure database password!
      - 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:

在存放 docker-compose.yml 的目录下执行拉取启动即可:docker compose up -d

部署 Notify 服务

当你的 TeslaMate 正常连上爱车并拉起数据流后,下载脚手架并执行 install.sh 即可。

下载脚手架并安装

标准情况下只需要按顺序执行下面三行命令。

bash
curl -fsSL https://install.cloakmere.cc/setup.sh | bash
cd teslamate-notify
./install.sh

# 如果你给前面的组合服务设定了特殊的 docker 项目名,再改用:
# ./install.sh --project teslamate

这两条脚本到底做了什么

不想黑箱执行?下面是两个脚本各自做的事,按顺序列出来。

setup.sh(脚手架下载)

  1. 在当前目录建一个 teslamate-notify/ 文件夹
  2. install.cloakmere.cc 拉两个文件:install.shuninstall.sh
  3. 给它们加可执行权限
  4. 提示你 cd 进去执行 ./install.sh

仅此而已。整个过程不动你机器上任何已经运行的服务。

install.sh(实际部署)

  1. 扫描机器上正在运行的 docker 容器,找到同时带 teslamatemosquitto 的那个 compose 项目(多套时可用 --project 指定)
  2. 从 TeslaMate 容器的环境变量里直接读出 MQTT 用户名/密码、PostgreSQL 连接信息,自动写入 notify 的配置——你不需要复制粘贴
  3. 在 TeslaMate 同一个项目目录下生成 docker-compose.teslamate-notify.yml(伴生文件,不修改你原有的 docker-compose.yml),让 notify 加入同一个 docker 网络
  4. ghcr.io/cloakmere/teslamate-notify:latest 镜像,启动 notify 容器(不发布宿主机端口,只在 Docker 网络内开放 9431)
  5. 自动连接到同项目的 Grafana 容器,注册一个名为 teslamate-notify 的 datasource——这样 iOS App 可以通过 Grafana 代理访问 notify,你不用再单独开放公网端口或配置反代
升级也走它:之后想升到新版本,只要再跑 ./install.sh --upgrade。这个模式只拉新镜像 + 重建容器,不会动你手改过的 compose 文件(飞书 webhook、地图 key、自定义阈值都保留)。如果想完全用默认配置重置,用 ./install.sh --reset

持久化数据存在 docker named volume teslamate-notify-data 里。任何 install.sh --upgrade / docker compose pull 都不会动这个卷,升级不丢数据。

卸载

不想用了,或者想重装一次,跑卸载脚本就行:

bash
# 完全卸载(停容器 + 删数据卷 + 删伴生 compose 文件 + 删镜像)
./uninstall.sh

# 卸载但保留 notify 自己的状态数据卷(下次重装能接着用)
./uninstall.sh --keep-volume

# 不交互直接执行(脚本默认会让你确认一次)
./uninstall.sh -y

卸载脚本会做哪些事

  1. 找到 notify 所在的 docker compose 项目
  2. 停止并删除 teslamate-notify 容器
  3. 删除 teslamate-notify-data 数据卷(除非你加了 --keep-volume
  4. 删除生成的 docker-compose.teslamate-notify.yml 文件
  5. 从 Grafana 里清掉那个 teslamate-notify datasource
  6. 删除 ghcr.io/cloakmere/teslamate-notify 镜像(除非你加了 --keep-image
不会动到的东西:TeslaMate 容器、它的 PostgreSQL 数据、MQTT、Grafana、你原本的 docker-compose.yml 文件——卸载脚本只清 notify 自己创建的资源,不会碰你的车辆数据和 TeslaMate 部署

常见维护操作

不需要卸载、只想换个状态时:

  • 升级到新版./install.sh --upgrade —— 只拉新镜像,保留所有手改配置
  • 重置 compose 配置./install.sh --reset —— 用默认值覆盖 compose(会丢失手改的 env)
  • 查看当前版本docker exec teslamate-teslamate-notify-1 /app/teslamate-notify version
  • 看运行日志docker logs -f teslamate-teslamate-notify-1
  • 备份状态数据docker run --rm -v teslamate-notify-data:/data -v "$PWD":/backup alpine tar czf /backup/notify-state-$(date +%F).tar.gz -C /data .