注意:本工具只能运行于 mac 或者 linux, win下不支持。

1. 克隆项目到本地

https://github.com/teslamotors/vehicle-command.git

2. 项目根目录下执行命令

go get ./...
go build ./...
go install ./...
cd cmd
cd tesla-control
go build

3. 生成密钥

生成私钥

openssl ecparam -genkey -name prime256v1 -noout > private.pem

生成公钥

openssl ec -in private.pem -pubout > public.pem

3. 添加汽车公钥

./tesla-control -vin {youvin} -ble add-key-request public.pem owner cloud_key

发出命令后,成功的请求将返回以下响应。

向 {youvin} 发送添加密钥请求。通过在中央控制台上轻触 NFC 卡进行确认。

当 NFC 卡在特斯拉汽车的中央控制台上触碰时,汽车显示控制台上会出现一条消息。

特斯拉触摸屏显示一个确认按钮,用于将公钥添加到汽车。

添加钥匙后,它将出现在钥匙列表中,如果您的手机上安装了特斯拉应用程序,也会收到通知。

列出汽车配对的所有钥匙

./tesla-control -vin {youvin} -ble -debug list-keys

4. 解锁/上锁

./tesla-control -ble -vin {youvin} -key-name private.pem -key-file private.pem unlock
./tesla-control -ble -vin {youvin} -key-name private.pem -key-file private.pem lock

6. 后备箱:开,关,开关切换

./tesla-control -ble -vin {youvin} -key-name private.pem -key-file private.pem trunk-open
./tesla-control -ble -vin {youvin} -key-name private.pem -key-file private.pem trunk-close
./tesla-control -ble -vin {youvin} -key-name private.pem -key-file private.pem trunk-move

7. 前备箱开

./tesla-control -ble -vin {youvin} -key-name private.pem -key-file private.pem frunk-open

8. 闪灯

./tesla-control -ble -vin {youvin} -key-name private.pem -key-file private.pem flash-lights

9. 命令帮助

./tesla-control -h

Usage: ./tesla-control [OPTION...] COMMAND [ARG...]

Run ./tesla-control help COMMAND for more information. Valid COMMANDs are listed below.

 * Commands sent to a vehicle over the internet require a VIN and a token.
