FHEM Forum

FHEM => Sonstiges => Thema gestartet von: Tungsten am 21 Januar 2021, 18:21:07

Titel: sunrise liefert falsches Datum
Beitrag von: Tungsten am 21 Januar 2021, 18:21:07
Hallo Zusammen,

hat sich kürzlich etwas bei der Berechnung von sunrise geändert?

Bis vor kurzem hat es wie in der Doku funktioniert, dass sunrise die Zeit vom nächsten Morgen ausgegeben hat.

Heute ist mir aufgefallen sunrise die Uhrzeit mit Datum vom heutigen Tag liefert, obwohl bereits in der Vergangenheit.
Habe vor 2 Tagen updates gemacht..

https://wiki.fhem.de/wiki/SUNRISE_EL

Zitatsunrise / sunset geben die absolute Zeit des nächsten Sonnenauf- bzw. -untergangs zurück, wobei 24 Stunden addiert werden, sofern das entsprechende Ereignis am nächsten Tag stattfindet

([{sunset()}] - [{sunrise()}]

liefert:

timer_01_c01    22.01.2021 17:43:08     2021-01-21 18:02:06
timer_02_c01    22.01.2021 07:46:41     2021-01-21 18:02:06

Das hat bis letzte Woche noch funktioniert. Ich schalte damit eine Lampe zwischen sunset und sunrise.
Geht nun aber nicht mehr da nicht mehr beim Timer2 das morgige Datum steht, sondern das heutige.

Was übersehe ich?
Titel: Antw:sunrise liefert falsches Datum
Beitrag von: Otto123 am 21 Januar 2021, 19:47:14
Hi,

du solltest es nicht vermischen:
1. Was liefert {sunset()} und {sunrise()} (z.B. einfach in der FHEM Kommandozeile)?
2. Was macht DOIF daraus? DOIF zeigt den morgigen Tag - ist meines Wissens schon immer so?

Was meinst Du ist jetzt wirklich falsch? Morgen ist doch der 22. igste?

Gruß Otto
Titel: Antw:sunrise liefert falsches Datum
Beitrag von: Frank_Huber am 21 Januar 2021, 20:28:32
Ja, beim Post war SunSet schon rum, also ist die morgige Zeit drin.
Passt denke ich alles.
Titel: Antw:sunrise liefert falsches Datum
Beitrag von: Tungsten am 22 Januar 2021, 08:32:04
Mist ihr habt natürlich recht. Hatte einen anstrenden Tag und wollte kurz suchen weshalb die Beleuchtung draußen nicht mehr geht.
Bis Freitag lief es tadellos und Samstag habe ich seit einiger Zeit mal wieder FHEM aktualisiert. Seitdem funktioniert das DOIF nicht mehr.
Es sieht alles gut aus und es werden auch Bewegungen des PIR erkannt. Dann viel mir auch dass sunrise und sunset ja beide am nächsten Tag sind,
und somit die Bedingung nicht erfüllt sein kann, dass es nur in der Nacht laufen soll. Ging aber genau so bis Freitag.


([{sunset()}] - [{sunrise()}]
and
[Schlechtwetter:state] eq "off"
and
([PIR.Bewegungsmelder1:state] eq "motion"
or
[PIR.Bewegungsmelder2:state] eq "motion"))

(set HUEGroup3SonoffBasiczbr3 on)

DOELSEIF

([PIR.Bewegungsmelder1:state] eq "nomotion"
and
[PIR.Bewegungsmelder2:state] eq "nomotion")

(set HUEGroup3SonoffBasiczbr3 off)


Stehe gerade auf dem Schlauch....
Titel: Antw:sunrise liefert falsches Datum
Beitrag von: xenos1984 am 22 Januar 2021, 09:02:55
Zu viele eckige Klammern?
[{sunset()} - {sunrise()}]
Oder isday().

Ansonsten: Ein komplettes List vom DOIF hilft mehr.
Titel: Antw:sunrise liefert falsches Datum
Beitrag von: Tungsten am 22 Januar 2021, 09:18:38
Die zusätzlichen eckigen Klammern hatte ich gemacht da ich Perl Warnings hatte.

isday() kenne ich noch nicht. Wie müsste ich das einbauen?

Oder gibt es eine andere Möglichkeit nur bei Dunkelheit/Nacht ein DOIF auszuführen?
Titel: Antw:sunrise liefert falsches Datum
Beitrag von: Frank_Huber am 22 Januar 2021, 09:23:02
Zitat von: Tungsten am 22 Januar 2021, 09:18:38
Die zusätzlichen eckigen Klammern hatte ich gemacht da ich Perl Warnings hatte.
IMHO müssen die sein wegen der indirekten Zeitangabe.
Titel: Antw:sunrise liefert falsches Datum
Beitrag von: Otto123 am 22 Januar 2021, 09:43:15
@Frank Nein, die Konstruktion von xenos1984 ist schon richtig - da müssen keine Klammern sein. Die braucht man wenn man die Werte aus Readings liest.
Interessanterweise werden die timer bei beiden Varianten  (mit und ohne) richtig gesetzt - was dann passiert weiß nur DOIF.

Ich würde das entweder konkreter fassen:
DOIF ([{sunset()}-{sunrise()}] and (Bed1 or Bed2))(Schalte ein) DOELSEIF ([{sunrise()}] or (Bed1 and Bed2))(Schalte aus)
aber eigentlich reicht auch:
DOIF ([{sunset()}-{sunrise()}] and (Bed1 or Bed2))(Schalte ein) DOELSE (Schalte aus)
Da beide Bedingungen in den einzelnen Zweigen aus meiner Sicht die exakte logische Umkehrung sind.
Titel: Antw:sunrise liefert falsches Datum
Beitrag von: bombardi am 05 November 2021, 12:23:41
Ich will das Thema mal wieder auffrischen, auch wenn bei mir nicht das Datum sondern die Uhrzeit falsch ist.
Ich nutze Sunrise_abs und das liefert z.B. heute (05.11.2021) für meine Koordinaten lat=52.3651974,lng=13.3088034 {sunrise_abs()}=06:33:24.
Richtig wäre aber für Großbeeren heute 07:08.

Hat jemand eine Idee woher der Unterschied kommt ?

Gruss
Bombardi
Titel: Antw:sunrise liefert falsches Datum
Beitrag von: Otto123 am 05 November 2021, 12:32:54
Hi,

das liegt an deinem gewünschten (Höhen) Betrachtungswinkel :)
Mal {sunrise_abs("REAL")} probiert?
Zitat Doku / commandref
ZitatSUNRISE_EL geht von einem Höhenwinkel der Sonne bezogen zum Horizont, h, von -6° aus. Dieser Wert bedeutet, dass die Sonne 6° unter dem Horizont steht und Lesen im Freien ohne künstliche Beleuchtung nicht mehr möglich ist
...
altitude
Eine der folgenden Zeichenketten, die unterschiedliche Höhenwinkel h definieren und den Wert von $defaultaltit verändern.
Erlaubte Werte sind:
REAL, h = 0°,
CIVIL, h = -6°,
NAUTIC, h = -12°,
ASTRONOMIC, h = -18°,
oder HORIZON=, gefolgt von einer positiven oder negativen Zahl ohn Gradzeichen, die einen Höhenwinkel angibt.
...
Beispiele
sunrise("CIVIL");
Zeitpunkt des Sonnenaufgangs bei einem Höhenwinkel der Sonne von -6° unter dem Horizont (identisch zu sunrise()).

