Follow along with the video below to see how to install our site as a web app on your home screen.
Anmerkung: This feature may not be available in some browsers.
Ist das dann nicht eher eine Sache des Gerätes selbst? Stichwort dazu wäre wohl CEC (kann damit jetzt aber auch voll daneben liegen ) Also für mich hört sich das in erster Linie so an, als müsste man Kodi/TV-Headend (hab ich von allem keine Ahnung) sagen, dass er die CEC-Anweisung ignorieren soll (bzw. erst später ausführen soll), solange noch eine Aufnahme läuft. Hat in meinen Augen jetzt erstmal nicht so wirklich was mit HA zu tun. Problem ist dabei vermutlich: Wenn man die Anweisung des Ausschaltens via CEC ignoriert - wie kriegt man dann später den Fernseher dazu sich auszuschalten? Also jetzt mal abgesehen von Dingen wie einer schaltbaren Steckdose oder so... Ich vermute mal, dass Du das TV-Gerät selbst nicht direkt in HA integriert hast, oder? Das wäre noch eine Möglichkeit die mir dazu einfallen würde, ansonsten seh ich da eher schwarz bei der Thematik.Gerät auf dem Kodi und TV-Headend läuft wird heruntergefahren wenn der Fernseher ausgeschaltet wird
Ja so habe ich es auch gedacht. Ich habe zwar kein plan was CEC ist da die Fernbedienung des TV nicht für Kodi genutzt wird. Ist das wenn ich es bisher richrig verstanden habe auch egal.Wenn das Ding wieder hochfahren soll (bzw. Steckdose geschaltet wird), bevor eine neue Aufnahme startet, müsstest Du Dich wohl an den Zeitangaben der Aufnahme-Termine orientieren und vermutlich irgendwas in die Richtung angeben: Steckdose einschalten um "<Film-Startzeit> -5 Minuten". Wobei das auch ein wenig kurz gedacht ist, vermutlich eher etwas in die Richtung: "WENN Steckdose aus UND nächste Aufnahme-Startzeit <= 5 Minuten DANN Steckdose einschalten".
{{ as_timestamp(entry.airdate) | timestamp_custom("%A, den %d.%m.%Y um %H:%M") }}
- platform: template
sensors:
rec_startzeit:
value_template: >-
{% set new_data = state_attr('sensor.rec', 'data')|from_json %}
{{ as_timestamp(new_data[1].airdate) | float - 5 }}
friendly_name: Aufnahme Startzeit
rec_endzeit:
value_template: >-
{% set new_data = state_attr('sensor.rec', 'data')|from_json %}
{{ as_timestamp(new_data[1].airdate) | float + new_data[1].runtime | float + 5 }}
friendly_name: Aufnahme Endzeit
{% set target_timestamp = as_timestamp("2022-04-04T12:56:00") %}
{% set current_timestamp = as_timestamp(states('sensor.date_time_iso')) %}
{% if current_timestamp >= target_timestamp - 300 and current_timestamp <= target_timestamp %}
{{ "Zielzeit ist in weniger als 5 Minuten erreicht." }}
{% elif current_timestamp > target_timestamp %}
{{ "Zielzeit ist überschritten." }}
{% else %}
{{ "Zielzeit ist noch länger hin." }}
{% endif %}
Ja, das ist in der Programmierung immer so. Manche Sprachen sind gnädig und rechnen beispielsweise "5" + 5 (String, Zahl) miteinander, andere nicht - HA scheint zu letzteen zu gehören.Sehe ich es richtig das ich diese Zahl erstmal ins richtige Format bekommen muss, bevor ich mit den vergleichen beginne?
Bei Excel zum Beispiel ist es vollkommen egal wie die Zahlen formatiert werden. Es wird denoch korrekt gerechnet.
{% set runtime = 1 %}
{% set target_timestamp_start = as_timestamp("2022-04-04T13:34:00") %}
{% set target_timestamp_end = target_timestamp_start + runtime * 60 %}
{% set current_timestamp = as_timestamp(states('sensor.date_time_iso')) %}
{% if current_timestamp >= target_timestamp_start - 300 and current_timestamp < target_timestamp_start %}
{{ "Startzeit ist in weniger als 5 Minuten erreicht." }}
{% elif current_timestamp >= target_timestamp_start and current_timestamp <= target_timestamp_end %}
{{ "Innerhalb der Aufnahme." }}
{% else %}
{{ "Aufnahme vorbei." }}
{% endif %}
- platform: template
sensors:
recording:
value_template: >-
{% set runtime = 15 %}
{% set target_timestamp_start = as_timestamp("2022-04-04T14:35:00") %}
{% set target_timestamp_end = target_timestamp_start + runtime * 60 %}
{% set current_timestamp = as_timestamp(now()) %}
{% if current_timestamp >= target_timestamp_start and current_timestamp <= target_timestamp_end %}
{{ true }}
{% else %}
{{ false }}
{% endif %}
friendly_name: Aufnahme aktiv
now()
ergibt das aktuelle Datum.Vermutlich an der Stelle, wo auf new_data[1] erstmalig zugegriffen wird, sprich, man müsste vorher abfragen. Soweit ich es reproduzieren kann muss zunächstIch vermute das die Abfrage also schon deutlich früher abgebrochen wird.
state_attr('sensor.rec', 'data')
geprüft werden, weil der Versuch es mit |from_json
zu behandeln schon die Meldung verfälscht (deshalb die temporäre Variable) - kann aber auch sein dass es bei Dir anders aussieht, da der Sensor bei Dir ja vorhanden ist und nur ggf. keine Werte enthält. Bei mir funktioniert es so: - platform: template
sensors:
rec_aktiv:
value_template: >-
{% set temp_data = state_attr('sensor.rec', 'data') %}
{% if temp_data is not none %}
{% set new_data = temp_data|from_json %}
{% set runtime = new_data[1].runtime %}
{% set target_timestamp_start = as_timestamp(new_data[1].airdate) %}
{% set target_timestamp_end = target_timestamp_start + runtime * 60 %}
{% set current_timestamp = as_timestamp(now()) %}
{% if states.sensor.rec >= 1 and current_timestamp >= target_timestamp_start -300 and current_timestamp <= target_timestamp_end %}
{{ true }}
{% else %}
{{ false }}
{% endif %}
{% else %}
{{ false }}
{% endif %}
friendly_name: Aufnahme aktiv
is_defined
oder auf leeren String prüfen. Kannst auch schauen, ob bei Dir die Zwischenspeicherung in der temporären Variable wirklich nötig ist.Na dann sollte man wohl prüfen ob new_data[1] definiert istNa klar data ist ja auch nicht lehr dort steht Standartmässig ja immer was drin.
{% if new_data[1] is defined %}
{% if temp_data[1] is defined %}
{% if temp_data[1] is not none %}
- platform: template
sensors:
rec_aktiv:
value_template: >-
{% set new_data = state_attr('sensor.rec', 'data')|from_json %}
{% if new_data[1] is defined %}
{% set runtime = new_data[1].runtime %}
{% set target_timestamp_start = as_timestamp(new_data[1].airdate) %}
{% set target_timestamp_end = target_timestamp_start + runtime * 60 %}
{% set current_timestamp = as_timestamp(now()) %}
{% if states.sensor.rec >= 1 and current_timestamp >= target_timestamp_start -300 and current_timestamp <= target_timestamp_end %}
{{ true }}
{% else %}
{{ false }}
{% endif %}
{% else %}
{{ false }}
{% endif %}
friendly_name: Aufnahme aktiv