Unterschied template.yaml und Entwicklerwerkzeuge template

RudiP

Well-known member
Ich habe mir einen Code zurecht gebastelt, der mir die Zeit in Stunden und Minuten anzeigt, bis der Batteriespeicher beim aktuellen Ladestand und der aktuellen Ladeleistung anzeigt.
Code:
{{ '%02d:%02d' % ((1600 - states('sensor.solarbank_2_e1600_pro_akkuenergie')|int) / states('sensor.solarbank_2_e1600_pro_solarleistung')|int , ((1600 - states('sensor.solarbank_2_e1600_pro_akkuenergie')|int) / states('sensor.solarbank_2_e1600_pro_solarleistung')|int) % 1 * 60) }}

Läuft in den Entwicklerwerkzeugen -> Template perfekt.
Dann habe ich es in die template.yaml übernommen.
Code:
  - sensor:
    - name: "Zeit bis Akku geladen"
      unique_id: "time_to_full"
      #unit_of_measurement: "hh:mm"
      state_class: "measurement"
      state: |
        {{ '%02d:%02d' % ((1600 - states('sensor.solarbank_2_e1600_pro_akkuenergie')|float) / states('sensor.solarbank_2_e1600_pro_solarleistung')|float , ((1600 - states('sensor.solarbank_2_e1600_pro_akkuenergie')|float) / states('sensor.solarbank_2_e1600_pro_solarleistung')|float) % 1 * 60) }}

Da zeigt er mir beim abfragen der Entität aber nur "Nicht verfügbar" an.

Selbst wenn ich die Zeile so modifiziere
Code:
{{ '%02d:%02d' % ((1600 - 1000 | int) / 500 | int , ((1600 - 1000 | int) / 500 |int) % 1 * 60) }}
läuft es bei den Entwicklerwerkzeugen, in der template.yaml aber weiterhin "Nicht verfügbar"

Jemand ne Idee, woran das liegen könnte ?
 
Welche Art Sensor ist es denn? Wenn ich es unter platform: template erstelle und state entsprechend umschreibe in value_template funktioniert es mit der Zeile mit den Zahlen im Klartext problemlos, wobei ich state_class dabei jetzt natürlich weglassen musste.
 
Welche Art ? Hmmm. Integer
Aber warum kommen die Entwicklerwerzeuge damit klar und die template.yaml nicht ? Ist doch exakt der selbe Code.

Wenn ich state in value_template ändere, motzt HA sofort. Ihm fehlt dann das state.

Logger: homeassistant.config
Quelle: config.py:592
Erstmals aufgetreten: 12:53:47 (1 Vorkommnisse)
Zuletzt protokolliert: 12:53:47

Invalid config for 'template' at template.yaml, line 5: 'value_template' is an invalid option for 'template', check: sensor->0->value_template

Sieht bei mir so aus.
Code:
  - sensor:
    - name: "Zeit bis Akku geladen"
      unique_id: "time_to_full"
      value_template: |
        {{ '%02d:%02d' % ((1600 - 1000 | int) / 500 | int , ((1600 - 1000 | int) / 500 |int) % 1 * 60) }}
 
Aber warum kommen die Entwicklerwerzeuge damit klar und die template.yaml nicht ? Ist doch exakt der selbe Code.
Das Problem sollte in den Deklarationszeilen liegen, die Entwicklungswerkzeuge überprüfen nur den Code ohne die Deklaration.
villeicht so
state: >

Ist die unique_id bereits vorhanden?
 
state: > oder state: | macht keinerlei Unterschied.
und nein, unique_id ist nicht zweimal vorhanden. Wenn ich da eine Berechnung ohne das '%02d:%02d' % davor eingebe, zeigt er mir auch das Ergebnis an. Nur halt als Dezimalzahl.

Hab im Internet auch das hier gefunden und getestet:
Code:
  - sensor:
    - name: "Zeit bis Akku geladen"
      unique_id: "time_to_full"
      state_class: measurement
      state: >
        {{ 630 | timestamp_custom('%M:%S', false) }}
Leider selber Fehler.
 
Ok, habs hinbekommen mit einem anderen Beispiel aus dem Internet.

Code:
  - sensors:
      time_to_full:
        value_template: >-
          {% set s = ((1600 - states('sensor.solarbank_2_e1600_pro_akkuenergie')|int) / (states('sensor.solarbank_2_e1600_pro_solarleistung')|int) * 3600 - (60*60)) %}
          {{ s | timestamp_custom("%H:%M") }}

Erklärung: 1600 ist die Kapazität meiner Speicherbatterie. davon abgezogen die aktuelle Energie in der Speicherbatterie ergibt, wie viel Watt noch rein müssen, bis es voll ist.
Dieser Wert geteilt durch die aktuelle Leistung der Solarmodule ergibt eine Dezimalzahl in Stunden und Minuten (auch Sekunden, aber die sind mir mal egal)
Das (-60*60) ist Notwendig, weil sonst immer eine Stunde zuviel angezeigt wird.
Aktuell ist der Akku mit 720 Wh geladen und 144 Watt kommen von der PV.
1600 - 720 = 880 / 144 = 6,11111111
Also 6 Stunden und (dezimal) 111111 Minuten.
Umgerechnet in Zeit sind das dann 06:06 Stunden.
Perfekt, so habe ich mir das vorgestellt.
 

Zurzeit aktive Besucher

Letzte Anleitungen

Statistik des Forums

Themen
6.939
Beiträge
67.400
Mitglieder
7.318
Neuestes Mitglied
marcfritz
Zurück
Oben