注意:本工具只能运行于 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. 深度对比!瑞芯微RK3562J比RK3568J好在哪里?

    作为瑞芯微的明星产品--RK3568J,凭借其出色的性能及丰富的外设接口成为国内众多工业客户的最佳选择. 随着RK3568J的大规模应用,很多客户开始针对RK3568J的价格偏高.功耗偏高等问题提出了 ...

  2. dig 命令详解及使用示例

    一.背景知识 CNAME CNAME 是 Canonical Name 的缩写,它是 DNS(域名系统)记录的一种类型.CNAME 记录用于将一个域名映射(别名)到另一个域名.换句话说,当你访问一个设 ...

  3. css 手稿

    CSS 网页的布局和外观的显示样式 没有一张图解决不了的事:https://www.processon.com/mindmap/5e368a8be4b0d27af184e118 选择器 * 通配符选择 ...

  4. 运行前端React框架出现node Error: bind EADDRINUSE null的解决方法

    运行前端React代码时,出现这样的错误: node Error: bind EADDRINUSE null 后来发现端口号冲突,换个端口号后问题就可以解决了.

  5. git http(s) 保存用户密码

    git 常用配置 git记住密码 1.设置记住密码(默认15分钟): git config --global credential.helper cache 2.如果想自己设置时间,可以这样做: gi ...

  6. webpack4.15.1 学习笔记(八) — 缓存(Caching)

    目录 输出文件名(Output Filenames) 缓存第三方库 将 js 文件放到一个文件夹中 webpack 打包模块化后的应用程序,会生成一个可部署的 /dist目录,只要 /dist 目录中 ...

  7. oeasy教您玩转linux010204-figlet

    我们来回顾一下 上一部分我们都讲了什么? 用 apt 查询并下载了 linuxlogo 用字符画出了 linux 发行版的 logo 还查了手册,通过改参数控制输出信息 我们还能玩点什么呢? 这个实验 ...

  8. 使用Cloudflare Worker加速docker镜像

    前言 开发者越来越难了,现在国内的docker镜像也都️了,没有镜像要使用docker太难了,代理又很慢 现在就只剩下自建镜像的办法了 GitHub上有开源项目可以快速搭建自己的镜像库,不过还是有点麻 ...

  9. 安卓网络通信之 ​HttpURLConnection​ 文件上传

    文件上传分为二步,第一步选择文件 代码思路是: chooseFile()​方法用于创建一个Intent对象,并设置Intent的Action为ACTION_GET_CONTENT,这表示获取内容,即选 ...

  10. mybatisplus实现一次多表联查+分页查询

    众所周知,mybatisplus非常好用,但是他不好用就不好用在不可以多表联查.在mybatisplusjoin中提供了联查的方法,那个参数我没看懂Orz 不过,历经千辛万苦,我通过xml终于写出来了 ...