Let op: Tweakers stopt per 2023 met Tweakblogs. In
dit artikel
leggen we uit waarom we hiervoor hebben gekozen.
NS Reisinformatie in Home Assistant
Ik ben al een tijdje aan het spelen met Home Assistant om diverse automations in te stellen voor mijn dagelijkse bezigheden. Sinds versie 0.57 is er ook een sensor aanwezig om reisinformatie van de Nederlandse Spoorwegen in HA beschikbaar te krijgen, gemaakt door Menno Blom. Om mijn dagelijkse trips wat makkelijker te maken ben ik daar wat mee gaan spelen.
Component installatie
Om deze component te kunnen gebruiken binnen HA zal je deze moeten configureren. In configuration.yaml (of sensors.yaml, als je dat gebruikt):
Om een wachtwoord te verkrijgen moet je bij de NS een API account aanmaken, waarna het wachtwoord je meteen wordt toegestuurd. Voor de routes moeten de stations-codes gebruikt worden zoals de NS die gebruikt: die zijn hier te vinden.
Na deze configuratiestappen zijn er twee sensoren beschikbaar in het startscherm van HA. Om een en ander overzichtelijker te maken heb ik ze opgenomen in een group:
Met het volgende resultaat:
Automations op basis van locatie
Helaas woon ik niet dicht bij het station, dus ik moet met de bus naar mijn vertrekstation. Als ik in de buurt van het vertrekstation kom wil ik graag een melding krijgen wanneer mijn trein vanaf welk perron vertrekt. De vertrektijd wisselt nog wel eens qua tijd omdat ik op verschillende tijden op het station kom, dus mijn automation moet er rekening mee houden of ik sowieso wel in de buurt van het station ben. Binnen Home Assistant kun je dat heel eenvoudig bereiken door middel van zones en het gebruiken van een device tracker zoals Owntracks. Het instellen daarvan sla ik in deze post over, maar een zone is daarna vrij eenvoudig in je configuration.yaml (of zones.yaml) aan te maken:
In Home Assistant kun je acties triggeren als je een bepaalde zone in komt, en dat is exact wat ik gebruik om mezelf een (Pushbullet) bericht te sturen met de laatste vertrekinfo van mijn trein, in automations.yaml. Als trigger gebruik ik het event "enter" van het zone platform, maar ik breng een tijdsconditie aan om te zorgen dat dit alleen gebeurd tijdens mijn ochtendreis: ik heb 's middags geen behoefte aan deze melding want dan reis ik de andere kant op.
Zoals je ziet ontvang ik dan een Pushbullet berichtje met alle informatie die ik nodig heb, inclusief het vertrekspoor* en de vertrektijd:

