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

 找回密码
 立即注册
楼主: fineemb

[插件集成] LK汽车正式接入HASS(更新Node red版本)

[复制链接]

16

主题

217

帖子

2204

积分

论坛技术达人

积分
2204
金钱
1952
HASS币
140
 楼主| 发表于 2020-10-21 10:01:57 | 显示全部楼层
needs 发表于 2020-10-21 09:23
上面用户名,下面密码都正常显示的,debug昨天就开了,看源码好像是awit这个异步没返回就直接去if not  tm ...

看看领克app能不能连上. 如果app连不上这个也是没法用的
回复

使用道具 举报

11

主题

242

帖子

1901

积分

论坛技术达人

积分
1901
金钱
1649
HASS币
40
发表于 2020-10-21 10:02:13 | 显示全部楼层
然后我是领克03,以前抓包的时候看了下,接口登录地址,token获取地址和你那的不一样
def grant_token(self):
        """ 获取Token """
        return self.post(
            url = "https://sso.lynkco.com/uaa/obtainToken",
            json = {
                "device_id": "08bc8ccb41dd42d3aae5569ae2fe78f6",
                "type":"2",
                "category":"10",
                "username": self.UserName,
                "password": self.PassWord
            },
            headers = {
                "Host": "sso.lynkco.com",
                "Content-Type": "application/json",
                "Cookie": "appKey=557284c1-c972-4e14-82f7-092897a5b3da",
                "Connection": "keep-alive",
                "Accept": "*/*",
                "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 8_3 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Version/8.0 Mobile/12F70 Safari/600.1.4",
                "Accept-Language": "zh-Hans-CN;q=1",
                "Content-Length": "122",
                "Accept-Encoding": "br,gzip,deflate"
            }
        )
    def getAuthCode(self):
        """ 返回获取AuthCode """
        if self.token:
            now = time.time()
            if self.token_expires - now > 60:
                json = self.grant_AuthCode()
                self.AuthCode = json["code"]
                return self.AuthCode
        json = self.getToken()
        json = self.grant_AuthCode()
        self.AuthCode = json["code"]
        return self.AuthCode

    def grant_AuthCode(self):
        """获取认证码"""
        return self.post(
            url = "https://sso.lynkco.com/oauth2/appcode?access_token=" + self.token,
            headers = {
                "Host": "sso.lynkco.com",
                "Content-Type": "application/json",
                "Cookie": "last-sid=" + self.token + "; sid=" + self.token + "; appKey=557284c1-c972-4e14-82f7-092897a5b3da; acw_tc=314fef1815508059561902533e63d6c42ca0f98d6c78b00379916f49f7",
                "Connection": "keep-alive",
                "Accept": "*/*",
                "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 8_3 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Version/8.0 Mobile/12F70 Safari/600.1.4",
                "Accept-Language": "zh-Hans-CN;q=1",
                "Content-Length": "146",
                "Accept-Encoding": "br, gzip, deflate"
            },
            json = {
                "response_type":"code",
                "scope":"openid",
                "redirect_uri":"http://www.abcde.com",
                "client_id":"1223fa55b0e04d39bd395b12db16d6ab",
                "state":"test123"
            }

        )

    def getCarToken(self):
        """ 返回获取汽车Token """
        if self.AuthCode:
            if self.grant_CarToken:
                now = time.time()
                if self.CarToken_expires - now > 60:
                    return self.grant_CarToken
            json = self.grant_CarToken()
            self.CarToken = json['data']["accessToken"]
            self.UserId = json['data']['userId']
            self.CarToken_expires = time.time() + int(json['data']['expiresIn'])
            return self.CarToken
        json = self.getAuthCode()
        json = self.grant_CarToken()
        self.CarToken = json['data']["accessToken"]
        self.UserId = json['data']['userId']
        self.CarToken_expires = time.time() + int(json['data']['expiresIn'])
        return self.CarToken

    def grant_CarToken(self):
        """获取汽车Token"""
        return self.post(
            url = "https://api.xchanger.cn/auth/account/session?identity_type=lid",
            headers = {
                "Host": "api.xchanger.cn",
                    "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 8_3 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Version/8.0 Mobile/12F70 Safari/600.1.4",
                    "X-APP-ID": "lynkco",
                    "X-DEVICE-MODEL": "iPhone",
                    "X-DEVICE-TYPE": "mobile",
                    "X-DEVICE-MANUFACTURE": "APPLE",
                    "X-AGENT-TYPE": "ios",
                    "X-CLIENT-ID": "APPLE0000APP00IPHONE191Q05659476",
                    "Content-Length": "86",
                    "PLATFORM": "CMA",
                    "X-ENV-TYPE": "production",
                    "X-SIGN": "jGBWHFziVx55QHEMBT/jhqvl3AfyV2/E7hrDUrDwWfntTJDhgxr5ONtetV7jfUhmLFZEgiqx49hf5bGn2EjN43TzZ9Jf8HIzJHAOG8VFcyTHTDYu1wf33wXSdB0oQDHHPw3zWu1iigxIW4e4LjX0sF6ohIWXrb0H40nugCQJ7h4=",
                    "Connection": "keep-alive",
                    "Accept-Language": "zh-cn",
                    "X-AGENT-VERSION": "12.1.1",
                    "Accept": "application/json;responseformat=3",
                    "Content-Type": "application/json",
                "Accept-Encoding": "br, gzip, deflate",
                "X-DEVICE-BRAND": "IOS",
                "X-DEVICE-IDENTIFIER": "EA3447D6-1AD9-498F-BE8F-9689815CC66D",
                "X-OPERATOR-CODE": "LYNKCO"
            },
            json = {
                "authCode": self.AuthCode,
                "redirectUri": "http://www.abcde.com"
            }
        )

    def getCarInfo(self):
        """返回汽车信息"""
        if self.CarToken_expires:
            now = time.time()
            if self.CarToken_expires - now > 60:
                json = self.grant_CarInfo()
                return json
            json = self.getCarToken()
            json = self.grant_CarInfo()
            return json
        json = self.getCarToken()
        json = self.grant_CarInfo()
        self.EngineStatus = json['data']['vehicleStatus']['basicVehicleStatus']['engineStatus']
        return json



    def grant_CarInfo(self):
        """获取汽车信息"""
        return self.get(
            url = "https://api.xchanger.cn/geelyTCAccess/tcservices/vehicle/status/L6T7824Z6JZ047074?latest=Local&target=basic%2Cmore&userId=" + self.UserId,
            headers = {
                "Host": "api.xchanger.cn",
                    "X-ENV-TYPE": "production",
                    "Accept": "application/json;responseformat=3",
                    "Authorization": self.CarToken,
                    "Accept-Encoding": "br, gzip, deflate",
                    "Accept-Language": "zh-cn",
                "PLATFORM": "CMA",
                "X-APP-ID": "lynkco",
                "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 8_3 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Version/8.0 Mobile/12F70 Safari/600.1.4",
                "X-CLIENT-ID": "APPLE0000APP00IPHONE191Q05659476",
                "X-OPERATOR-CODE": "LYNKCO",
                "Connection": "keep-alive",
                "X-DEVICE-TYPE": "mobile"
            }
        )

