tesla_api 1.2.0 → 1.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (56) hide show
  1. checksums.yaml +5 -5
  2. data/.gitbook.yml +4 -0
  3. data/.travis.yml +3 -4
  4. data/LICENSE +1 -1
  5. data/README.md +7 -3
  6. data/Rakefile +27 -1
  7. data/apiary.apib +21 -14
  8. data/docs/README.md +26 -0
  9. data/docs/SUMMARY.md +39 -0
  10. data/docs/api-basics/authentication.md +40 -0
  11. data/docs/api-basics/vehicles.md +77 -0
  12. data/docs/vehicle/autopark.md +4 -0
  13. data/docs/vehicle/commands/README.md +22 -0
  14. data/docs/vehicle/commands/alerts.md +5 -0
  15. data/docs/vehicle/commands/calendar.md +3 -0
  16. data/docs/vehicle/commands/charging.md +3 -0
  17. data/docs/vehicle/commands/climate.md +3 -0
  18. data/docs/vehicle/commands/doors.md +3 -0
  19. data/docs/vehicle/commands/media.md +3 -0
  20. data/docs/vehicle/commands/navigation.md +3 -0
  21. data/docs/vehicle/commands/remotestart.md +3 -0
  22. data/docs/vehicle/commands/softwareupdate.md +3 -0
  23. data/docs/vehicle/commands/speedlimit.md +3 -0
  24. data/docs/vehicle/commands/sunroof.md +3 -0
  25. data/docs/vehicle/commands/trunk.md +3 -0
  26. data/docs/vehicle/commands/valet.md +3 -0
  27. data/docs/vehicle/commands/wake.md +3 -0
  28. data/docs/vehicle/optioncodes.md +253 -0
  29. data/docs/vehicle/state/README.md +34 -0
  30. data/docs/vehicle/state/chargestate.md +56 -0
  31. data/docs/vehicle/state/climatestate.md +43 -0
  32. data/docs/vehicle/state/data.md +181 -0
  33. data/docs/vehicle/state/drivestate.md +27 -0
  34. data/docs/vehicle/state/guisettings.md +21 -0
  35. data/docs/vehicle/state/mobileenabled.md +14 -0
  36. data/docs/vehicle/state/vehiclestate.md +47 -0
  37. data/docs/vehicle/streaming.md +4 -0
  38. data/lib/tesla_api.rb +7 -6
  39. data/lib/tesla_api/autopark.rb +62 -0
  40. data/lib/tesla_api/client.rb +32 -11
  41. data/lib/tesla_api/stream.rb +11 -7
  42. data/lib/tesla_api/vehicle.rb +50 -30
  43. data/lib/tesla_api/version.rb +1 -1
  44. data/spec/cassettes/client-login.yml +1 -1
  45. data/spec/cassettes/vehicle-activate_speed_limit.yml +95 -0
  46. data/spec/cassettes/vehicle-clear_speed_limit_pin.yml +95 -0
  47. data/spec/cassettes/vehicle-deactivate_speed_limit.yml +95 -0
  48. data/spec/cassettes/vehicle-open_frunk.yml +40 -73
  49. data/spec/cassettes/vehicle-open_trunk.yml +40 -73
  50. data/spec/cassettes/vehicle-set_speed_limit.yml +95 -0
  51. data/spec/lib/tesla_api/client_spec.rb +42 -15
  52. data/spec/lib/tesla_api/vehicle_spec.rb +160 -136
  53. data/spec/spec_helper.rb +6 -18
  54. data/tesla_api.gemspec +20 -24
  55. metadata +67 -42
  56. data/circle.yml +0 -10
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 18033816ec5eb77b7103295925eecef144e0c601
4
- data.tar.gz: 372b7eccdcba14d8c7be82a45d3df1719f3c7ec5
2
+ SHA256:
3
+ metadata.gz: 402e885d5f181024647338d54848e77f71a7fce7b2a3d4d308708366bb809d6a
4
+ data.tar.gz: 859d52863c8e0c58ee761edab3c418df031e96bec3fa1ce9d095bd2304bdf555
5
5
  SHA512:
