Hallo zusammen. Mein Home Assistant steuert eine Anlage in den Schweizer Bergen. Gerne würde ich eine Entität 2 Stunden vor Sonnenuntergang schalten.
Im Moment steht aber im Westen ein hoher Berg im Weg, so dass die Entität einen falschen Wert liefert. Zum Beispiel die App “Peakfinder” gäbe den Sonnenuntergang korrekt an. Leider weiss ich nicht wie, die dort berechneten Daten an Home Assistant weiterzugeben. Hat jemand eine Idee?
Ich stehe auf dem Schlauch. Was hat der Berg mit dem Zeitpunkt des Sonnenuntergangs zu tun?
Vielleicht ist der Sonnenstand eher was für dich. Schau dir mal das Video an. Da geht es unter anderem um Azimut und Elevation.
die PV-Anlage hat dann nicht mehr 2 Stunden Sonne, sondern nur noch 10 min
Wenn Du z.B Node Red nimmst, kannst Du das Sunset auswerten und dannach eine Verzögerung einabauen, bis Dein gewünschter Zeitpunkt erreicht ist. Der Node heißt delay. Ansonsten halt den Sonnenstand auswerten.
Außerdem kannst Du sogar in der Funktion sun-event offsets einstellen. Da kannst Du mal probieren ein negatives sunset einzugeben, wenn Du eher schalten willst. Oder Du nutzt die Dämmerungsfunktion. Vorher macht es trotz Berg keinen Sinn die PV- Anlage zu schalten, oder?
Ich muss vielleicht noch beschreiben, was ich bezwecke. Ich habe einen relativ kleinen Elektroboiler. Diesen lade ich, sobald ich Sonne habe. Aber ich lade nicht ganz, bis der Thermostat (61°) ausschaltet, sondern nur bis 57°. Dann möchte ich gegen Abend nochmals nachladen. Im Winter hat sunset -3Stunden gut funktioniert. Jetzt aber ist der Berg im Weg und der “frisst” mir fast 3 Stunden Sonne weg. D.h. sunset - 3h ist die Sonne fast schon hinter dem Berg verschwunden. Sehrwahrscheinlich muss ich irgendetwas basteln mit Monate - Zeit, also Monat 12 → Zeit 15.30, Monat 1 und 11 → 15.50, Monat 2 und 10 → 16.10 etc.Aber auch um dieses umzusetzen, bräuchte ich Hilfe.
Und wenn du die Leistung der PV Anlage für die Automatik verwendest?
Wie willst Du es denn umsetzten. Mit den Automitsierungen von HA oder mit Node Red?
node red kenne ich nicht, so müsste es ein Yaml-Template werden
ist schwierig, müsste ja eine Prognose sein: habe ich noch 20 min 2kW zum voll laden
Stimmt. Schwierig.
An den Tagen wo es nach Prognose noch gut PV Strom geben sollte den Zeitpunkt speichern an dem du keinen mehr hattest. Und daraus errechnen wann es “heute” keinen mehr geben wird.
Problem an der Sache ist dass eine spontane Bewölkung die Ermittlung verfälschen kann … hmm … am Gipfel vom Berg ein kleines Solarpanel befestigen und mit LORA melden dass es dort oben noch Sonne gäbe
und wie krieg ich die Leistung vom Berg?
Ich denke, ich muss es mit einem mehrzeiligen template (siehe oben) machen, aber wie?
- condition: template
value_template: '{{ now().month 11 or now().month =1}}'
time = "15.50"
ist für mich zu hoch
Du könntest dir mit einem Mapping behelfen, z.B
{% set t = {
1: today_at('15:50'),
2: today_at('16:10'),
10: today_at('16:10'),
11: today_at('15:30'),
12: today_at('15:30'),
}.get(now().month, state_attr('sun.sun', 'next_setting')|as_datetime|as_local)
%}
{{ now() >= t }}
Die erste Spalte repräsentiert die fraglichen Monate, die zweite die Uhrzeiten im Datetime-Format.
Der Part get
prüft, ob der aktuelle Monat in der Map definiert ist. Falls ja, wird die zugeordnete Uhrzeit ausgeworfen, falls nein, ein Default-Wert, hier der nächste Sonnenuntergang.
Anschließend wird geprüft, ob die aktuelle Uhrzeit größer-gleich definierte Uhrzeit ist.
Ich stehe hier leider immer noch auf dem Schlauch. Was heißt das denn konkret? Welche Daten spuckt die App aus?
Hallo Kitty
Danke für den Codeschnipsel. Frage: Wie braue ich daraus eine Entität, welche ich zum Triggern verwenden kann, also Beispiel wenn Zeit =Zeit aus Codeschnipsel, dann mache diese Automation (Boiler wieder einschalten).
Noch wegen dem Berg:
sunset gibt ja den Sonnenuntergang bei horizontaler Ebene an (denke ich). Wenn aber ein Berg im Westen steht, ist die Sonne für meine PV früher weg.
Die App sagt mir genau, dass die Sonne 18.20 Uhr niedergeht und Homeassistant 20.34
by HarryP: Zusammenführung Doppelpost (bei Änderungen oder hinzufügen von Inhalten bitte die „Bearbeitungsfunktion“ anstatt „Antworten“ zu nutzen)
Danke!
Ein Template-Sensor, der als Zeithelfer eines Time-Triggers verwendbar ist, könnte so aussehen:
template:
- sensor:
- name: Bypass Sonnenuntergang
device_class: timestamp
state: |
{%- set t = {
1: today_at('15:50'),
2: today_at('16:10'),
10: today_at('16:10'),
11: today_at('15:30'),
12: today_at('15:30'),
4: today_at('12:00'),
}.get(now().month, state_attr('sun.sun', 'next_setting')|as_datetime|as_local)
%}{{ t.isoformat() }}
Die Zeile 4: today_at('12:00'),
hab ich zum Testen verwendet, funzt.
Edit: Nur mal so dahingedacht, ich kenne die örtlichen Gegebenheiten ja nicht… könnte man nicht auch (zusätzlich) einen Lux-Sensor benutzen?
OK, werde das so lösen. Vielen Dank!
eine Frage noch: Ist das +02:00 richtig bei deinem Beispiel
“state: |2025-04-24T12:00:00+02:00”
denn die andern Entitätszustände geben mir +00:00:
next_dawn: 2025-04-25T03:51:03.537771+00:00
by HarryP: Zusammenführung Doppelpost (bei Änderungen oder hinzufügen von Inhalten bitte die „Bearbeitungsfunktion“ anstatt „Antworten“ zu nutzen)
Das liegt an dem von mir verwendeten as_local
, das mir zum Testen in Yaml die meiner Zeitzone entsprechende Uhrzeit anzeigt.
Du kannst es auch weglassen.
|as_datetime
muss jedoch drinbleiben!
Habe noch Mühe mit dem Testen:
- Template erfolgreich in configuration.yaml (in template) eingebunden.
- In Entwickerwerkzeuge, akt. Entitätszustände wird sensor.bypass_sonnenuntergang zwei Stunden früher angezeigt. Also wenn in templates “4: today_at(‘17:30’),” -steht, steht beim Sensor 15.30 (+00.00), jedoch beim Template-Editor richtig (17:30:00+02:00)
- Die Automation läuft leider nicht (beide Zeiten 15 und 17.30 getestet:
alias: Test
`description: ""
triggers:
- trigger: event
event_type: sensor.bypass_sonnenuntergang
conditions: []
actions:
- type: turn_on
device_id: f19513537a7337e1363ac7ce37a2b249
entity_id: bd4cf678ba3f01bab26f03fd8eae835f
domain: light
mode: single
alias: Test
description: "test"
triggers:
- trigger: event
event_type: sensor.bypass_sonnenuntergang
conditions: []
actions:
- type: turn_on
device_id: f19513537a7337e1363ac7ce37a2b249
entity_id: bd4cf678ba3f01bab26f03fd8eae835f
domain: light
mode: single
by HarryP: Zusammenführung Doppelpost (bei Änderungen oder hinzufügen von Inhalten bitte die „Bearbeitungsfunktion“ anstatt „Antworten“ zu nutzen)
Das ist kein Event. Mach es so:
- trigger: time
at: sensor.bypass_sonnenuntergang