* Commands sent to a vehicle over BLE require a VIN.
* Account-management commands require a token. Available OPTIONs:
-ble
Force BLE connection even if OAuth environment variables are defined
-command-timeout duration
Set timeout for commands sent to the vehicle. (default 5s)
-connect-timeout duration
Set timeout for establishing initial connection. (default 20s)
-debug
Enable verbose debugging messages
-domain value
Domains to connect to (can be repeated; omit for all)
-key-file file
A file containing private key. Defaults to $TESLA_KEY_FILE.
-key-name name
System keyring name for private key. Defaults to $TESLA_KEY_NAME.
-keyring-debug
Enable keyring debug logging
-keyring-file-dir directory
keyring directory for file-backed keyring types (default "~/.tesla_keys")
-keyring-type type
Keyring type (file|keychain|pass). Defaults to $TESLA_KEYRING_TYPE.
-session-cache file
Load session info cache from file. Defaults to $TESLA_CACHE_FILE.
-token-file File
File containing OAuth token. Defaults to $TESLA_TOKEN_FILE.
-token-name name
System keyring name for OAuth token. Defaults to $TESLA_TOKEN_NAME.
-vin string
Vehicle Identification Number. Defaults to $TESLA_VIN. Available COMMANDs:
add-key Add PUBLIC_KEY to vehicle whitelist with ROLE and FORM_FACTOR
add-key-request Request NFC-card approval for a enrolling PUBLIC_KEY with ROLE and FORM_FACTOR
auto-seat-and-climate Turn on automatic seat heating and HVAC
autosecure-modelx Close falcon-wing doors and lock vehicle. Model X only.
body-controller-state Fetch limited vehicle state information. Works over BLE when infotainment is asleep.
charge-port-close Close charge port
charge-port-open Open charge port
charging-schedule Schedule charging to MINS minutes after midnight and enable daily scheduling
charging-schedule-cancel Cancel scheduled charge start
charging-set-amps Set charge current to AMPS
charging-set-limit Set charge limit to PERCENT
charging-start Start charging
charging-stop Stop charging
climate-off Turn off climate control
climate-on Turn on climate control
climate-set-temp Set temperature (Celsius)
drive Remote start vehicle
erase-guest-data Erase Guest Mode user data
flash-lights Flash lights
frunk-open Open vehicle frunk. Note that there's no frunk-close command!
get GET an owner API http ENDPOINT. Hostname will be taken from -config.
honk Honk horn
list-keys List public keys enrolled on vehicle
lock Lock vehicle
media-set-volume Set volume
media-toggle-playback Toggle between play/pause
ping Ping vehicle
post POST to ENDPOINT the contents of FILE. Hostname will be taken from -config.
product-info Print JSON product info
remove-key Remove PUBLIC_KEY from vehicle whitelist
rename-key Change the human-readable metadata of PUBLIC_KEY to NAME, MODEL, KIND
seat-heater Set seat heater at POSITION to LEVEL
sentry-mode Set sentry mode to STATE ('on' or 'off')
session-info Retrieve session info for PUBLIC_KEY from DOMAIN
software-update-cancel Cancel a pending software update
software-update-start Start software update after DELAY
steering-wheel-heater Set steering wheel mode to STATE ('on' or 'off')
tonneau-close Close Cybertruck tonneau.
tonneau-open Open Cybertruck tonneau.
tonneau-stop Stop moving Cybertruck tonneau.
trunk-close Closes vehicle trunk. Only available on certain vehicle types.
trunk-move Toggle trunk open/closed. Closing is only available on certain vehicle types.
trunk-open Open vehicle trunk. Note that trunk-close only works on certain vehicle types.
unlock Unlock vehicle
wake Wake up vehicle
windows-close Close all windows
windows-vent Vent all windows

参考资料

https://shankarkumarasamy.blog/2024/01/28/tesla-developer-api-guide-ble-key-pair-auth-and-vehicle-commands-part-3/

https://github.com/teslamotors/vehicle-command/blob/main/README.md

Tesla 开发者 API 指南:BLE 密钥 – 身份验证和车辆命令的更多相关文章

  1. [翻译] API测试最佳实践 - 身份验证(Authentication)

    API测试最佳实践 - 身份验证 适用等级:高级 1. 概况 身份验证通常被定义为是对某个资源的身份的确认的活动,这里面资源的身份指代的是API的消费者(或者说是调用者).一旦一个用户的身份验证通过了 ...

  2. CentOS7.4配置SSH登录密码与密钥身份验证踩坑

    简单记录,自用CentOS7.4虚拟机与ALiYunVPS,在配置ssh登录身份验证时碰到的问题. 阿里云VPS:因为在重置磁盘时选择了密钥对的身份验证方式,因此VPS中的CentOS7.4中的 /e ...

  3. .net core web API使用Identity Server4 身份验证

    一.新建一个.net core web项目作为Identity server 4验证服务. 选择更改身份验证,然后再弹出的对话框里面选择个人用户账户. nuget 安装Identity server相 ...

  4. API测试最佳实践 - 身份验证

    适用等级:高级 1. 概况 身份验证通常被定义为是对某个资源的身份的确认的活动,这里面资源的身份指代的是API的消费者(或者说是调用者).一旦一个用户的身份验证通过了,他将被授权访问那些期待访问的资源 ...

  5. 第23章 Windows身份验证 - Identity Server 4 中文文档(v1.0.0)

    在支持的平台上,您可以使用IdentityServer使用Windows身份验证对用户进行身份验证(例如,针对Active Directory).当前使用以下命令托管IdentityServer时,W ...

  6. 第14章 身份验证:使用Identity将用户添加到应用程序(ASP.NET Core in Action, 2nd Edition)

    本章包括 ASP.NET Core中web应用程序的身份验证工作原理 使用ASP.NET Core标识系统创建项目 向现有web应用添加用户功能 自定义默认ASP.NET Core标识UI 像ASPN ...

  7. ASP.NET Core Web API中带有刷新令牌的JWT身份验证流程

    ASP.NET Core Web API中带有刷新令牌的JWT身份验证流程 翻译自:地址 在今年年初,我整理了有关将JWT身份验证与ASP.NET Core Web API和Angular一起使用的详 ...

  8. Asp.Net Core 5 REST API 使用 JWT 身份验证 - Step by Step

    翻译自 Mohamad Lawand 2021年1月22日的文章 <Asp Net Core 5 Rest API Authentication with JWT Step by Step> ...

  9. Sentry 开发者贡献指南 - SDK 开发(性能监控:Sentry SDK API 演进)

    内容整理自官方开发文档 本文档的目标是将 Sentry SDK 中性能监控功能的演变置于上下文中. 我们首先总结了如何将性能监控添加到 Sentry 和 SDK, 然后我们讨论 identified ...

  10. ASP.NET Web API 2基于令牌的身份验证

    基于令牌的认证 我们知道WEB网站的身份验证一般通过session或者cookie完成的,登录成功后客户端发送的任何请求都带上cookie,服务端根据客户端发送来的cookie来识别用户. WEB A ...