6
- metadata.gz: a38e04aa77bf22edc412f1d3af818b7a2f4c79255ce909e96a282808ca9441a71d42d51bc47760696b0783365fb89a4f186eb150fddec8afe2b075eb57da2af6
7
- data.tar.gz: aaceed89e6cc188b2dfcf8a51c07bb3bf5158f4c86f62a978c2b20c78d94dfeae6e4d114d9ffb52a1dc1d9d1d9fe3b91863a837e6db59cd954aaf28245ad592d
6
+ metadata.gz: a64a3a8e93bdd1aecfb9274020a322482f96a83e1154a57db5f60cd415c79164f934c896e520fa2c234d145d12e42bcdfce3d48d2f6298e649db82cad1e190a8
7
+ data.tar.gz: 0b1e192d37378e004415108e44387aec166106d7616fa0b576c15d9475c83438b1445b164a88980331a5e7cfa30936ce7964775086b093b6f5a9979969e66e59
data/.gitbook.yml ADDED
@@ -0,0 +1,4 @@
1
+ root: ./docs/
2
+ structure:
3
+ readme: README.md
4
+ summary: SUMMARY.md
data/.travis.yml CHANGED
@@ -1,9 +1,8 @@
1
1
  language: ruby
2
2
  rvm:
3
- - 1.9.3
4
- - 2.0.0
5
- - 2.2.2
6
- - 2.3.0
3
+ - 2.3
4
+ - 2.4
5
+ - 2.5
7
6
  env:
8
7
  global:
9
8
  - TESLA_EMAIL=elon.musk@teslamotors.com
data/LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2014 Tim Dorr
1
+ Copyright (c) 2014-Present Tim Dorr
2
2
 
3
3
  MIT License
4
4
 