回复

使用道具 举报

11

主题

242

帖子

1901

积分

论坛技术达人

积分
1901
金钱
1649
HASS币
40
发表于 2020-10-21 10:03:38 | 显示全部楼层
fineemb 发表于 2020-10-21 10:01
看看领克app能不能连上. 如果app连不上这个也是没法用的

app上可以正常登录操作
回复

使用道具 举报

16

主题

217

帖子

2204

积分

论坛技术达人

积分
2204
金钱
1952
HASS币
140
 楼主| 发表于 2020-10-21 13:57:36 | 显示全部楼层
本帖最后由 fineemb 于 2020-10-21 15:50 编辑
needs 发表于 2020-10-21 10:03
app上可以正常登录操作

你下载GKUI 吉利官方APP利用的是GKUI的接口
然后注册一下, 用GKUI的手机号和密码
只是注册,不要使用.(新版领克也不能使用)
回复

使用道具 举报

6

主题

64

帖子

169

积分

注册会员

Rank: 2

积分
169
金钱
105
HASS币
0
发表于 2020-10-21 14:40:08 | 显示全部楼层
csc 发表于 2020-10-20 19:13
hass有了就是缺部汽车

同求。
回复

使用道具 举报

11

主题

242

帖子

1901

积分

论坛技术达人

积分
1901
金钱
1649
HASS币
40
发表于 2020-10-21 17:37:49 | 显示全部楼层
fineemb 发表于 2020-10-21 13:57
你下载GKUI 吉利官方APP利用的是GKUI的接口
然后注册一下, 用GKUI的手机号和密码
只是注册,不要使用.(新版 ...

可以了,然后领克03很多监控都没有,导致各种报key_error,已经修改完成,到时候完善一份PR给你
回复

使用道具 举报

16

主题

217

帖子

2204

积分

论坛技术达人

积分
2204
金钱
1952
HASS币
140
 楼主| 发表于 2020-10-21 23:31:48 | 显示全部楼层
本帖最后由 fineemb 于 2020-10-21 23:38 编辑
needs 发表于 2020-10-21 17:37
可以了,然后领克03很多监控都没有,导致各种报key_error,已经修改完成,到时候完善一份PR给你 ...

01有两种车机,我这个是csp平台, 你们的可能是tsp平台,
这个其中一个车外温度的值计算方法不一样, tsp的要经过计算
公式是这样的(exteriorTemp-Math.floor(exteriorTemp/1000)*1000+100)/10
然后好像车门状态这部分也是不一样的
回复

使用道具 举报

18

主题

267

帖子

2644

积分

论坛技术达人

积分
2644
金钱
2337
HASS币
190
发表于 2020-10-21 23:55:55 | 显示全部楼层
fineemb 发表于 2020-10-21 23:31
01有两种车机,我这个是csp平台, 你们的可能是tsp平台,
这个其中一个车外温度的值计算方法不一样, tsp的要 ...

2018年的那批领克01可以用吗?
看着这车机系统也不是安卓的,不知道什么系统啊
回复

使用道具 举报

11

主题

242

帖子

1901

积分

论坛技术达人

积分
1901
金钱
1649
HASS币
40
发表于 2020-10-22 08:58:16 | 显示全部楼层
本帖最后由 needs 于 2020-10-22 09:05 编辑
fineemb 发表于 2020-10-21 23:31
01有两种车机,我这个是csp平台, 你们的可能是tsp平台,
这个其中一个车外温度的值计算方法不一样, tsp的要 ...

行程表也是不一样的,还在看怎么转换计算
回复

使用道具 举报

16

主题

217

帖子

2204

积分

论坛技术达人

积分
2204
金钱
1952
HASS币
140
 楼主| 发表于 2020-10-22 09:13:32 | 显示全部楼层
magic900321 发表于 2020-10-21 23:55
2018年的那批领克01可以用吗?
看着这车机系统也不是安卓的,不知道什么系统啊 ...

最早是Linux的, 除了06不知道, 其他是全系都能用的, 功能上可能有多少
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-4-27 04:14 , Processed in 0.054186 second(s), 30 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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