homebridge-jlr-incontrol

Jaguar Land Rover InControl support for Homebridge: https://github.com/nfarina/homebridge

Usage no npm install needed!

<script type="module">
  import homebridgeJlrIncontrol from 'https://cdn.skypack.dev/homebridge-jlr-incontrol';
</script>

README

homebridge-jlr-incontrol

Jaguar Land Rover InControl plug in for Homebridge.

Example config.json:

{
  "accessories": [
    {
      "accessory": "Jaguar Land Rover InControl",
      "name": "I-PACE",
      "vin": "1AAAAA111AA111111",
      "username": "foo@bar.uk",
      "password": "foobar",
      "pin": 1234,
      "deviceId": "UUID",
      "lowBatteryThreshold": 25,
      "targetTemperature": 21
    }
  ]
}
  • deviceId needs to be a unique device identifier to identify your Homebridge.
  • lowBatteryThresold defines the battery level below which the battery is considered to be low. Defaults to 25% if the value is not specified.
  • targetTemperature define the default target temperature (in ℃) when preconditioning the vehicle. Defaults to 22℃ if the value is not specified

Exposes:

  • Battery service;
  • Door Lock service;
  • Vehicle pre-conditioning on/off switch.

If you use the example above, you would gain Siri commands like:

  • "What is the charge level on the I-PACE?" (check the charge level of the battery)
  • "Is the I-PACE charging?" (is the car charging?)
  • "Is the I-PACE locked?" (check if the car is locked)
  • "Open the I-PACE" (unlock the vehicle)
  • "Turn on the I-PACE Preconditioning" (pre-condition the I-PACE)
  • "Set the I-PACE Preconditioning to 18 degrees"

Multiple Vehicles

Have a garage full of Jaguar Land Rovers? You can easily add all of them to HomeKit by creating a separate accessory for each one distinguished by their unique VIN numbers:

{
  "accessories": [
    {
      "accessory": "Jaguar Land Rover InControl",
      "name": "I-PACE",
      "vin": "1AAAAA111AA111111",
      "username": "foo@bar.uk",
      "password": "foobar",
      "pin": 1234,
      "deviceId": "951208e8-a75d-4009-9faf-0039f728f82e",
      "lowBatteryThreshold": 30,
      "targetTemperature": 21
    },
    {
      "accessory": "Jaguar Land Rover InControl",
      "name": "Range Rover",
      "vin": "2BBBBB222BB22222",
      "username": "foo@bar.uk",
      "password": "foobar",
      "pin": 1234,
      "deviceId": "69df52b-0c86-49eb-b115-de789fd4400d",
      "targetTemperature": 18,
      "disableEV": true
    }
  ]
}

If you use the example above, you would gain Siri commands like:

  • "Open the I-PACE" (unlock the I-PACE)
  • "Open the Range Rover" (unlock the Range Rover)
  • "Turn on the I-PACE Preconditioning" (pre-condition on the I-PACE)

Development

You can run Rollup in watch mode to automatically transpile code as you write it:

  npm run dev

Acknowledgements

This plug in is based on the work of jlrpy and the excellent reverse engineering of the InControl API contributed by ardevd.