---
layout: page
title: "Transport NSW"
description: "Instructions on how to integrate timetable data for Transport NSW (Australia) within Home Assistant."
date: 2018-10-05 00:00
sidebar: true
comments: false
sharing: true
footer: true
logo: transport_nsw.png
ha_category: Transport
ha_iot_class: "Cloud Polling"
ha_release: 0.81
---


The `transport_nsw` sensor will give you the time until the next departure from a Transport NSW stop for bus, train, light rail or ferry.

## {% linkable_title Setup %}

Prerequisite is a free API key from [Transport NSW](https://opendata.transport.nsw.gov.au/).

In order to find your stop id, go to Google maps and click on any bus/train/ferry stop. The pop up window shows the stop ID underneath the station name. For train stations the easist way to get a stop id for a platform is through [Transport NSW Info](https://transportnsw.info/).

As a default the sensor picks up the next mode of transport leaving from a stop id.

## {% linkable_title Configuration %}

To enable the sensor, add the following lines to your `configuration.yaml` file:

```yaml
# Example configuration.yaml entry
sensor:
  - platform: transport_nsw
    stop_id: '200024'
    api_key: 'YOUR API KEY'
```

{% configuration %}
api_key:
  description: Your API key for Open Data Transport NSW.
  required: true
  type: string
stop_id:
  description: The ID of the stop to get the information for.
  required: true
  type: string
route:
  description: Filter on bus route at the stop. This is the same as the bus number, e.g., `83`.
  required: false
  type: string
destination:
  description: Useful for ferry or train stops to filter the destination of the sensor, e.g. `Circular Quay`.
  required: false
  type: string
name:
  description: A friendly name for this sensor.
  required: false
  type: string
{% endconfiguration %}

The public information is provided from [Transport NSW](https://opendata.transport.nsw.gov.au/).

## {% linkable_title Examples %}

More example configurations for bus or ferry. 

```yaml
# Example bus route configuration.yaml entry
sensor:
  - platform: transport_nsw
    name: 'Bus'
    stop_id: '209516'
    route:  '199'
    api_key: 'YOUR API KEY'
```

```yaml
# Example ferry configuration.yaml entry
sensor:
  - platform: transport_nsw
    name: 'Ferry'
    stop_id: '10102008'
    destination: 'Circular Quay'
    api_key: 'YOUR API KEY'
```

The sensor returns n/a if no stop event is found within the next 24h. A `template` sensor can help building a more meaninful string.

{% raw %}
```yaml
# Sample template sensor
- platform: template
  sensors:
    busmonitor:
      friendly_name: "Bus Mon 199"
      value_template: >-
        {% if is_state_attr('sensor.bus', 'due', 'n/a') %}
          No schedule found
        {% else %}
          {{ states.sensor.bus.attributes.route }} in {{ states.sensor.bus.attributes.due }}m ({{ states.sensor.bus.attributes.delay }})
        {% endif %}
```
{% endraw %}