data/README.md CHANGED
@@ -1,12 +1,16 @@
1
+ Need a Tesla to develop with? Use [my referral link](http://ts.la/timothy8449) to get a $100 Supercharging credit.
2
+
1
3
  # Tesla JSON API
2
4
 
3
5
  [View Documentation](http://docs.timdorr.apiary.io/)
4
6
 
5
7
  This is unofficial documentation of the Tesla JSON API used by the iOS and Android apps.
6
8
  The API provides functionality to monitor and control the Model S (and future Tesla vehicles) remotely.
7
- The project provides both a documention of the API and a Ruby library to for accessing it.
9
+ The project provides both a documention of the API and a Ruby library for accessing it.
10
+
11
+ > If any folks at Tesla are reading this, I'd love to help coordinate a developer program for your APIs. If there's any way I can be helpful, please feel free to get in contact. Also, I'd love to be in the beta firmware program :wink:
8
12
 
9
- ## Ruby Gem [![Gem Version](https://img.shields.io/gem/v/tesla_api.svg)](http://rubygems.org/gems/tesla_api) [![Build Status](https://img.shields.io/travis/timdorr/model-s-api/master.svg)](https://travis-ci.org/timdorr/model-s-api) [![Coverage Status](https://img.shields.io/coveralls/timdorr/model-s-api.svg)](https://coveralls.io/r/timdorr/model-s-api?branch=master)
13
+ ## Ruby Gem [![Gem Version](https://img.shields.io/gem/v/tesla_api.svg)](http://rubygems.org/gems/tesla_api) [![Build Status](https://img.shields.io/travis/timdorr/tesla-api/master.svg)](https://travis-ci.org/timdorr/tesla-api)
10
14
 
11
15
  This gem provides a basic wrapper around the API to easily query and command the car remotely.
12
16
  It also provides access to the streaming API and a means to process data coming from it.
@@ -48,5 +52,5 @@ puts "Your Model S is #{charge_state["charging_state"]} " +
48
52
 
49
53
  ## Copyright
50
54
 
51
- Ruby portions are Copyright (c) 2014 Tim Dorr. Released under the terms of the
55
+ Ruby portions are Copyright (c) 2014-Present Tim Dorr. Released under the terms of the
52
56
  MIT license. See LICENSE for details.
data/Rakefile CHANGED
@@ -7,7 +7,33 @@ end
7
7
 
8
8
  desc "Open an irb session preloaded with this library"
9
9
  task :console do
10
- sh "irb -rubygems -I lib -r tesla_api.rb -rdotenv"
10
+ # Load all gems
11
+ require 'rubygems'
12
+ require 'bundler/setup'
13
+ Bundler.require(:default)
14
+
15
+ # Load the envs
16
+ require 'dotenv'
17
+ Dotenv.load!
18
+
19
+ # Set up a global client
20
+ def client
21
+ @client ||= begin
22
+ client = TeslaApi::Client.new(ENV['TESLA_EMAIL'])
23
+ client.login!(ENV['TESLA_PASS'])
24
+ client
25
+ end
26
+ end
27
+
28
+ # Load IRB
29
+ require 'irb'
30
+ require 'irb/completion'
31
+
32
+ IRB.conf[:PROMPT_MODE] = :SIMPLE
33
+ IRB.conf[:AUTO_INDENT] = true
34
+
35
+ ARGV.clear
36
+ IRB.start
11
37
  end
12
38
 
13
39
  task default: :spec
data/apiary.apib CHANGED
@@ -2,6 +2,11 @@ FORMAT: 1A
2
2
  HOST: https://owner-api.teslamotors.com
3
3
 
4
4
  # Tesla Model S JSON API
5
+
6
+ # ⚠️ ⚠️ ⚠️ ⚠️
7
+ # This site has moved! [https://tesla-api.timdorr.com/](https://tesla-api.timdorr.com/)
8
+ # ⚠️ ⚠️ ⚠️ ⚠️
9
+
5
10
  This is unofficial documentation of the Tesla Model S JSON API used by the iOS and Android apps. It features functionality to monitor and control the Model S remotely.
6
11
 
7
12
  # Group Authentication
@@ -15,9 +20,9 @@ Returns a `access_token` which is passed along as a header with all future reque
15
20
 
16
21
  You must provide the `Authorization: Bearer {access_token}` header in all other requests.
17
22
 
18
- The current client ID and secret are [available here](http://pastebin.com/fX6ejAHd)
23
+ The current client ID and secret are [available here](http://pastebin.com/YiLPDggh)
19
24
 
20
- + Parameters
25
+ + Attributes
21
26
  + grant_type: `password` (string) - The type of oAuth grant. Always "password"
22
27
  + client_id: `abc` (string) - The oAuth client ID
23
28
  + client_secret: `123` (string) - The oAuth client secret
@@ -30,7 +35,9 @@ The current client ID and secret are [available here](http://pastebin.com/fX6ejA
30
35
  {
31
36
  "access_token": "abc123",
32
37
  "token_type": "bearer",
33
- "expires_in": 7776000
38
+ "expires_in": 7776000,
39
+ "created_at": 1457385291,
40
+ "refresh_token" : "cba321"
34
41
  }
35
42
 
36
43
  # Group Vehicles
@@ -329,7 +336,7 @@ Resets the PIN set for valet mode, if set.
329
336
  }
330
337
 
331
338
  ## Open Charge Port [POST /api/1/vehicles/{vehicle_id}/command/charge_port_door_open]
332
- Opens the charge port. Does not close the charge port (for now...)
339
+ Opens the charge port. Does not close the charge port (for now...). This endpoint also unlocks the charge port if it's locked.
333
340
 
334
341
  + Request
335
342
  + Headers
@@ -559,7 +566,7 @@ Lock the car's doors.
559
566
  }
560
567
  }
561
568
 
562
- ## Set Temperature [POST /api/1/vehicles/{vehicle_id}/command/set_temps?driver_temp={driver_degC}&passenger_temp={pass_degC}]
569
+ ## Set Temperature [POST /api/1/vehicles/{vehicle_id}/command/set_temps?driver_temp={driver_temp}&passenger_temp={passenger_temp}]
563
570
  Set the temperature target for the HVAC system.
564
571
 
565
572
  + Request
@@ -570,8 +577,8 @@ Set the temperature target for the HVAC system.
570
577
  + Parameters
571
578
 
572
579
  + vehicle_id: `1` (number) - The id of the Vehicle.
573
- + driver_degC: `23.7` (number) - The desired temperature on the driver's side in celcius.
574
- + pass_degC: `18.1` (number) - The desired temperature on the passenger's side in celcius.
580
+ + driver_temp: `23.7` (number) - The desired temperature on the driver's side in celcius.
581
+ + passenger_temp: `18.1` (number) - The desired temperature on the passenger's side in celcius.
575
582
 
576
583
  + Response 200 (application/json)
577
584
 
@@ -584,8 +591,8 @@ Set the temperature target for the HVAC system.
584
591
  }
585
592
  }
586
593
 
587
- ## Start Air Condition [POST /api/1/vehicles/{vehicle_id}/command/auto_conditioning_start]
588
- Start the HVAC system. Will cool or heat automatically, depending on set temperature.
594
+ ## Start HVAC System [POST /api/1/vehicles/{vehicle_id}/command/auto_conditioning_start]
595
+ Start the climate control system. Will cool or heat automatically, depending on set temperature.
589
596
 
