Hallo Leute,
Ich benutze seit längerem diesen Sensor um in Home Assistant die geplanten aufnahmen zu zeigen und die tv Steckdose zu schalten.
Seit einer weile funktioniert der Sensor leider nicht mehr. Kann mir jemand sagen was da faul ist?
Hallo Leute,
Ich benutze seit längerem diesen Sensor um in Home Assistant die geplanten aufnahmen zu zeigen und die tv Steckdose zu schalten.
Seit einer weile funktioniert der Sensor leider nicht mehr. Kann mir jemand sagen was da faul ist?
Moin,
wirlich, wenn ich in der Werkstatt anrufe und sage, In meinem Auto, funktioniert etwas nicht, könntest Du damit etwas anfangen?
Was funktioniert nicht und welche Meldungen kommen, wie ist das ganze eingerichtet, was bedeutet eine Weile?
Was hast Du vor dem, funktioniert der Sensor nicht, gemacht, Updates?
Ist ein Backup vorhanden und beim Zurückspielen geht es wieder?
Dieser HACS ist seit drei Jahren nicht mehr angefasst worden, kann also gut sein, dass das Ding nicht mehr mit dem aktuellen Home Assistant
VG
Bernd
P.S.: lesenswert, da haben sich die Macher/Betreiber des Forums mühe gegeben
Ja da steht das.
logger:%20homeassistant.components.sensor%0AQuelle%3A%20helpers/entity_platform.py:361%0AIntegration:%20Sensor%20(Dokumentation,%20Probleme)%0AErstmals%20aufgetreten:%2007:25:10%20(1%20Vorkommnisse)%0AZuletzt%20protokolliert:%2007:25:10%0A%0AError%20while%20setting%20up%20tvh_rec%20platform%20for%20sensor%0ATraceback%20(most%20recent%20call%20last):%0A%20%20File%20%22/usr/src/homeassistant/homeassistant/helpers/entity_platform.py%22,%20line%20361,%20in%20_async_setup_platform%0A%20%20%20%20await%20asyncio.shield(awaitable)%0A%20%20File%20%22/usr/local/lib/python3.12/concurrent/futures/thread.py%22,%20line%2058,%20in%20run%0A%20%20%20%20result%20=%20self.fn(*self.args,%20**self.kwargs)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%0A%20%20File%20%22/config/custom_components/tvh_rec/sensor.py%22,%20line%2087,%20in%20setup_platform%0A%20%20%20%20HtsSensor(%0A%20%20File%20%22/config/custom_components/tvh_rec/sensor.py%22,%20line%20106,%20in%20__init__%0A%20%20%20%20self._data%20=%20self._fetch(self._auth,%20self._url,%20self._cnt)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%0A%20%20File%20%22/config/custom_components/tvh_rec/sensor.py%22,%20line%2019,%20in%20fetch_data%0A%20%20%20%20r%20=%20requests.post('%25s/api/dvr/entry/grid_upcoming'%20%25%20url,%20data=d,%20auth=a)%0A%20%20%20%20%20%20%20%20%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%0A%20%20File%20%22/usr/local/lib/python3.12/site-packages/requests/api.py%22,%20line%20115,%20in%20post%0A%20%20%20%20return%20request(%22post%22,%20url,%20data=data,%20json=json,%20**kwargs)%0A%20%20%20%20%20%20%20%20%20%20%20%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%0A%20%20File%20%22/usr/local/lib/python3.12/site-packages/requests/api.py%22,%20line%2059,%20in%20request%0A%20%20%20%20return%20session.request(method=method,%20url=url,%20**kwargs)%0A%20%20%20%20%20%20%20%20%20%20%20%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%0A%20%20File%20%22/usr/local/lib/python3.12/site-packages/requests/sessions.py%22,%20line%20589,%20in%20request%0A%20%20%20%20resp%20=%20self.send(prep,%20**send_kwargs)%0A%20%20%20%20%20%20%20%20%20%20%20%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%0A%20%20File%20%22/usr/local/lib/python3.12/site-packages/requests/sessions.py%22,%20line%20710,%20in%20send%0A%20%20%20%20r%20=%20dispatch_hook(%22response%22,%20hooks,%20r,%20**kwargs)%0A%20%20%20%20%20%20%20%20%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%0A%20%20File%20%22/usr/local/lib/python3.12/site-packages/requests/hooks.py%22,%20line%2030,%20in%20dispatch_hook%0A%20%20%20%20_hook_data%20=%20hook(hook_data,%20**kwargs)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%0A%20%20File%20%22/usr/local/lib/python3.12/site-packages/requests/auth.py%22,%20line%20276,%20in%20handle_401%0A%20%20%20%20_r%20=%20r.connection.send(prep,%20**kwargs)%0A%20%20%20%20%20%20%20%20%20%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%0A%20%20File%20%22/usr/local/lib/python3.12/site-packages/requests/adapters.py%22,%20line%20667,%20in%20send%0A%20%20%20%20resp%20=%20conn.urlopen(%0A%20%20%20%20%20%20%20%20%20%20%20%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%0A%20%20File%20%22/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py%22,%20line%20716,%20in%20urlopen%0A%20%20%20%20httplib_response%20=%20self._make_request(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%0A%20%20File%20%22/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py%22,%20line%20416,%20in%20_make_request%0A%20%20%20%20conn.request(method,%20url,%20**httplib_request_kw)%0A%20%20File%20%22/usr/local/lib/python3.12/site-packages/urllib3/connection.py%22,%20line%20244,%20in%20request%0A%20%20%20%20super(HTTPConnection,%20self).request(method,%20url,%20body=body,%20headers=headers)%0A%20%20File%20%22/usr/local/lib/python3.12/http/client.py%22,%20line%201336,%20in%20request%0A%20%20%20%20self._send_request(method,%20url,%20body,%20headers,%20encode_chunked)%0A%20%20File%20%22/usr/local/lib/python3.12/http/client.py%22,%20line%201377,%20in%20_send_request%0A%20%20%20%20self.putheader(hdr,%20value)%0A%20%20File%20%22/usr/local/lib/python3.12/site-packages/urllib3/connection.py%22,%20line%20224,%20in%20putheader%0A%20%20%20%20_HTTPConnection.putheader(self,%20header,%20*values)%0A%20%20File%20%22/usr/local/lib/python3.12/http/client.py%22,%20line%201313,%20in%20putheader%0A%20%20%20%20if%20_is_illegal_header_value(values%5Bi%5D):%0A%20%20%20%20%20%20%20%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%0ATypeError:%20expected%20string%20or%20bytes-like%20object,%20got%20'NoneType'%0A
Die ip hat sich nicht geändert die ist fest vergeben. Und tv schauen über die tvheaden App oder Plex funktioniert einwandfrei.
by HarryP: Code-/Logzeilen formatiert (bitte immer in </> einbinden)
Moin,
erst einmal Danke für den Teil aus dem Log, jetzt aber zum großen Aber, womit hast Du das denn ausgeschnitten, das ist ja voll von irgendwelchen html gedönse.
Das muss ich mir jetzt erst einmal in ein vernünftiges Format bringen, damit man da was lesen kann ![]()
Kann etwas dauern.
VG
Bernd
Das hab ich einfach in der App auf den kopieren Button gedrückt. Kann dir das auch noch mal versuchen anders zu kopieren.
Logger: homeassistant.components.sensor
Quelle: helpers/entity_platform.py:361
Integration: Sensor (Dokumentation, Probleme)
Erstmals aufgetreten: 07:25:10 (1 Vorkommnisse)
Zuletzt protokolliert: 07:25:10
Error while setting up tvh_rec platform for sensor
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 361, 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/tvh_rec/sensor.py", line 87, in setup_platform
HtsSensor(
File "/config/custom_components/tvh_rec/sensor.py", line 106, in __init__
self._data = self._fetch(self._auth, self._url, self._cnt)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/config/custom_components/tvh_rec/sensor.py", line 19, in fetch_data
r = requests.post('%s/api/dvr/entry/grid_upcoming' % url, data=d, auth=a)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/requests/api.py", line 115, in post
return request("post", url, data=data, json=json, **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 710, in send
r = dispatch_hook("response", hooks, r, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/requests/hooks.py", line 30, in dispatch_hook
_hook_data = hook(hook_data, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/requests/auth.py", line 276, in handle_401
_r = r.connection.send(prep, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/requests/adapters.py", line 667, in send
resp = conn.urlopen(
^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 716, in urlopen
httplib_response = self._make_request(
^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 416, in _make_request
conn.request(method, url, **httplib_request_kw)
File "/usr/local/lib/python3.12/site-packages/urllib3/connection.py", line 244, in request
super(HTTPConnection, self).request(method, url, body=body, headers=headers)
File "/usr/local/lib/python3.12/http/client.py", line 1336, in request
self._send_request(method, url, body, headers, encode_chunked)
File "/usr/local/lib/python3.12/http/client.py", line 1377, in _send_request
self.putheader(hdr, value)
File "/usr/local/lib/python3.12/site-packages/urllib3/connection.py", line 224, in putheader
_HTTPConnection.putheader(self, header, *values)
File "/usr/local/lib/python3.12/http/client.py", line 1313, in putheader
if _is_illegal_header_value(values[i]):
by HarryP:
. Zusammenführung Doppelpost (bitte “bearbeiten” Funktion nutzen)
. Code-/Logzeilen formatiert (bitte immer in </> einbinden)
Moin,
also genau mit dem von Dir erstellten sensor ist etwas nicht ok.
Das wurde auch vor zwei Wochen, schon auf Github per Issue gemeldet, ich denke, das warst Du ![]()
Dann gehe ich davon aus, dass es hier eine Inkompatibilität zum aktuellen HA gibt, das der Entwickler, oder ein anderer im Sourcecode fixen muss
Ich bin in den Dingen noch nicht so gut, aber soweit ich das berschaue, nutzt Du auch noch die alte Form

Das sollte nach neustem Standard aber so aussehen
template:
- sensor:
- name: "Temperature"
unit_of_measurement: "°C"
..
Das kann man heute auch gut mittel UI in HA machen
Ob das jetzt alles zusammenhängt, kann ich nicht beurteilen, da müsstest Du einen Versuch starten.
VG
Bernd
Morgen Bernd,
Erst mal danke für deine Hilfe.
Aber ich denke erst muss mal dieser Sensor funktionieren.
sensor:
- platform: tvh_rec
name: rec
username:
password:
url: http://10.100.1.3:9981
scan_interval: 120
count: 3
Der ander übernimmt ja dann nur die Daten von dem.
Ich denke mal hier haut irgendwas mit der Sensor.py nicht mehr hin. Nur leider hab ich davon absolut keine Ahnung ![]()
Moin,
ja, das habe ich auch geschrieben ![]()
Dass da der Entwickler etwas machen muss, nur scheint das Repository seit 2 - 3 Jahre verweist zu sein.
In die sensor.py habe ich schon hineingeschaut, aber dazu muss ich auch noch viel lernen, und ganz ohne Kommentare im Code ist halt alles nicht so einfach.
Tut mir leid, dass ich nicht weiter helfen konnte.
VG
Bernd
P.S.: Das sind ja die Zeilen, in der sensor.py` die angemeckert werden
File "/config/custom_components/tvh_rec/sensor.py", line 87, in setup_platform
HtsSensor(
File "/config/custom_components/tvh_rec/sensor.py", line 106, in __init__
self._data = self._fetch(self._auth, self._url, self._cnt)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/config/custom_components/tvh_rec/sensor.py", line 19, in fetch_data
r = requests.post('%s/api/dvr/entry/grid_upcoming' % url, data=d, auth=a)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Ich hab mal bissel rum probiert und ich denke es liegt daran das der sensor nicht die daten aus Homeassistant abgreifen kann.
Error while setting up tvh_rec platform for sensor
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 366, in _async_setup_platform
await asyncio.shield(awaitable)
File "/usr/local/lib/python3.13/concurrent/futures/thread.py", line 58, in run
result = self.fn(*self.args, **self.kwargs)
File "/config/custom_components/tvh_rec/sensor.py", line 87, in setup_platform
HtsSensor(
~~~~~~~~~^
config.get(CONF_URL),
^^^^^^^^^^^^^^^^^^^^^
...<3 lines>...
config.get(CONF_REC_COUNT),
^^^^^^^^^^^^^^^^^^^^^^^^^^^
Das scheint das hauptproblem zu sein.
by HarryP: Code-/Logzeilen formatiert (bitte immer in </> einbinden)
Moin,
ich müsste mir hier erst alles wieder anlesen, um den Kontext zu verstehen ![]()
Nein das sind keine Daten in HA, sondern die URL kann nicht aufgelöst werden
config.get(CONF_URL),
Aber wie gesagt, aus dem Thema bin ich aktuell raus, dazu müsste ich von vorne anfangen.
Dann eine Bitte, Code, oder Logtext, bitte immer in Code-Tags </> dann liest es sich besser ![]()

VG
Bernd
Na ja das sind ja die daten die in der configuration.yaml hinterlegt werden.
sensor:
- platform: tvh_rec
name: rec
username: test
password: test
url: http://10.100.1.3:9981
scan_interval: 120
count: 3
Moin,
wie geschrieben, bin da aktuell nicht im Thema, muss ich, wenn Zeit ist erst einmal wieder anschauen.
VG
Bernd
P.S.: @syrincs schon mal hier nachgelesen?
das ist ist nicht wichtig solange der erste Sensor nicht funktioniet der die API von tvheadend ausliest.
Der Template sensor ist dann nur für die abbildung ob gerade eine Aufnahme läuft.
Ich hab den Sensor nun umgestellt auf REST.
- platform: rest
name: rec1
resource: http://10.100.1.3:9981/api/dvr/entry/grid_upcoming
username: patrick
password: Toto1234
method: GET
headers:
Content-Type: application/json
value_template: "{{ value_json.total }}"
json_attributes:
- entries
- platform: template
sensors:
rec_aktiv:
value_template: >-
{% set entries = state_attr('sensor.rec1', 'entries') %}
{% if entries %}
{% set sorted_entries = entries | sort(attribute='start') %}
{% set entry = sorted_entries[0] %}
{% set airdate = entry.start %}
{% set runtime = entry.duration %}
{% if airdate and runtime is not none %}
{% set target_timestamp_start = airdate %}
{% set target_timestamp_end = target_timestamp_start + runtime * 60 %}
{% set current_timestamp = as_timestamp(now()) %}
{% if current_timestamp >= target_timestamp_start - 420 and current_timestamp <= target_timestamp_end + 240 %}
Aufnahme läuft
{% else %}
keine Aufnahme
{% endif %}
{% else %}
keine Aufnahme
{% endif %}
{% else %}
keine Aufnahme
{% endif %}
friendly_name: "Aufnahme aktiv"