Gruß Otto
Titel: Antw:sunrise liefert falsches Datum
Beitrag von: rudolfkoenig am 05 November 2021, 12:44:25
Oder auch: wann ist jetzt aber "wirklich" hell?
Titel: Antw:sunrise liefert falsches Datum
Beitrag von: bombardi am 05 November 2021, 13:51:14
Zitat von: Otto123 am 05 November 2021, 12:32:54
Hi,

das liegt an deinem gewünschten (Höhen) Betrachtungswinkel :)
Mal {sunrise_abs("REAL")} probiert?
Zitat Doku / commandref
Gruß Otto

Danke, genau das war mein Fehler
Titel: Antw:sunrise liefert falsches Datum
Beitrag von: hobu am 11 Februar 2022, 08:05:29
Für heute liefert mir ein
{sunrise()}
in der Eingabezeile als Ausgabe:
31:08:28

Das sieht weder nach Uhrzeit noch Stunden bis zum nächsten Sonnenaufgang aus.
sunrise_abs gibt 07:10 aus, was auch passt.

Wird mit sunrise() nicht die Uhrzeit des nächsten Sonnenaufgangs ausgegeben?
Titel: Antw:sunrise liefert falsches Datum
Beitrag von: Otto123 am 11 Februar 2022, 09:03:48
es hängt davon ab ...  ::)
help sunrise_el
liefert die genaue Beschreibung  ;)
Zitatsunrise() - absolute Zeit des nächsten Sonnenaufgangs (+ 24 h, wenn am nächsten Tag)
Titel: Antw:sunrise liefert falsches Datum
Beitrag von: hobu am 11 Februar 2022, 18:00:27
Das ist dann aber der übernächste Sonnenaufgang. ;-)
Die Abfrage war nach 08:00 und somit nach Sonnenaufgang.
Der *nächste* Sonnenaufgang ist somit in <24h.
Ich versteh nicht , warum da eine relative Zeit von >+30h berechnet wird.
Titel: Antw:sunrise liefert falsches Datum
Beitrag von: Otto123 am 11 Februar 2022, 18:26:38
weil 31:08:28 - 24:00:00 ergibt 07:08:28
Ich versteh nicht , warum da eine relative Zeit von >+30h berechnet wird.wer hat was von relativ gesagt? Die absolute Zeit des Sonnenaufganges + 24 h ::)
Zitat(+ 24 h, wenn am nächsten Tag)

