PiotrMachowski / Home-Assistant-custom-components-iMPK

This sensor uses unofficial API retrieved by decompilation of iMPK application to provide a list of MPK Wrocław news available in original app.
MIT License
16 stars 1 forks source link

zmiana ilości autobusów w departures #4

Open goldiwro opened 2 years ago

goldiwro commented 2 years ago

Cześć, czy trudne by było ograniczenie wyswietlania następnych autobusów do powiedzmy 30min w przód w tabeli departures? Aktualnie wyświetlają sie wszystkie autobusy które są dostepne w IMPK, nie ma potrzeby informowania o autobusach które przyjąda za godzinę :) Wydaje mi sie że trzeba zmodyfikować pętlę w linijce 156 w sensor.py, ale nie umiem tak w pytona żeby napisac coś sensownego. dzięki za pomoc :)

Wrotaz commented 1 day ago

Pytanie bardzo stare, ale może rozwiazanie komuś się przyda. Zamiast zmieniać kod komponentu można zmodyfikować wyświetlanie samej listy odjazdów. Komponent dostarcza informacje nie tylko w postaci tabelki zbiorczej, ale także szczegółowej listy. Oto przykład prezentacji przy wykorzystaniu html-template-card z ograniczeniem do odjazdów w ciagu najbliższych 120 minut:

type: custom:html-template-card
title: iMPK - odjazdy w stronę CENTRUM
ignore_line_breaks: true
content: >
  <table width="100%" border="1" style="border: 1px solid black;
  border-collapse: collapse;">
    <tr>
      <th style="padding: 4px; text-align: center; font-size: 1.3em; width: 22%;">Numer</th>
      <th style="padding: 4px; text-align: center; font-size: 1.3em; width: 22%;">Czas do odjazdu</th>
      <th style="padding: 4px; text-align: center; font-size: 1.3em; width: 22%;">Godzina</th>
      <th style="padding: 4px; text-align: center; font-size: 1.3em; width: 33%;">Kierunek</th>
    </tr>
    {% for departure in state_attr('sensor.impk_12518', 'list') %}
    {% if departure.time_to_departure <= 120 %}
    <tr>
      <td style="padding: 4px; text-align: center; font-size: 1.3em;">{{ departure.line }}</td>
      <td style="padding: 4px; text-align: center; font-size: 1.3em;
        {% if departure.time_to_departure <= 5 %}color: red; font-weight: bold;
        {% elif departure.time_to_departure > 5 and departure.time_to_departure <= 10 %}color: orange; font-weight: bold;
        {% elif departure.time_to_departure > 10 and departure.time_to_departure <= 20 %}color: green; font-weight: bold;
        {% endif %}
      ">{{ departure.time_to_departure }}m</td>
      <td style="padding: 4px; text-align: center; font-size: 1.3em;">{{ departure.departure }}</td>
      <td style="padding: 4px; text-align: center; font-size: 0.8em; text-transform: capitalize; white-space: nowrap;">{{ departure.direction | lower }}</td>
    </tr>
    {% endif %}
    {% endfor %}
   </table>

Efekt jest taki:

image