Open darth-aragoth opened 6 months ago
Nie ma żadnych błędów w logach? W momencie gdy pierwszy odjazd dojdzie do 0m powinny zostać pobrane kolejne odjazdy, może był jakiś błąd pobierania, przez co dane nie zostały zaktualizowane
Jak sprawdzałem wczoraj, nie było żadnych błędów w logach. Ale dziwna sprawa, dzisiaj integracja kompletnie przestała aktualizować dane, wszystkie karty z rozkładami są puste, a w logach mamy błąd 'Connection refused'. Nie wiem, czy tylko u mnie jest taki problem.
Rejestrator: homeassistant.components.sensor
Źródło: helpers/entity_platform.py:356
integracja: Sensor (dokumentacja, Problemy)
Pierwsze zdarzenie: 09:09:05 (1 zdarzenia)
Ostatnio zalogowany: 09:09:05
Error while setting up rozkladzik platform for sensor
Traceback (most recent call last):
File "/usr/local/lib/python3.12/site-packages/urllib3/connection.py", line 174, in _new_conn
conn = connection.create_connection(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/urllib3/util/connection.py", line 95, in create_connection
raise err
File "/usr/local/lib/python3.12/site-packages/urllib3/util/connection.py", line 85, in create_connection
sock.connect(sa)
ConnectionRefusedError: [Errno 111] Connection refused
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 715, in urlopen
httplib_response = self._make_request(
^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 404, in _make_request
self._validate_conn(conn)
File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 1058, in _validate_conn
conn.connect()
File "/usr/local/lib/python3.12/site-packages/urllib3/connection.py", line 363, in connect
self.sock = conn = self._new_conn()
^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/urllib3/connection.py", line 186, in _new_conn
raise NewConnectionError(
urllib3.exceptions.NewConnectionError: <urllib3.connection.HTTPSConnection object at 0x7f66a65700>: Failed to establish a new connection: [Errno 111] Connection refused
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/local/lib/python3.12/site-packages/requests/adapters.py", line 486, in send
resp = conn.urlopen(
^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 799, in urlopen
retries = retries.increment(
^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/urllib3/util/retry.py", line 592, in increment
raise MaxRetryError(_pool, url, error or ResponseError(cause))
urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='www.rozkladzik.pl', port=443): Max retries exceeded with url: /metropolia_gzm/data.txt (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7f66a65700>: Failed to establish a new connection: [Errno 111] Connection refused'))
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 356, in _async_setup_platform
await asyncio.shield(awaitable)
File "/usr/local/lib/python3.12/concurrent/futures/thread.py", line 58, in run
result = self.fn(*self.args, **self.kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/config/custom_components/rozkladzik/sensor.py", line 49, in setup_platform
dev.append(RozkladzikSensor(entity_id, name, city, stop_id, stop_name, group_mode, lines, directions))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/config/custom_components/rozkladzik/sensor.py", line 60, in __init__
self._city_data = self.get_city_data()
^^^^^^^^^^^^^^^^^^^^
File "/config/custom_components/rozkladzik/sensor.py", line 177, in get_city_data
response = requests.get(url_template.format(self._city))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/requests/api.py", line 73, in get
return request("get", url, params=params, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/requests/api.py", line 59, in request
return session.request(method=method, url=url, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 589, in request
resp = self.send(prep, **send_kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 703, in send
r = adapter.send(request, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/requests/adapters.py", line 519, in send
raise ConnectionError(e, request=request)
requests.exceptions.ConnectionError: HTTPSConnectionPool(host='www.rozkladzik.pl', port=443): Max retries exceeded with url: /metropolia_gzm/data.txt (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7f66a65700>: Failed to establish a new connection: [Errno 111] Connection refused'))
Wygląda na to, że www.rozkladzik.pl się na mnie obraził, bo nie potrafię nawet otworzyć ich strony :) Z innych adresów działa :/
Niestety na to nie jestem w stanie poradzić :(
Wiem :) w międzyczasie dostęp do strony się odblokował, zobaczymy czy teraz odświeżanie będzie działało na bieżąco.
Czy nie jest przypadkiem tak, że API rozkladzika ma jakiś limit zapytań? Bo znowu jestem zablokowany i wszystkie moje rozkłady wyglądają tak:
Tak, mają limit, najwyraźniej znowu "dokręcili śrubę". Możliwe, że aż do takiego poziomu, że integracja nie może działać :/
To może dałoby się zrobić parametr, który pozwoliłby zwiększyć czas odświeżania? Wtedy znowu nasili się problem z 'czasem do odjazdu', nie wiem czy to jest budowane przez integrację czy zwracane wprost tekstem, bo wtedy albo trzeba by to jakoś wyliczać albo w ogóle móc wyłączyć, pokazując jedynie godzinę odjazdu.
Zwiększenie częstotliwości odświeżania tylko pogorszy sprawę. W tym momencie dane są odświeżane tak rzadko, jak to możliwe (dopiero w momencie, kiedy pozycja znika z listy)
Ja właśnie miałem na myśli zmniejszenie częstotliwości - zwiększenie czasu odstępu między odświeżaniem :)
Ach, sorry, źle przeczytałem. Dalsze zmniejszenie czasu między odświeżeniami chyba nie ma sensu, bo by wprowadziło błędy w wyświetlanych danych.
Dla tego przykładu: odświeżenie nastąpi o 23:11, 23:43 i o 00:23
Niby tak, ale przynajmniej byłaby jakakolwiek informacja :) Teraz po zablokowaniu nie widać kompletnie nic, jak na którymś obrazku wyżej. A jeśli dałoby się wyłączyć ten segment:
to aż tak bardzo w błąd by nie wprowadzało, po prostu trzeba by sprawdzić, czy aktualna godzina nie jest większa niż ta pokazywana na rozkładzie.
Tabelkę możesz sobie sam wyrenderować z dowolnymi danymi w środku używając takiego szablonu:
<table width="100%" border=1 style="border: 1px black solid; border-collapse: collapse;">
{% for r in state_attr('sensor.rozkladzik_wroclaw_1709', 'list') -%}
<tr><td style="text-align: center; padding: 4px">{{r['line']}} kier. {{r['direction']}}: {{r['departure']}}</td></tr>
{%- endfor %}
'</table>
interwał odświeżania można zmienić już teraz:
sensor:
- platform: rozkladzik
city: 'wroclaw'
scan_interval: 3600
stops:
- id: 1281
name: 'Plac Grunwaldzki'
directions:
- "Reja"
- id: 94
name: 'Rynek'
stops_group_mode: true
lines:
- "33"
Problem polega na czasowym banowaniu IP przez rozkladzik.pl (na jak długo nie wiem, bo za pierwszym razem - bardzo dawno temu sądziłęm, że po prostu serwis został wyłączony - po banie nie można nawet otworzyć ich strony).
Wprawdzie nie udało mi się ustalić czy jest to quota na ilość pobranych danych czy na ilość zapytań, ale wydaje się, że to drugie - u znajomego, gdzie odjeżdzą kilka autobusów dziennie jak się okazuje integracja działą bezproblemowo, natomiast u siebie zdefiniowałęm 2 przystanki o częstym ruchu rzędu kilku minut i dane przestają być pobierane już koło 9 rano).
Sądzę że stały refresh dostatecznie rzadko mógł by pomóc (choć za cenę utraty części funkcjonalności) - może po prostu trzeba dopisać linijkę w dokumentacji i z ostrzeżeniem w FAQ?
Cześć ! Niby wszystko fajnie działa, dodałem potrzebne przystanki i autobusy, ale jest jakiś problem z odświeżaniem danych. Przykład: w momencie pisania tego posta jest godzina 23:30, a HA pokazuje, że najbliższy odjazd autobusu jest o 23:11 (0 minut), a kolejny 23:43 (32 minuty). Odświeżanie przeglądarki oczywiście sprawdzone i nie pomaga.
Nie dałoby się do konfiguracji dodać jakiegoś parametru typu refresh_interval, który wymuszałby aktualizację danych co x minut? Albo na sztywno ustalić np. 5 minut - częściej raczej nie ma sensu, a rzadziej z kolei mamy małą dezinformację :)