590
597
  + Request
591
598
  + Headers
@@ -607,8 +614,8 @@ Start the HVAC system. Will cool or heat automatically, depending on set tempera
607
614
  }
608
615
  }
609
616
 
610
- ## Stop Air Condition [POST /api/1/vehicles/{vehicle_id}/command/auto_conditioning_stop]
611
- Stop the HVAC system.
617
+ ## Stop HVAC System [POST /api/1/vehicles/{vehicle_id}/command/auto_conditioning_stop]
618
+ Stop the climate control system.
612
619
 
613
620
  + Request
614
621
  + Headers
@@ -687,7 +694,7 @@ Start the car for keyless driving. Must start driving within 2 minutes of issuin
687
694
  }
688
695
 
689
696
  ## Open Trunk/Frunk [POST /api/1/vehicles/{vehicle_id}/command/trunk_open]
690
- Open the trunk or frunk. Currently inoperable.
697
+ Open the trunk or frunk. Call the endpoint again to close (this only works on rear powered trunks)
691
698
 
692
699
  + Request
693
700
  + Headers
@@ -697,7 +704,7 @@ Open the trunk or frunk. Currently inoperable.
697
704
  + Parameters
698
705
 
699
706
  + vehicle_id: `1` (number) - The id of the Vehicle.
700
- + which_trunk: `rear` (string) - The trunk to open. `rear` is the only one known currently.
707
+ + which_trunk: `rear` (string) - The trunk to open. `rear` and `front` are the only options
701
708
 
702
709
  + Response 200 (application/json)
703
710
 
@@ -708,4 +715,4 @@ Open the trunk or frunk. Currently inoperable.
708
715
  "result": true,
709
716
  "reason": ""
710
717
  }
