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.
08-'20 Push data to Luftdaten and OpenSenseMap API with Home Assistant
Reacties
Leuke automatisering! Misschien ga ik dat ook aan Hass toevoegen.
Heel top. 
Nice! Jammer dat ik net sinds een maandje ben overgestapt van trein naar auto...
Daar kun je vast met de Google Maps Travel Time sensor wat meeTimple schreef op woensdag 15 november 2017 @ 12:21:
Nice! Jammer dat ik net sinds een maandje ben overgestapt van trein naar auto...
https://home-assistant.io...ensor.google_travel_time/
Is het niet leuker om een API te bouwen volgens de datastroom van het NDOV-loket.
De API van de NS zelf is erg verouderd, en niet heel accuraat. Somt toont hij gewoon treinen die gewoon uitgevallen zijn. Terwijl je met het NDOV-loket de actuele gegevens kan krijgen, en dus ook zelfs materieeltype en -nummer.
De API van de NS zelf is erg verouderd, en niet heel accuraat. Somt toont hij gewoon treinen die gewoon uitgevallen zijn. Terwijl je met het NDOV-loket de actuele gegevens kan krijgen, en dus ook zelfs materieeltype en -nummer.
Goed idee. Maar ik heb geen API gebouwd, ik gebruik het NS component van Home Assistant welke gebruik maakt van de API van de NS. Die overigens in mijn ervaring prima, tijdig en juist is. Tijdens het debuggen van mijn toevoeging over de perron-informatie heb ik ook gewoon alle ritnummers en materieel voorbij zien komen, dus wat het grote verschil is zie ik niet zo.AW_Bos schreef op woensdag 15 november 2017 @ 17:50:
Is het niet leuker om een API te bouwen volgens de datastroom van het NDOV-loket.
De API van de NS zelf is erg verouderd, en niet heel accuraat. Somt toont hij gewoon treinen die gewoon uitgevallen zijn. Terwijl je met het NDOV-loket de actuele gegevens kan krijgen, en dus ook zelfs materieeltype en -nummer.
Maar please, proof me wrong en schrijf een NDOV module voor Home Assistant, dan ga ik daar ook mee spelen
Kwam toevallig langs dit artikel: https://seanb.co.uk/2017/...l-time-in-home-assistant/Timple schreef op woensdag 15 november 2017 @ 12:21:
Nice! Jammer dat ik net sinds een maandje ben overgestapt van trein naar auto...
Reageren is niet meer mogelijk