ūüďĎ Como saber os hor√°rios dos comboios da CP


(Rodolfo) #1

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.

  1. Abres no Chrome este link: http://infraestruturasdeportugal.pt/ e de seguida clicas em hor√°rios conforme podes ver na imagem que se segue:

  1. 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.

  1. Agora vais clicar em FERRAMENTAS DE PROGRAMADOR conforme vês na imagem abaixo

prog

  1. Vai aparecer um novo quadro, ter√°s que seleccionar XHR e depois clica em PESQUISAR.

  2. 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:


Como saber os hor√°rios dos comboios da CP
(Rodolfo) #2

Para comentares usa o seguinte tópico:


(Jorge Assunção) #3

Uma mensagem foi unida em um tópico existente: Como saber os horários dos comboios da CP


(Jorge Assunção) #4

(system) #5

Para comentares este tópico utiliza este link: