Home-assistant-train-on-time
“O próximo comboio está à tabela?" scraper com aplicação no Home-assistant”
Atualmente não funciona no hass.io porque a instalação do jq é quase impossível nesse ambiente.
Este utilitário diz se o próximo comboio está à tabela, isto é, a horas ou atrasado.
Isto é feito obtendo o resultado de uma pesquisa no site das Infraestruturas de Portugal e apresenta-os no vosso Home-assistant (HA) como um sensor.
De cada vez que o utilizador acede ao Graphical User Interface (GUI) do seu HA, os valores são obtidos no website e apresentados.
Isto significa que têm de alterar o ‘configuration.yaml’ do vosso HA e adicionar um sensor ‘command_line’ para executar o script.
O website aos pedidos feitos a um URL criado para o pedido com um texto em json. O script necessita do jq para interpretar a resposta em json e por isso o utilitário terá de estar disponível no vosso sistema.
HOW-TO
Primeiro terão de instalar o jq.
- ‘sudo apt-get install jq’
Depois terão de obter os identificadores únicos da estação de origem e destino.
- Abram o web browser (Firefox serve) e neste, os developer tools (Geralmente carregando na tecla F12 key).
- Selecionem o network tab dos development tools para poderem ler os pedidos do browser para o servidor.
- Vão ao site
http://infraestruturasdeportugal.pt/negocios-e-servicos/horarios
. - Introduzam o nome completo da estação de origem (como aparecer no ecrã, maiúsculas e tudo) e estejam com ao pedido de GET que ele vai criar para
http://infraestruturasdeportugal.pt/rede/estacoes/json/YOURTRAINSTRATION
- Carreguem nesse pedido como o botão direito do rato e escolham “Open in new tab”.
- Como resultado irão obter um para:
id
ename
. - Tomem nota do valore do id. Vão precisar dele para executar o script.
- Repitam os passos acima para obterem o id da estação de destino.
- Coloquem o ficheiro
is-next-train-on-time.sh
num diretório que o user do HA possa aceder. - Transformem num ficheiro executável com a seguinte instrução
chmod +x /path/to/train-in-time.sh
Alterar o configuration.yaml
No vosso configuration.yaml
adicionem um command_line sensor
:
’ sensor:
- platform: command_line
name: “O meu comboio está à tabela?”
command: “/path/to/is-next-train-on-time.sh YOURTRAINSTRATIONID DESTINATIONSTATION”’