『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 1740|回复: 18

[进阶教程] 2024.08 Tesla车辆HA接入教程

[复制链接]

3

主题

31

帖子

410

积分

中级会员

Rank: 3Rank: 3

积分
410
金钱
379
HASS币
0
发表于 2024-8-7 11:56:44 | 显示全部楼层 |阅读模式
本帖最后由 Emniroll 于 2024-9-9 01:10 编辑

前言:

时隔多年回来折腾HA,发现Tesla的车辆接入已经天翻地覆,过往的方法都已经不再可用,新的方法又复杂异常难以找到教程。终于在折腾了好几天之后,终于搞定。早些年第一次成功接入也是在论坛找的教程,于是决定先在此处开个坑,后续会慢慢更新具体的方法。

注意!!!该教程使用Tesla Custom Integration进行接入,不包含TeslaMate的相关教程。
由于涉及到的内容较多,此教程对新手及非程序员可能极不友好,请结合ChatGPT等工具进行配合使用。

内容繁多,会先提供流程供大家参考,后续按照流程进行教程补充。评论区有更多疑问的部分我会优先完成教程。
我提供的方法未必是最优解决方法也更不是唯一解决方法,请根据自己情况进行调整
需要准备的东西:
  • 一台有443端口的服务器(最好在外,否则需要额外解决网络问题)
  • 一个域名(最好托管在Cloudflare)
  • 解决问题的耐心
  • 一辆Tesla






流程:

    1.服务器/域名 与NginxProxyManager配置
        1.1 解析域名到服务器等基础设置
        1.2 NginxProxyManager配置SSL证书及反向代理
    2.Tesla官网的开发者注册与APP配置


    3.Tesla Vehicle Command SDK的安装

    4.两组SSL
密钥/证书的生成与配置
        4.1 Tesla校验用证书的生成
        4.2 Http Proxy服务器用证书的生成
    5.使用Python脚本进行注册与测试

    6.HA中接入






正式教程:

Tesla已经禁用了原来的api调用方式,如今开放了fleet-api用于在官方注册后的第三方开发者来进行调用。
简单来说我们的流程变成了,首先变成一个开发者,再接入HA。由于需要用到443端口,所以HA中的add on我们也无法使用。


1.1 解析域名到服务器等基础设置


由于官方注册需要用到443端口进行校验证书,并且后续的每一次操作都需要它。所以你需要一台24小时不下线的云服务器。
关于服务器我个人推荐在搬瓦工找一找最便宜的国外服务器就好,我用的是最低的配置,一年只需要8 90元。而域名则建议买一个一级域名转到Cloudflare。
不过实际上后续使用二级域名也是完全没有问题的,所以如果你已经有一个域名了,那就直接使用二级域名就好。
下载.png
添加一个A记录的通配符解析到你的服务器上


#注意,有人提到过Cloudflare的安全设置可能会影响到api的连通,未经证实


1.2 NginxProxyManager配置SSL证书及反向代理

通过你的域名连上服务器之后,你需要安装docker和NPM。下面的教程来自GPT。
安装Docker和Docker Compose
打开终端并运行以下命令以更新包列表并安装Docker和Docker Compose:
<font color="#000000"><font face="微软雅黑" color="#000000">sudo apt update
sudo apt install docker.io docker-compose -y</font></font>


创建一个Docker Compose文件
创建一个目录来存放NGINX Proxy Manager的配置和数据文件:
<font color="#000000"><font face="微软雅黑" color="#000000">mkdir -p ~/nginx-proxy-manager
cd ~/nginx-proxy-manager</font></font>


在该目录下创建一个名为 docker-compose.yml 的文件,并添加以下内容:
<font color="#000000"><font face="微软雅黑" color="#000000">version: '3'
services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    restart: unless-stopped
    ports:
      - '80:80'
      - '81:81'
      - '443:443'
    environment:
      DB_MYSQL_HOST: "db"
      DB_MYSQL_PORT: 3306
      DB_MYSQL_USER: "npm"
      DB_MYSQL_PASSWORD: "npm"
      DB_MYSQL_NAME: "npm"
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt

  db:
    image: 'mysql:5.7'
    restart: unless-stopped
    environment:
      MYSQL_ROOT_PASSWORD: 'npm'
      MYSQL_DATABASE: 'npm'
      MYSQL_USER: 'npm'
      MYSQL_PASSWORD: 'npm'
    volumes:
      - ./mysql:/var/lib/mysql</font></font>


启动NGINX Proxy Manager:在 docker-compose.yml 文件所在的目录中,运行以下命令以启动服务:
<font color="#000000"><font face="微软雅黑" color="#000000">sudo docker-compose up -d</font></font>
访问NGINX Proxy Manager管理界面
    在浏览器中访问 http://<你的服务器IP>:81,初始默认登录信息如下:
        电子邮件: [email protected]
        密码: changeme
然后进行密码修改,进入即可
进入之后,首先获取一个自动更新的SSL证书,这里需要你填入你的域名和你cloudflare中的DNS API令牌。具体方法可以网上查询,就不在这里展开。
下载 (1).png
然后如图添加Proxy Host,用来提供给Tesla官方用来证书校验。端口号填一个不用的即可,由于在docker内,几乎所有端口号都可以填。
下载.png

2.Tesla官网的开发者注册与APP配置

首先,你需要在 https://developer.tesla.cn/ 完成你的账号注册。建议使用一个与车辆持有者本身不同的账号。
在绑定了一系列验证之后,你应该会进入到如下界面。然后新增一个Application
下载 (2).png
新建一个,并且按照下方图片上的内容进行填写,Redirect Url并不需要实际存在,如图填写就好。
下载 (1).png

3.Tesla Vehicle Command SDK的安装
Github: Vehicle Command
基本上就是要安装配置这个项目,它用来中转我们发出的指令。注意是安装在服务器上,而且只完成如图的配置内容,后面的配置我们后续再完成,实际上非常简单,只需要安装好环境编译一下就好了。
config.png


#鸽了好久继续来更新
4.两组SSL密钥/证书的生成与配置
注意,我们一共需要两组SSL证书。一组用来与Tesla官方服务器通讯,一组用来运行自己的http proxy。(注:这部分因为时间有些久远,可能出现错误,有问题请与我联系)
第一组:
openssl ecparam -genkey -name prime256v1 -noout > tesla_private.pem
openssl ecparam -pubout -in tesla_private.pem -out tesla_public.pem

然后我们需要复制这个tesla_public.pem到nginx proxy manager可以访问到的地址,即之前docker中的data文件夹,然后重命名为 com.tesla.3p.public-key.pem这是需要给tesla官网验证的,需要在访问你的域名的时候可以访问到。需要在一开始配置你提交给tesla的域名里面新增如下的配置
pem.png
location /.well-known/appspecific/com.tesla.3p.public-key.pem {
    alias /data/com.tesla.3p.public-key.pem;
}
然后你尝试访问一下你的域名 然后接/data/com.tesla.3p.public-key.pem,如果配置成功可以下载到你的公钥,那这一组就完成了
第二组:这一组是用来给自己起的http proxy服务器用的,注意修改成自己想要调用的域名,比方说我用的是 tesla-command.xxxx.site,与之前在Tesla官网备案的不是同一个!
openssl req -x509 -nodes -newkey ec -pkeyopt ec_paramgen_curve:secp521r1 -pkeyopt ec_param_enc:named_curve -subj '/CN=tesla-command.xxxxx.site' -keyout key.pem -out cert.pem -sha256 -days 3650 -addext "extendedKeyUsage = serverAuth" -addext "keyUsage = digitalSignature, keyCertSign, keyAgreement"








回复

使用道具 举报

12

主题

156

帖子

1351

积分

金牌会员

Rank: 6Rank: 6

积分
1351
金钱
1195
HASS币
10
发表于 2024-8-7 12:16:53 来自手机 | 显示全部楼层
点赞加关注。
回复

使用道具 举报

146

主题

2266

帖子

6998

积分

元老级技术达人

积分
6998
金钱
4727
HASS币
30
发表于 2024-8-7 13:12:55 | 显示全部楼层
其他条件都满足,就是1辆特斯拉没有
回复

使用道具 举报

2

主题

96

帖子

737

积分

高级会员

Rank: 4

积分
737
金钱
641
HASS币
0
发表于 2024-8-9 16:55:34 | 显示全部楼层
我说怎么设置都不行了。感谢大佬
回复

使用道具 举报

11

主题

304

帖子

1633

积分

金牌会员

Rank: 6Rank: 6

积分
1633
金钱
1329
HASS币
0
发表于 2024-8-10 08:29:42 | 显示全部楼层
等了这么久,就等这个帖子了。!牛!!!!!
回复

使用道具 举报

11

主题

304

帖子

1633

积分

金牌会员

Rank: 6Rank: 6

积分
1633
金钱
1329
HASS币
0
发表于 2024-8-10 08:35:06 | 显示全部楼层
不过光是443端口的服务器,已经劝退了绝大部分人了。在国内80和443端口好像普通家庭宽带开不了。哎,我还是放弃了。控制还是用app了。现在ha接入仅用来查看相关的数据。
回复

使用道具 举报

46

主题

1654

帖子

6674

积分

论坛元老

Rank: 8Rank: 8

积分
6674
金钱
5010
HASS币
40
发表于 2024-8-13 23:08:32 | 显示全部楼层
fay000fay 发表于 2024-8-10 08:35
不过光是443端口的服务器,已经劝退了绝大部分人了。在国内80和443端口好像普通家庭宽带开不了。哎,我还是 ...

我不清楚cf开启代理可不可以访问,如果可以就好办了,使用cf的回源端口,在配合域名端口转发就可以实现443访问,或者备案,在套国内cdn,我就是这样干的
折腾精神永存,感恩感谢论坛每一位愿意分享和帮助过我的大佬,论坛有你更精彩
回复

使用道具 举报

5

主题

272

帖子

2019

积分

金牌会员

Rank: 6Rank: 6

积分
2019
金钱
1747
HASS币
0
发表于 2024-8-14 09:32:27 | 显示全部楼层
现在比亚迪。有没有啥好方法。。之前的方法总失效。
回复

使用道具 举报

0

主题

167

帖子

1351

积分

金牌会员

Rank: 6Rank: 6

积分
1351
金钱
1184
HASS币
0
发表于 2024-8-16 17:26:30 | 显示全部楼层
是现在新车更新了吗?我22年的老车还在用以前的token调用呢。
回复

使用道具 举报

5

主题

93

帖子

744

积分

高级会员

Rank: 4

积分
744
金钱
651
HASS币
0
发表于 2024-8-17 11:04:09 | 显示全部楼层
这么麻烦 劝退了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-23 00:38 , Processed in 0.099137 second(s), 34 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表