随机推荐

  1. Pandas中的常用函数

    1. map.apply.applymap 参考:Pandas教程 | 数据处理三板斧--map.apply.applymap详解 在日常的数据处理中,经常会对一个DataFrame进行逐行.逐列和逐 ...

  2. SpringBoot异步任务EnableAsync

    什么是一部任务和使用场景:适用于处理log.发送邮件.短信...等 下单接口->查库存 1000 余额校验 1500 风控用户 1000 启动类里面使用@EnableAsync注解开启功能,自动 ...

  3. springboot异常解决

    问题解决 问题解释 出现这个问题表示拦截器或控制器的某个请求处理方法返回了一个与请求路径相同的视图名称,导致视图解析器循环地尝试解析并渲染这个视图,从而引发循环视图路径的异常. 问题分析 原先的jav ...

  4. 可视化—D3学习笔记小小案例记录一下

    D3全称是Data-Driven Documents数据驱动文档,是一个开源的javascript库,可以用于数据可视化图形的创建,该库更接近底层,与 g2.echarts 不同,d3 能直接操作 s ...

  5. [oeasy]python0132_变量含义_meaning_声明_declaration_赋值_assignment

    变量定义 回忆上次内容 上次回顾了一下历史 python 是如何从无到有的 看到 Guido 长期的坚持和努力   编程语言的基础都是变量声明 python是如何声明变量的呢?   变量 想要定义变量 ...

  6. AT_agc019_b 题解

    洛谷链接&Atcoder 链接. 题目简述 给定一个字符串 \(A\),可以选择区间 \([i,j]\) 翻转一次,求能得到多少本质不同的字符串.(\(A\) 的长度不超过 \(2 \time ...

  7. Node.js 处理 File

    Node.js 处理 File fs 模块 常规使用 运用递归遍历目录树 创建文件和目录 读写文件 path 模块 对于 file 的理解,此处 fs 模块 Node.js 提供了处理文件系统的内置模 ...

  8. Windows cifs共享给linux

    Windows 搜索启用或关闭Windows功能 启用cifs 共享文件并添加普通用户 解禁guest用户和设置本地策略 右键计算机 win+r输入secpol.msc 将guest删除 修改网络访问 ...

  9. 用了组合式 (Composition) API 后代码变得更乱了,怎么办?

    前言 组合式 (Composition) API 的一大特点是"非常灵活",但也因为非常灵活,每个开发都有自己的想法.加上项目的持续迭代导致我们的代码变得愈发混乱,最终到达无法维护 ...

  10. python高性能计算:cython使用openmp并行 —— 报错:undefined symbol: omp_get_thread_num

    test.pyx文件: from cython.parallel cimport parallel from openmp cimport omp_get_thread_num cpdef void ...