*Het verstrekspoor wordt pas vanaf HA 0.58 aangeboden in de state attributes van deze sensor, na een voorstel van mijzelf daartoe. Mocht je voor die tijd al willen experimenteren: het zijn 4 simpele toe te voegen regels in homeassistant/components/sensor/nederlandse_spoorwegen.py, zie de Github PR voor details., dus even updaten naar de op 19 november 2017 uitgebrachte versie 0.58
Voor mijn terugreis gebruik ik een ander systeem, omdat het station dicht bij mijn werkplek ligt. Die werkplek heb ik ook als zone aangemaakt in HA, waardoor ik die ook als condition kan gebruiken voor mijn locatie. Maar omdat ik deze berichten enkel in de middag wil ontvangen als ik daadwerkelijk op het werk ben, gebruik ik als condition zowel de tijd als mijn locatie.
Door het gebruik van de state als trigger van de automation triggert hij steeds als de sensor van state (of een van de attributen) veranderd: daardoor ben ik altijd op de hoogte van eventuele vertragingen of uitval.
Component installatie
Om deze component te kunnen gebruiken binnen HA zal je deze moeten configureren. In configuration.yaml (of sensors.yaml, als je dat gebruikt):
YAML:
1
2
3
4
5
6
7
8
9
10
| - platform: nederlandse_spoorwegen email: !secret ns_user password: !secret ns_password routes: - name: DenBosch-Breda from: Ht to: Bd - name: Breda-DenBosch from: Bd to: Ht |
Om een wachtwoord te verkrijgen moet je bij de NS een API account aanmaken, waarna het wachtwoord je meteen wordt toegestuurd. Voor de routes moeten de stations-codes gebruikt worden zoals de NS die gebruikt: die zijn hier te vinden.
Na deze configuratiestappen zijn er twee sensoren beschikbaar in het startscherm van HA. Om een en ander overzichtelijker te maken heb ik ze opgenomen in een group:
YAML:
1
2
3
4
5
| treinen: name: Treinen entities: - sensor.denboschbreda - sensor.bredadenbosch |
Met het volgende resultaat:
Automations op basis van locatie
Helaas woon ik niet dicht bij het station, dus ik moet met de bus naar mijn vertrekstation. Als ik in de buurt van het vertrekstation kom wil ik graag een melding krijgen wanneer mijn trein vanaf welk perron vertrekt. De vertrektijd wisselt nog wel eens qua tijd omdat ik op verschillende tijden op het station kom, dus mijn automation moet er rekening mee houden of ik sowieso wel in de buurt van het station ben. Binnen Home Assistant kun je dat heel eenvoudig bereiken door middel van zones en het gebruiken van een device tracker zoals Owntracks. Het instellen daarvan sla ik in deze post over, maar een zone is daarna vrij eenvoudig in je configuration.yaml (of zones.yaml) aan te maken:
YAML:
1
2
3
4
5
6
| zone: - name: stationdb latitude: 51.690256 longitude: 5.294090 radius: 700 icon: mdi:train |
In Home Assistant kun je acties triggeren als je een bepaalde zone in komt, en dat is exact wat ik gebruik om mezelf een (Pushbullet) bericht te sturen met de laatste vertrekinfo van mijn trein, in automations.yaml. Als trigger gebruik ik het event "enter" van het zone platform, maar ik breng een tijdsconditie aan om te zorgen dat dit alleen gebeurd tijdens mijn ochtendreis: ik heb 's middags geen behoefte aan deze melding want dan reis ik de andere kant op.
YAML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
| - id: Notification_trein_naar_Breda alias: Vertrektijd trein naar Breda trigger: - entity_id: device_tracker.hmmbob event: enter platform: zone zone: zone.stationdb condition: - after: 06:15:00 before: 08:30:00 condition: time weekday: - mon - tue - wed - thu - fri action: - data_template: message: Vertrektijd {{ states.sensor.denboschbreda.attributes.departure_time_actual }} vanaf spoor {{ states.sensor.denboschbreda.attributes.departure_platform }}, aankomst om {{ states.sensor.denboschbreda.attributes.arrival_time_actual }}. Volgende trein vertrekt om {{ states.sensor.denboschbreda.attributes.next }}. title: 'Trein naar Breda: {{ states.sensor.denboschbreda.attributes.status }}.' service: notify.pushbullet |
Zoals je ziet ontvang ik dan een Pushbullet berichtje met alle informatie die ik nodig heb, inclusief het vertrekspoor* en de vertrektijd:

*Het verstrekspoor wordt pas vanaf HA 0.58 aangeboden in de state attributes van deze sensor, na een voorstel van mijzelf daartoe. Mocht je voor die tijd al willen experimenteren: het zijn 4 simpele toe te voegen regels in homeassistant/components/sensor/nederlandse_spoorwegen.py, zie de Github PR voor details., dus even updaten naar de op 19 november 2017 uitgebrachte versie 0.58
Voor mijn terugreis gebruik ik een ander systeem, omdat het station dicht bij mijn werkplek ligt. Die werkplek heb ik ook als zone aangemaakt in HA, waardoor ik die ook als condition kan gebruiken voor mijn locatie. Maar omdat ik deze berichten enkel in de middag wil ontvangen als ik daadwerkelijk op het werk ben, gebruik ik als condition zowel de tijd als mijn locatie.
YAML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
| - id: Notification_vertrek_naar_Den_Bosch alias: Vertrek naar Den Bosch trigger: - entity_id: sensor.bredadenbosch platform: state condition: - condition: and conditions: - after: '15:00:00' before: '16:30:00' condition: time weekday: - mon - tue - wed - thu - fri - condition: state entity_id: device_tracker.hmmbob state: work action: - data: message: Vertrektijd {{ states.sensor.bredadenbosch.attributes.departure_time_actual }} vanaf spoor {{ states.sensor.bredadenbosch.attributes.departure_platform }}, aankomst om {{ states.sensor.bredadenbosch.attributes.arrival_time_actual }} op spoor {{ states.sensor.bredadenbosch.attributes.arrival_platform }}. Volgende trein vertrekt om {{ states.sensor.bredadenbosch.attributes.next }}. title: 'Trein naar Den Bosch: {{ states.sensor.bredadenbosch.attributes.status }}.' service: notify.pushbullet |
Door het gebruik van de state als trigger van de automation triggert hij steeds als de sensor van state (of een van de attributen) veranderd: daardoor ben ik altijd op de hoogte van eventuele vertragingen of uitval.