Glaub mir FHEM (speziell ein at ) kommt damit klar. Probier doch einfach ein Beispiel aus der Hilfe und schau in das Gerät in die Internals. Wenn Du etwas hier suchst findest Du auch bessere Erklärungen als meine.Danke Rudi für die Erklärung :)

Wenn Du selbst wissen willst wann der Sonnenaufgang heute war, kannst Du abs nehmen
Wenn Du wissen willst wann die Sonne an einem bestimmten Tag aufgeht:
Zitatsunrise_abs_dat() - absolute Zeit des entsprechenden Sonnenaufgangs an einem bestimmten Tag
Titel: Antw:sunrise liefert falsches Datum
Beitrag von: rudolfkoenig am 11 Februar 2022, 18:28:33
ZitatIch versteh nicht , warum da eine relative Zeit von >+30h berechnet wird.
sunrise() habe ich urspruenglich fuer at benoetigt: "define a at *{sunrise()} set rollladen on"

Wir haben "normal" angefangen: die erste Version hat die absolute Uhrzeit zurueckgeliefert.
Ein wiederkehrendes at berechnet die naechste Ausfuehrungszeit nachdem der Befehl ausgefuehrt wurde.
Das hat sich mit dem "einfachen" sunrise() im Herbst als nicht optimal herausgestellt: da wird innerhalb von paar Sekunden "set rollladen on" zweimal ausgefuehrt, was beim FS20 zum Stehenbleiben der Rollladen fuehrt: sie wurden kaum bis leicht geoeffnet. Das gleiche Spiel gibts mit sunset() in der Fruehling, da blieben die Rolllaeden offen.

Seitdem liefert sunrise, wenn nach dem heutigen sunrise-Zeit aufgerufen wird, die Zeit des naechsten Sonnenaufgangs + 24 Stunden.
At erkennt das, und berechnet die richtige Zeit.

Fuer die nicht so kompliziert denkenden wurde sunrise_abs und sunrise_rel angelegt :)

Titel: Antw:sunrise liefert falsches Datum
Beitrag von: hobu am 12 Februar 2022, 13:13:12
Nun ist alles klarer.
Danke für eure schnellen und ausführlichen Erklärungen.