Olá, hoje vou apresentar uma maneira fácil de conseguires saber o estado real dos comboios da tua estação , ou estações.
Esta ideia surgiu por causa de um colega de trabalho,que anda muito de comboio e por vezes chegava à estação e o comboio tinha atrasos, ou tinha que consultar antes de sair de casa o site das infraestruturas de Portugal para ver o estado real do comboio.
Com esta integração , depois poderás fazer várias automações deixo para a tua imaginação.
Ok vamos começar?
Primeiro que tudo, eu uso o browser chrome, não sei se funciona em outros browsers para sacares a informação seguinte.
- Abres no Chrome este link: http://infraestruturasdeportugal.pt/ e de seguida clicas em horários conforme podes ver na imagem que se segue:
- De seguida vai te aparecer uma nova janelas como podes ver na imagem.
Nesse caso eu escolhi PARTIDAS e escolhi a estação AZAMBUJA a data terás que escolher o dia actual.
- Agora vais clicar em FERRAMENTAS DE PROGRAMADOR conforme vês na imagem abaixo
-
Vai aparecer um novo quadro, terás que seleccionar XHR e depois clica em PESQUISAR.
-
De seguida vai te aparecer o que vês na imagem abaixo…copia o link que te aparece e guarda-o em um bloco de notas vais precisar dele.
Desta parte estás despachado, parte da magia tá feita.
Agora no teu configuration.yaml vais ter que adicionar estas linhas:
whitelist_external_dirs:
- /config
- /config/script
Vai ficar algo parecido com isto:
homeassistant:
name: Geral
latitude: !secret latitude_home
longitude: !secret longitude_home
elevation: 17
unit_system: metric
time_zone: Europe/Lisbon
customize: !include customize.yaml
customize_glob: !include customize_glob.yaml
packages: !include_dir_named packages
whitelist_external_dirs:
- /config
- /config/script
config:
De seguida crias uma pasta chamada script e coloca dentro da tua pasta /config
Depois dentro da pasta script crias um ficheiro com o nome : comboio.sh atenção o sh é a extensão.
Uma vez que já tens o ficheiro comboio.sh dentro da pasta script vais agora colar o que te mostro abaixo dentro do ficheiro comboio.sh
ATENÇÃO altera o link que vês pelo que te mandei guardar no bloco de notas
#!/bin/bash
YEAR=$(date +%Y)
MONTH=$(date +%m)
DAY=$(date +%d)
wget "http://infraestruturasdeportugal.pt/negocios-e-servicos/horarios/partidas/9433001/"$YEAR"-"$MONTH"-"$DAY"T00:00:00+"$YEAR"-"$MONTH"-"$DAY"T23:59:59" -O /config/comboio.json
NOTA IMPORTANTE
Eu uso o editor de ficheiros NOTEPAD++ para salvares o ficheiro, tens que antes o converter em UNIX.
Podes fazer como te demonstro na imagem que se segue:
Ok, caso uses ficheiros PACKAGES cria um novo ficheiro como o nome que quiseres. Ex:( comboio.yaml ) e cola o que ves em baixo dentro desse ficheiro.
homeassistant:
###############################################################################
# #
# C U S T O M I Z E #
# #
###############################################################################
customize:
sensor.linha0:
icon: mdi:train
friendly_name: Primeiro Comboio
sensor.linha1:
icon: mdi:train
friendly_name: Segundo Comboio
sensor.linha2:
icon: mdi:train
friendly_name: Terceiro Comboio
sensor.linha3:
icon: mdi:train
friendly_name: Quarto Comboio
sensor.linha4:
icon: mdi:train
friendly_name: Quinto Comboio
sensor.linha5:
icon: mdi:train
friendly_name: Quinto Comboio
shell_command:
comboio: 'bash /config/script/comboio.sh'
sensor:
#Linha0
- platform: file
name: linha0horachegada
file_path: /config/comboio.json
value_template: "{{ value_json.HorarioDetalhe.0.HoraChegada.split(' ')[1][:5] }}"
- platform: file
name: linha0nome
file_path: /config/comboio.json
value_template: '{{ value_json.HorarioDetalhe.0.Nome }}'
- platform: file
name: linha0origem
file_path: /config/comboio.json
value_template: '{{ value_json.HorarioDetalhe.0.EstacaoOrigem.Nome }}'
- platform: file
name: linha0destino
file_path: /config/comboio.json
value_template: '{{ value_json.HorarioDetalhe.0.EstacaoDestino.Nome }}'
- platform: file
name: linha0atraso
file_path: /config/comboio.json
value_template: '{{ value_json.HorarioDetalhe.0.EstadoComboio.Nome }}'
- platform: template
sensors:
linha0:
value_template: "Chegada à estação da Azambuja {{states.sensor.linha0horachegada.state}} Comboio {{states.sensor.linha0nome.state}} origem {{states.sensor.linha0origem.state}} destino {{states.sensor.linha0destino.state}} estado {{states.sensor.linha0atraso.state}}"
linha1:
value_template: "Chegada à estação da Azambuja {{states.sensor.linha1horachegada.state}} Comboio {{states.sensor.linha1nome.state}} origem {{states.sensor.linha1origem.state}} destino {{states.sensor.linha1destino.state}} estado {{states.sensor.linha1atraso.state}}"
linha2:
value_template: "Chegada à estação da Azambuja {{states.sensor.linha2horachegada.state}} Comboio {{states.sensor.linha2nome.state}} origem {{states.sensor.linha2origem.state}} destino {{states.sensor.linha2destino.state}} estado {{states.sensor.linha2atraso.state}}"
linha3:
value_template: "Chegada à estação da Azambuja {{states.sensor.linha3horachegada.state}} Comboio {{states.sensor.linha3nome.state}} origem {{states.sensor.linha3origem.state}} destino {{states.sensor.linha3destino.state}} estado {{states.sensor.linha3atraso.state}}"
linha4:
value_template: "Chegada à estação da Azambuja {{states.sensor.linha4horachegada.state}} Comboio {{states.sensor.linha4nome.state}} origem {{states.sensor.linha4origem.state}} destino {{states.sensor.linha4destino.state}} estado {{states.sensor.linha4atraso.state}}"
#Linha1
- platform: file
name: linha1horachegada
file_path: /config/comboio.json
value_template: "{{ value_json.HorarioDetalhe.1.HoraChegada.split(' ')[1][:5] }}"
- platform: file
name: linha1nome
file_path: /config/comboio.json
value_template: '{{ value_json.HorarioDetalhe.1.Nome }}'
- platform: file
name: linha1origem
file_path: /config/comboio.json
value_template: '{{ value_json.HorarioDetalhe.1.EstacaoOrigem.Nome }}'
- platform: file
name: linha1destino
file_path: /config/comboio.json
value_template: '{{ value_json.HorarioDetalhe.1.EstacaoDestino.Nome }}'
- platform: file
name: linha1atraso
file_path: /config/comboio.json
value_template: '{{ value_json.HorarioDetalhe.1.EstadoComboio.Nome }}'
#Linha2
- platform: file
name: linha2horachegada
file_path: /config/comboio.json
value_template: "{{ value_json.HorarioDetalhe.2.HoraChegada.split(' ')[1][:5] }}"
- platform: file
name: linha2nome
file_path: /config/comboio.json
value_template: '{{ value_json.HorarioDetalhe.2.Nome }}'
- platform: file
name: linha2origem
file_path: /config/comboio.json
value_template: '{{ value_json.HorarioDetalhe.22.EstacaoOrigem.Nome }}'
- platform: file
name: linha2destino
file_path: /config/comboio.json
value_template: '{{ value_json.HorarioDetalhe.22.EstacaoDestino.Nome }}'
- platform: file
name: linha2atraso
file_path: /config/comboio.json
value_template: '{{ value_json.HorarioDetalhe.2.EstadoComboio.Nome }}'
#Linha3
- platform: file
name: linha3horachegada
file_path: /config/comboio.json
value_template: "{{ value_json.HorarioDetalhe.3.HoraChegada.split(' ')[1][:5] }}"
- platform: file
name: linha3nome
file_path: /config/comboio.json
value_template: '{{ value_json.HorarioDetalhe.3.Nome }}'
- platform: file
name: linha3origem
file_path: /config/comboio.json
value_template: '{{ value_json.HorarioDetalhe.3.EstacaoOrigem.Nome }}'
- platform: file
name: linha3destino
file_path: /config/comboio.json
value_template: '{{ value_json.HorarioDetalhe.3.EstacaoDestino.Nome }}'
- platform: file
name: linha3atraso
file_path: /config/comboio.json
value_template: '{{ value_json.HorarioDetalhe.3.EstadoComboio.Nome }}'
#Linha4
- platform: file
name: linha4horachegada
file_path: /config/comboio.json
value_template: "{{ value_json.HorarioDetalhe.4.HoraChegada.split(' ')[1][:5] }}"
- platform: file
name: linha4nome
file_path: /config/comboio.json
value_template: '{{ value_json.HorarioDetalhe.4.Nome }}'
- platform: file
name: linha4origem
file_path: /config/comboio.json
value_template: '{{ value_json.HorarioDetalhe.4.EstacaoOrigem.Nome }}'
- platform: file
name: linha4destino
file_path: /config/comboio.json
value_template: '{{ value_json.HorarioDetalhe.4.EstacaoDestino.Nome }}'
- platform: file
name: linha4atraso
file_path: /config/comboio.json
value_template: '{{ value_json.HorarioDetalhe.4.EstadoComboio.Nome }}'
automation:
- alias: download ficheiro comboio
initial_state: true
trigger:
- platform: time
minutes: '/10'
seconds: '00'
action:
- service: shell_command.comboio
Agora dentro do teu groups.yaml ou onde queiras por chama estes sensores:
- sensor.linha0
- sensor.linha1
- sensor.linha2
- sensor.linha3
- sensor.linha4
De seguida vai a tua pasta /config e coloca la dentro este FICHEIRO
O que esta configuração faz??
Esta configuração vai fazer com que seja descarregado para a tua pasta config de 10 em 10 min um ficheiro em formato json, que tem a informação da estação que escolheste, e vai ser mostrado no teu front end os primeiros 5 comboios.
Agora que já fizeste tudo, podes reiniciar o teu Home Assistant e para veres se o ficheiro está a ser descarregado manualmente podes fazer o que ves abaixo:
E se tudo correr bem vais te aparecer no frontend algo este estilo: