Moin,
kannst ja mal berichten ob dein Sensor funktioniert.
Muss es denn in % sein? Du kannst bei der Sonnen Integration den Sensor für die Elevation Aktivieren dort wird es in ° angezeigt.
Bei der Zeitdauer wird der Sonnenaufgang vom Folgetag für die Berechnung verwendet.
Habe mir gestern Abend aber noch einen Weiteren Sensor geschrieben : den Tageslicht in Prozent und der funktioniert.
daylight_percent:
friendly_name: "Tageslicht in Prozent"
value_template: >-
{% set start = states('sensor.sonnenaufgang_xxx') | as_datetime %}
{% set end = states('sensor.sonnenuntergang_xxx') | as_datetime %}
{% set now = now() %}
{% set total_seconds = (end - start).total_seconds() %}
{% set seconds_elapsed = (now - start).total_seconds() %}
{{ ((seconds_elapsed / total_seconds) * 100) | round(1) }}
unit_of_measurement: "%"
Jetzt habe ich Ihn noch erweitert , so das er eigentlich nur bis 100 % kommt und er soll morgens erst auf 0 % springen.
mal schauen ob das funktioniert.
daylight_percent:
friendly_name: "Tageslicht in Prozent"
value_template: >-
{% set start = states('sensor.sonnenaufgang_xxx') | as_datetime %}
{% set end = states('sensor.sonnenuntergang_xxx') | as_datetime %}
{% set now = now() %}
{% set total_seconds = (end - start).total_seconds() %}
{% set seconds_elapsed = (now - start).total_seconds() %}
{% set percentage = ((seconds_elapsed / total_seconds) * 100) %}
{% set adjusted_percentage = 100 if percentage >= 100 else percentage %}
{{ adjusted_percentage | round(1) }}
unit_of_measurement: "%"
´´´
oder so (mal kurz im TemplateEditor reingehackt) einfach reinpasten und schauen ob es das tut was es soll. Also die Werte die da rauskommen, ist jetzt kein fertiger sensor
{% set r = as_timestamp(state_attr('sun.sun','next_rising')) %}
{% set s = as_timestamp(state_attr('sun.sun','next_setting')) %}
{% if r > s %}
{% set r = r - 60*60*24 %}
{% endif %}
{% set d = s - r %}
{% set n = 60*60*24 - d %}
1 Kalendertag (100%) ist {{ 60*60*24 }} s
davon ist der Tag {{ (d)|timestamp_custom('%H:%M:%S',false) }} also {{d}} s
und die Nacht {{ (n)|timestamp_custom('%H:%M:%S',false) }} also {{n}} s
macht dann in Prozent
Tag {{ 100 / ( 60*60*24 ) * d }} %
Nacht {{ 100 / ( 60*60*24 ) * n }} %
Habe nun noch ein paar Anpassungen gemacht und stelle diese für Euch rein.
Tageslicht in Prozent wurde angepasst :
daylight_percent:
friendly_name: "Tageslicht in Prozent"
value_template: >-
{% set start = states('sensor.sonnenaufgang_xxx') | as_datetime %}
{% set end = states('sensor.sonnenuntergang_xxx') | as_datetime %}
{% set now = now() %}
{% set total_seconds = (end - start).total_seconds() %}
{% set seconds_elapsed = (now - start).total_seconds() %}
{% set sunrise_time = states('sensor.sonnenaufgang_xxx') | as_datetime %}
{% set sunset_time = states('sensor.sonnenuntergang_xxx') | as_datetime %}
{% if now < sunrise_time %}
{% set adjusted_percentage = 100 %}
{% elif now > sunset_time %}
{% set adjusted_percentage = 100 %}
{% else %}
{% set percentage = ((seconds_elapsed / total_seconds) * 100) %}
{% set adjusted_percentage = 100 if percentage < 10 else percentage %}
{% endif %}
{{ adjusted_percentage | round(1) }}
unit_of_measurement: "%"
So habe ich immer nach Sonnenuntergang und vor Sonnenaufgang 100 %
Bei Sonnenaufgang springt der Wert erst um wenn 10% erreicht wird.
Das habe ich gemacht weil mein Batteriespeicher nicht unter 10 % entladen wird und sonst Automatisierungen anlaufen würden.
#
#Kennlinie
#
remaining_battery_percent:
friendly_name: 'Kennlinie in %'
value_template: >
{% set battery_state = states('sensor.scb_battery_soc') %}
{% set sunset_percent = states('sensor.daylight_percent') %}
{% if battery_state != 'unknown' and battery_state | float >= 0 and sunset_percent %}
{{ battery_state | float - sunset_percent | float | round(1) }}
{% else %}
0
{% endif %}
unit_of_measurement: "%"
Hier auch noch einmal die weitere Verwertung .
" Ich hoffe jetzt läuft alles, ansonsten werde ich berichten. "
Vielleicht kann ein Anderer von Euch das ganze auch so oder ähnlich gebrauchen.