Odjazdy na żywo PKP

Witam,

Ostatnio zauważyłem na stronie rozklad-pkp.pl że można wyświetlić sobie na żywo odjazdy z wybranej stacji kolejowej, wystarczy wyszukać staję i kliknąć TICKER DLA TABLICY STACYJNEJ wychodzi coś takiego:

Przechwytywanie

Chciałbym jakoś te dane wyciągnąć do HA i zrobić kartę coś jak w tym temacie:

Próbowałem wyciągnąć dane w NR jak w ww przykładzie, ale dostaję błędy, przed debugowaniu strony też nie rzuciły mi się w oczy właściwe dane do wyciągnięcia. Proszę o pomoc.

Cześć,
jakieś postępy w tym pomyśle?

Postępy były, dane wyciągnąłem ale niestety PKP po kilku godzinach blokuje adres IP ze względu na duży ruch, zrobiłem nawet przycisk aby odpytywało serwer jak potrzebuję danych ale i tak po 2-3 użyciach dziennie blokowali IP. Z tego powodu dalsze prace zarzuciłem.

Odświeżę temat, bo dzięki stronie bilkom udało się stworzyć coś takiego:

kaliska

Fajnie tylko co nam - użytkownikom forum - to daje? Wiemy, że można więc koledzy “do roboty” :wink:.

2 Likes

Coś w tym stylu :wink: tutaj flow do NodeRED
pkp.zip (2,2 KB)

Oraz karta:

type: custom:vertical-stack-in-card
cards:
  - type: custom:html-template-card
    ignore_line_breaks: true
    content: >
      <style>
        .center-header { text-align: center; width: 100%; }
        table { margin-bottom: -15px; } /* Reduce bottom margin of the header table */
      </style> <table width="100%" border="0" style="border: 0px black solid;
      border-collapse: collapse;"> <!-- Header Row --> <tr> <!-- Icon Cell -->
      <td class="icon" width="20%" style="padding: 4px 4px 2px 4px;"> <span
      style="color: royalblue;" data-darkreader-inline-color="">
        <ha-icon icon="mdi:train-variant"></ha-icon>
      </span> </td> <!-- Title Cell --> <td class="center-header" colspan="2"
      style="padding: 4px 4px 2px 4px;"> <span style="color: white;"
      data-darkreader-inline-color="">
        <b>Łódź Kaliska</b>
      </span> </td> <!-- Sensor Cell --> <td width="15%" style="text-align:
      center; padding: 4px 4px 2px 4px;"> <span style="color: white"
      data-darkreader-inline-color="">
        {{ states('sensor.time') }}
      </span> </td> </tr>
  - type: custom:flex-table-card
    entities:
      include:
        - sensor.lodz_kaliska_1
        - sensor.lodz_kaliska_2
        - sensor.lodz_kaliska_3
        - sensor.lodz_kaliska_4
        - sensor.lodz_kaliska_5
        - sensor.lodz_kaliska_6
        - sensor.lodz_kaliska_7
        - sensor.lodz_kaliska_8
        - sensor.lodz_kaliska_9
        - sensor.lodz_kaliska_10
    columns:
      - name: ' '
        data: przewoznik
        icon: mdi:train
        align: center
        modify: |-
          if (x.length == 0) {
            " ";
          } else
          switch(true) {
            case x.includes('TLK'):
              '<div style="background-color: blue; color: white;">' + x + '</div>';
              break;
            case x.includes('LP'):
              '<div style="background-color: lightgoldenrodyellow; color: black;">' + x + '</div>';
              break;
            case x.includes('L'):
              '<div style="background-color: yellow; color: black;">' + x + '</div>';
              break;
            case x.includes('IC'):
              '<div style="background-color: orange; color: black;">' + x + '</div>';
              break;
            case x.includes('IR'):
              '<div style="background-color: darkred; color: white;">' + x + '</div>';
              break;
            case x.includes('R'):
              '<div style="background-color: red; color: white;">' + x + '</div>';
              break;
            case x.includes('KW'):
              '<div style="background-color: magenta; color: white;">' + x + '</div>';
              break;
            default:
              x;
          }
      - name: ' '
        data: czas
        icon: mdi:clock-outline
        align: center
        modify: if(x.length == 0){" "}else{x}
      - name: ' '
        data: opoznienie
        icon: mdi:clock-alert-outline
        align: center
        modify: |-
          if (x.length == 0) {
            " ";
          } else {
            if (x === "+0'") {
              '<div style="color: green;">' + x + '</div>';
            } else {
              '<div style="color: red;">' + x + '</div>';
            }
          }
      - name: ' '
        data: kierunek
        icon: mdi:directions-fork
        align: c
        modify: if(x.length == 0){" "}else{x}
    css:
      tbody tr td:nth-child(1)+: 'min-width: 73px;width: 73px;'
      tbody tr td:nth-child(2)+: 'min-width: 43px;width: 43px;'
      tbody tr td:nth-child(3)+: 'min-width: 38px;width: 38px;'

Potrzeba zainstalować z HACS: custom:vertical-stack-in-card, custom:html-template-card i custom:flex-table-card

3 Likes