注意:本工具只能运行于 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. Android系统启动:1-综述

    Android系统启动:综述 原文:http://gityuan.com/2016/02/01/android-booting/ 基于Android 6.0的源码剖析, Android启动过程概述 概 ...

  2. 微信小程序day04基础加强

    一.自定义组件 1.1 组件的创建与引用 首先创建组件 然后我们组件的引用分为局部和全局引用 局部引用就是在当前页面能使用,在当前页面的json文件里面配置 全局引用同样的道理,注意跟page等是同级 ...

  3. HGAME2023 week1-week2

    确实是高质量比赛,学到了很多知识.认识到了很多的不足. 任重而道远啊... hgame_week1 web Classic Childhood Game F12检查源码,打开Events.js 发现 ...

  4. JavaSe 统计字符串中字符出现的次数

    public static void main(String[] args) { // 1.字符串 String str = "*Constructs a new <tt>Has ...

  5. yb课堂 vue里面的状态管理vuex 《四十》

    文档:https://vuex.vuejs.org/zh/ 在store/下index.js import Vue from 'vue' import Vuex from 'vuex' Vue.use ...

  6. yb课堂实战之订单和播放记录事务控制 《十六》

    开启事务控制 启动类:@EnableTransactionManagement 业务类,或者业务方法@Transactional 默认事务的隔离级别和传播属性 启动类上加注解 Service层加注解

  7. 记录荒废了三年的四年.net开发的第一次面试

    对象 身在成都小微企业,前两天面试深圳老牌金蝶公司.对我这个荒废了三年光影的人来说,怎一个跨度之大了得?作为人我生第一次面试的,整个面试过程,只能用诡异来形容这次感受.而结尾也是迷迷糊糊中草草收场. ...

  8. Tiny RDM 刚上线就收获一众好评的Redis桌面开源客户端!值得拥有!

    相信对Redis有频繁操作需求的用户,大部分会选择一个顺手的图形化界面工具来代替手动命令行操作以提高效率.Tiny RDM作为一款现代化轻量级的跨平台Redis桌面客户端,为用户提供了便捷高效的Red ...

  9. 题解:P10723 [GESP202406 七级] 黑白翻转

    背景 汗流浃背了. 分析 容易想到一个显然的思路:以任意节点为根,开始遍历.如果一个节点的子树里面有黑点,那么它必须保留,否则如果它是白点,则可以删去. 但这个方法很容易举出反例: 在这颗树中,如果以 ...

  10. vue小知识~注入provide!

    注入表示的是将该组件的相关值,方法,实例向后代组件注入. 祖先元素中定义注入: export default { provide() { return { provideName: provideVa ...