711
- }
718
+ }
data/docs/README.md ADDED
@@ -0,0 +1,26 @@
1
+ # Introduction
2
+
3
+ This is unofficial documentation of the Tesla JSON API used by their iOS and Android apps. It features functionality to monitor and control their vehicle (Model S, Model X, and Model 3) and power (Powerwall) products. We currently have documentation for their vehicles, but always accept [pull requests](https://github.com/timdorr/tesla-api/pulls) for improvements and additions.
4
+
5
+ ## Before You Begin
6
+
7
+ The base URI for all requests is `https://owner-api.teslamotors.com/` (except for the Streaming and Autopark APIs)
8
+
9
+ _All requests require a_ `User-Agent` _header with any value provided._ For Tesla's sake, it's recommended you identify your application in some way using this header.
10
+
11
+ ## API Organization
12
+
13
+ The API for vehicles is organized into 3 primary surfaces:
14
+
15
+ ### State and commands
16
+
17
+ Gives point-in-time data about the state of the vehicle and basic controls over certain functions of the vehicle. The state and command APIs loosely adhere to the REST standard, but differ in some crucial ways. As a result, you may not be able to use it with many REST tools and libraries out of the box.
18
+
19
+ ### Streaming telemetry
20
+
21
+ Streams in data about the car's telemetry at up to half second increments. The underlying protocol is simply a streaming HTTP API that provides JSON objects at regular intervals.
22
+
23
+ ### Autopark ("Summon")
24
+
25
+ A streaming command mode to control the automatic parking of HW1 (Autopilot v1) and HW2/HW2.5 (Autopilot v2) cars. This API uses a standard WebSocket that exchanges JSON objects to convey state information and issue commands during the Autopark session.
26
+
data/docs/SUMMARY.md ADDED
@@ -0,0 +1,39 @@
1
+ # Table of contents
2
+
3
+ * [Introduction](README.md)
4
+
5
+ ## API Basics
6
+
7
+ * [Authentication](api-basics/authentication.md)
8
+ * [Vehicles](api-basics/vehicles.md)
9
+
10
+ ## Vehicle
11
+
12
+ * [State](vehicle/state/README.md)
13
+ * [Data](vehicle/state/data.md)
14
+ * [Charge State](vehicle/state/chargestate.md)
15
+ * [Climate State](vehicle/state/climatestate.md)
16
+ * [Drive State](vehicle/state/drivestate.md)
17
+ * [GUI Settings](vehicle/state/guisettings.md)
18
+ * [Vehicle State](vehicle/state/vehiclestate.md)
19
+ * [Mobile Enabled](vehicle/state/mobileenabled.md)
20
+ * [Commands](vehicle/commands/README.md)
21
+ * [Wake](vehicle/commands/wake.md)
22
+ * [Alerts](vehicle/commands/alerts.md)
23
+ * [Doors](vehicle/commands/doors.md)
24
+ * [Frunk/Trunk](vehicle/commands/trunk.md)
25
+ * [Sunroof](vehicle/commands/sunroof.md)
26
+ * [Charging](vehicle/commands/charging.md)
27
+ * [Climate](vehicle/commands/climate.md)
28
+ * [Media](vehicle/commands/media.md)
29
+ * [Navigation](vehicle/commands/nagivation.md)
30
+ * [Remote Start](vehicle/commands/remotestart.md)
31
+ * [Software Updates](vehicle/commands/softwareupdate.md)
32
+ * [Speed Limit](vehicle/commands/speedlimit.md)
33
+ * [Valet Mode](vehicle/commands/valet.md)
34
+ * [Calendar](vehicle/commands/calendar.md)
35
+
36
+ * [Streaming](vehicle/streaming.md)
37
+ * [Autopark/Summon](vehicle/autopark.md)
38
+ * [Option Codes](vehicle/optioncodes.md)
39
+
@@ -0,0 +1,40 @@
1
+ ---
2
+ description: The authentication process for the Tesla API
3
+ ---
4
+
5
+ # Authentication
6
+
7
+ The authentication process is via [an OAuth 2.0 Password Grant](https://oauth.net/2/grant-types/password/) with the same credentials used for tesla.com and the mobile apps.
8
+
9
+ The current client ID and secret are [available here](https://pastebin.com/pS7Z6yyP).
10
+
11
+ You will get back an `access_token` which is treated as [an OAuth 2.0 Bearer Token](https://oauth.net/2/bearer-tokens/). This token is passed along in an `Authorization` header with all future requests:
12
+
13
+ ```http
14
+ Authorization: Bearer {access_token}
15
+ ```
16
+
17
+ ## POST `/oauth/token`
18
+
19
+ ### Request parameters
20
+
21
+ | Field | Type | Example | Description |
22
+ | :--- | :--- | :--- | :--- |
23
+ | `grant_type` | String, required | `password` | The type of OAuth grant. Always "password" |
24
+ | `client_id` | String, required | `abc` | The OAuth client ID |
25
+ | `client_secret` | String, required | `123` | The OAuth client secret |
26
+ | `email` | String, required | `elon@teslamotors.com` | The email for the authenticating Tesla account |
27
+ | `password` | String, required | `edisonsux` | The password for the authenticating Tesla account |
28
+
29
+ ### Response
30
+
31
+ ```json
32
+ {
33
+ "access_token":"abc123",
34
+ "token_type":"bearer",
35
+ "expires_in": 3888000,
36
+ "refresh_token":"cba321",
37
+ "created_at": 1538359034
38
+ }
39
+ ```
40
+
@@ -0,0 +1,77 @@
1
+ ---
2
+ description: Endpoints for getting an account's vehicles
3
+ ---
4
+
5
+ # Vehicles
6
+
7
+ A logged in user can have multiple vehicles under their account (congrats on being rich!). This resource is primarily responsible for listing the vehicles and the basic details about them.
8
+
9
+ #### `vehicle_id` vs `id`
10
+
11
+ One potentially confusing part of Tesla's API is the switching use of the `id` and `vehicle_id` of the car. The `id` field is an identifier for the car on the owner-api endpoint. The `vehicle_id` field is for identifying the car across different endpoints, such as the streaming or Autopark APIs.
12
+
13
+ For the state and command APIs, you should be using the `id` field. If your JSON parser doesn't support large numbers (>32 bit), then you can use the `id_s` field for a string version of the ID.
14
+
15
+ ## GET `/api/1/vehicles`
16
+
17
+ Retrieve a list of your owned vehicles (includes vehicles not yet shipped!)
18
+
19
+ ### Request parameters
20
+
21
+ ### Response
22
+
23
+ ```json
24
+ {
25
+ "response": [
26
+ {
27
+ "id": 12345678901234567,
28
+ "vehicle_id": 1234567890,
29
+ "vin": "5YJSA11111111111",
30
+ "display_name": "Nikola 2.0",
31
+ "option_codes": "MDLS,RENA,AF02,APF1,APH2,APPB,AU01,BC0R,BP00,BR00,BS00,CDM0,CH05,PBCW,CW00,DCF0,DRLH,DSH7,DV4W,FG02,FR04,HP00,IDBA,IX01,LP01,ME02,MI01,PF01,PI01,PK00,PS01,PX00,PX4D,QTVB,RFP2,SC01,SP00,SR01,SU01,TM00,TP03,TR00,UTAB,WTAS,X001,X003,X007,X011,X013,X021,X024,X027,X028,X031,X037,X040,X044,YFFC,COUS",
32
+ "color": null,
33
+ "tokens": ["abcdef1234567890", "1234567890abcdef"],
34
+ "state": "online",
35
+ "in_service": false,
36
+ "id_s": "12345678901234567",
37
+ "calendar_enabled": true,
38
+ "backseat_token": null,
39
+ "backseat_token_updated_at": null
40
+ }
41
+ ],
42
+ "count": 1
43
+ }
44
+ ```
45
+
46
+ ## GET `/api/1/vehicles/{id}`
47
+
48
+ These resources are read-only and determine the state of the vehicle's various sub-systems.
49
+
50
+ ### URL parameters
51
+
52
+ | Field | Example | Description |
53
+ | :--- | :--- | :--- |
54
+ | `id` | `12345678901234567` | The `id` of the car. (Not the `vehicle_id`!) |
55
+
56
+ ### Response
57
+
58
+ ```json
59
+ {
60
+ "response": {
61
+ "id": 12345678901234567,
62
+ "vehicle_id": 1234567890,
63
+ "vin": "5YJSA11111111111",
64
+ "display_name": "Nikola 2.0",
65
+ "option_codes": "MDLS,RENA,AF02,APF1,APH2,APPB,AU01,BC0R,BP00,BR00,BS00,CDM0,CH05,PBCW,CW00,DCF0,DRLH,DSH7,DV4W,FG02,FR04,HP00,IDBA,IX01,LP01,ME02,MI01,PF01,PI01,PK00,PS01,PX00,PX4D,QTVB,RFP2,SC01,SP00,SR01,SU01,TM00,TP03,TR00,UTAB,WTAS,X001,X003,X007,X011,X013,X021,X024,X027,X028,X031,X037,X040,X044,YFFC,COUS",
66
+ "color": null,
67
+ "tokens": ["abcdef1234567890", "1234567890abcdef"],
68
+ "state": "online",
69
+ "in_service": false,
70
+ "id_s": "12345678901234567",
71
+ "calendar_enabled": true,
72
+ "backseat_token": null,
73
+ "backseat_token_updated_at": null
74
+ }
75
+ }
76
+ ```
77
+
@@ -0,0 +1,4 @@
1
+ # Autopark/Summon
2
+
3
+
4
+
@@ -0,0 +1,22 @@
1
+ ---
2
+ description: These endpoints issue various commands to the car.
3
+ ---
4
+
5
+ # Commands
6
+
7
+ These commands alter the vehicles state and return a boolean `result` to indicate success.
8
+
9
+ {% page-ref page="wake.md" %}
10
+ {% page-ref page="alerts.md" %}
11
+ {% page-ref page="doors.md" %}
12
+ {% page-ref page="trunk.md" %}
13
+ {% page-ref page="sunroof.md" %}
14
+ {% page-ref page="charging.md" %}
15
+ {% page-ref page="climate.md" %}
16
+ {% page-ref page="media.md" %}
17
+ {% page-ref page="nagivation.md" %}
18
+ {% page-ref page="remotestart.md" %}
19
+ {% page-ref page="softwareupdate.md" %}
20
+ {% page-ref page="speedlimit.md" %}
21
+ {% page-ref page="valet.md" %}
22
+ {% page-ref page="calendar.md" %}
@@ -0,0 +1,5 @@
1
+ # Alerts
2
+
3
+ Controls for honking the horn and flashing the lights.
4
+
5
+ ## POST `/api/1/vehicles/{id}/command/honk_horn`
@@ -0,0 +1,3 @@
1
+ # Calendar
2
+
3
+
@@ -0,0 +1,3 @@
1
+ # Charging
2
+
3
+
@@ -0,0 +1,3 @@
1
+ # Climate
2
+
3
+