TeslaKit 2.5

TeslaKit 2.5

jjjjaren维护。



  • jjjjaren

TeslaKit

Platform Cocoapods compatible Version License Language Twitter

TeslaKit是一个使用Swift编写的框架,它可以使您更容易地与Tesla的移动API接口,并与您的Tesla汽车进行通信。

特性

  • 使用Tesla的API进行认证以获取访问令牌
  • 检索您Tesla账户关联的车辆列表
  • 获取您的车辆上的所有数据
  • 向您的车辆发送命令
  • 使用ObjectMapper进行JSON映射
  • 使用Structures来保持线程安全操作
  • 车辆识别代码解码器
  • 召唤和智能家居链接 - 即将推出

灵感

自从原始Roadster以来,我一直以来都是Tesla的忠实粉丝。当Model 3宣布时,我甚至露天过夜,以便我可以订下我的预订。我也是一个狂热的Apple粉丝,非常喜欢我的Apple Watch,尽管希望有更多有趣的复杂性可以添加到我的表盘上。所以我在等待我的Model 3的时候决定自己制作一个应用程序。

快进到2018年中,我正式发布了我的应用程序,名为AutoMate for Tesla,并已在上一个应用程序商店中发布,并且也收到了我的Model 3!在AutoMate的开发过程中,我决定将核心Tesla API交互分离成一个独立的项目,并开源它,这样其他人也能构建真正酷炫的应用程序。

我期待看到人们如何使用TeslaKit,如果您像我一样热爱您的汽车并拥有Apple Watch,我相信您也会喜欢AutoMate,所以请试一试!

安装

通过CocoaPods获取TeslaKit。要安装它,只需将以下行添加到您的Podfile中。

pod 'TeslaKit'

使用方法

在您的info.plist中添加owner-api.teslamotors.com的ATS异常域名。

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSExceptionDomains</key>
    <dict>
        <key>owner-api.teslamotors.com</key>
        <dict>
            <key>NSIncludesSubdomains</key>
            <true/>
            <key>NSExceptionMinimumTLSVersion</key>
            <string>TLSv1.0</string>
            <key>NSExceptionAllowsInsecureHTTPLoads</key>
            <true/>
        </dict>
    </dict>
</dict>

将导入语句TeslaKit添加到您的文件中。

import TeslaKit

TeslaAPI

创建一个新的TeslaAPI实例。

let teslaAPI = TeslaAPI()

还可以查看其他初始化配置选项。

访问令牌

使用您的特斯拉账户凭证登录以获取访问令牌。

let email = "[email protected]"
let password = "M@R$R0X!"

teslaAPI.getAccessToken(email: email, password: password) { (httpResponse, dataOrNil, errorOrNil) in

    guard let accessToken = dataOrNil?.accessToken else { return }

    // Set the accessToken for use with future requests
    teslaAPI.setAccessToken(accessToken)
}

车辆列表

获取与您的账户关联的车辆列表。

teslaAPI.getVehicles { (httpResponse, dataOrNil, errorOrNil) in

    guard let vehicle = dataOrNil?.vehicles.first else { return }

    print("Hello, \(vehicle.displayName)")
}

车辆数据

获取一辆车的所有数据。

teslaAPI.getData(vehicle.id) { (httpResponse, dataOrNil, errorOrNil) in

    guard let vehicle = dataOrNil else { return }

    print("Battery is at \(vehicle.chargeState.batteryLevel)%")
}

发送命令

向一辆车发送命令。

let command = Command.unlockDoors

teslaAPI.send(command, to: vehicle) { response in
    if response.result {
        print("Command sent successfully!")
    }
}

向车辆发送带有请求参数的命令

let parameters = SetTemperature(driverTemp: 21.0, passengerTemp: 21.0)

teslaAPI.send(.setTemperature, to: vehicle, parameters: parameters) { response in
    if response.result {
        print("Command sent successfully!")
    }
}

配置

默认

let teslaAPI = TeslaAPI(configuration: .default) // same as TeslaAPI()

default配置指向特斯拉生产机主API

模拟

let teslaAPI = TeslaAPI(configuration: .mock)

mock配置将所有请求定向到自定义服务器,该服务器为每个机主API端点返回预定义的响应,允许您使用看起来像真实数据的某些数据来工作,而无需拥有特斯拉车辆或特斯拉账户。

注意:因为这是一个免费服务,请求有时会受到限流。

自定义

let customConfig = TeslaAPI.Configuration(baseURL: URL(string: "SOME_URL")!,
                                          clientId: "SOME_CLIENT_ID",
                                          clientSecret: "SOME_CLIENT_SECRET",
                                          requestTimeout: 30)

let teslaAPI = TeslaAPI(configuration: customConfig)

custom配置允许您指定自己的baseURL。如果您想指向自己的环境,这很方便。您还可以指定替代的clientIdclientSecret值。您还可以指定不同的请求超时时间间隔(默认:30

调试模式

let teslaAPI = TeslaAPI(debugMode: true)

启用调试模式将打印所有原始请求和响应信息到控制台(默认:false

VIN解码器

let vin = VIN(vinString: "5YJSA1E2XHF999999")!
print(vin.make)         // Model S
print(vin.driveUnit)    // Dual Motor
print(vin.modelYear)    // 2017
print(vin.serialNo)     // 999999
print(vin.vinString)    // 5YJSA1E2XHF999999

使用TeslaKit构建的应用程序

你的应用使用TeslaKit吗?告诉我,我也会在这里展示它!

特斯拉推荐计划

要购买一辆新的特斯拉吗?使用我的推荐码,让你的五个朋友在购买全新Model S、Model X或Model 3 Performance时获得100美元的超充积分!

作者

jjjjaren,[email protected]

许可证

本项目受MIT许可证条款约束。查看LICENSE文件。

本项目与特斯拉公司无任何关联。本项目根据MIT许可证开源,这意味着您可以完全访问源代码,并根据您的需求进行修改。