Sunrise/Sunset Definitionen

Begonnen von stobor, 02 November 2013, 20:15:47

Vorheriges Thema - Nächstes Thema

moonsorrox

Jetzt bin ich verwirrt... dachte das die Attribute richtig, dann doch nicht... jetzt doch wieder... Egal die lasse ich erst mal weg kann ich danach immer noch probieren.
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

Puschel74

Hallo,

um die Verwirrung hoffentlich etwas zu lösen.

Code von moonsorrox

define AussenLampeEin at *{sunset("HORIZON=-0.833",0,"16:00","22:00")} set AussenLampe on ;; define Lampe_spaeter_aus at +05:00:00 set AussenLampe off

attr AussenLampeAus alias Beleuchtung 3x LED Aus
attr Lampe_spaeter_aus alias Beleuchtung 3x LED Aus
attr AussenLampeAus group Zeiten
attr Lampe_spaeter_aus group Zeiten
attr AussenLampeAus room 2_Licht Eingang
attr Lampe_spaeter_aus 2_Licht Eingang


kann nicht funktionieren da
a) nirgendwo eine
ZitatAussenLampeAus
definiert wurde (in der gesamten Zeile kommt AusenLampeAus nicht ein einziges mal vor und
b)
ZitatLampe_spaeter_aus
erst erstellt wird wenn AussenLampeEin abgearbeitet wird.

Da also beide Definitionen (noch) nicht in FHEM existieren kommt es zu deiner Fehlermeldung.

Beispiel von mir wie es klappt:
*02:00:00 {
if ($we) {
    fhem("define OG_Zimmer_Rollo_hoch at {sunrise(1800,'08:00','09:00')} set OG_Zimmer_Rollo off");
    fhem("attr OG_Zimmer_Rollo_hoch room 32_Rollo");
    fhem("define OG_Zimmer_Rollo_runter at {sunset(-1800,'16:00','20:15')} set OG_Zimmer_Rollo on");
    fhem("attr OG_Zimmer_Rollo_runter room 32_Rollo");
  }
  if (!$we) {
    fhem("define OG_Zimmer_Rollo_hoch at {sunrise(1800,'07:00','09:00')} set OG_Zimmer_Rollo off");
    fhem("attr OG_Zimmer_Rollo_hoch room 32_Rollo");
    fhem("define OG_Zimmer_Rollo_runter at {sunset(-1800,'16:00','20:00')} set OG_Zimmer_Rollo on");
    fhem("attr OG_Zimmer_Rollo_runter room 32_Rollo");
  }
}

Um 2 Uhr wird geprüft ob Wochenende ist oder nicht und entsprechend die Defines für OG_Zimmer_Rollo_hoch und OG_Zimmer_Rollo_runter erzeugt.
Da nun das Define existiert kann ich diesem auch ein Attribut zuweisen.

Oder, Zrrronggg! hatte schon auch recht, ich kann nur etwas ein Attribut zuweisen das ich in FHEM auch sehen kann.
Jeder Code wird grundsätzlich erstmal im Raum Unsorted aufgelistet.
Sobald er dort erscheint kann ich ihn in einen anderen Raum verschieben - ihm das Attribut room zuweisen.

Was bei dir eventuell klappen würde wäre folgendes:
define AussenLampeEin at *{sunset("HORIZON=-0.833",0,"16:00","22:00")} set AussenLampe on ;; define Lampe_spaeter_aus at +05:00:00 set AussenLampe off;; attr Lampe_spaeter_aus room 2_Licht Eingang
Wobei ich mir nicht sicher bin ob das Leerzeichen zwischen 2_Licht und Eingang dem nicht ein Schnippchen schlagen dürfte.
Besser wäre es den Raum 2_Licht_Eingang zu nennen.

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Zrrronggg!

define AussenLampeEin at *{sunset("HORIZON=-0.833",0,"16:00","22:00")} set AussenLampe on ;; define Lampe_spaeter_aus at +05:00:00 set AussenLampe off;; attr Lampe_spaeter_aus room 2_Licht Eingang

Also bei mir haben Räume mit Leerzeichen nicht geklappt.

Ich bin mir auch nicht sicher, worum es hier geht.  Wenn's nur um Kontrolle geht, dass Lampe_spaeter_aus auch angelegt wurde: Das sähe man ja in "everything". Ich kann mir nur schwer vorstellen, dass man jeden Tag kontrollieren will, wann die Lampe genau ausgeht um überrascht festzustellen, dass es heute 3 Minuten früher oder später als gestern sein wird. Ausserdem ist meiner Erfahrung anch der WAF schlecht, wenn in einem Raum bestimmte  Angaben mal zu sehen sind und mal nicht. Im Vorliegenden Fall würde sich ja die Anzeige des Raumes "2_Licht_Eingang" 2x am Tag ändern.

Also moonsorrox, worum gehts dir? Gelegentlich mal kontrollieren können, wann die Lampe ausgeht? Dann einfach in "everything" nachsehen, fertig.
FHEM auf Linkstation Mini, CUL 868 SlowRF, 2xCUL 868 RFR, CUL 433 für IT, 2xHMLAN-Configurator mit VCCU, ITV-100 Repeater, Sender und Aktoren von FHT, FS20, S300, HM, IT, RSL

moonsorrox

#48
@Zrrronggg
also erst einmal vielen Dank für deine Bemühungen, mir zu helfen, deine Fragen beantworte ich jetzt mal und hoffentlich eindeutig..

Also mit den Räumen und den Leerzeichen hat bei mir bisher geklappt. Ich zeige das auch mal an einem Bild und funktioniert hat es. Aber zu meiner Entschuldigung ich wusste nicht das dies mit den Leerzeichen Probleme machen kann...!

Jetzt sieht es so aus und ja es funktioniert so: Zeiten sind momentan aus meinem letzten Test, hatte die auschaltzeit auf 5min gesetzt zum probieren
define AussenLampeEin at *{sunset("HORIZON=-0.833",0,"18:25","22:00")} set AussenLampe on ;; define Lampe_spaeter_aus at +00:05:00 set AussenLampe off ;; attr Lampe_spaeter_aus room 2_Licht Eingang
attr AussenLampeEin room 2_Licht Eingang
attr AussenLampeEin alias Beleuchtung 3x LED An
attr AussenLampeEin group Zeiten

so sieht es in der Weboberfläche aus: Bild1

Es geht eigentlich nicht um die Kontrolle, sondern mehr darum, dass ich dachte wenn keine Zeit angezeigt wird, dass irgend etwas in meinem Code falsch ist, egal ob nun in meinem definierten Raum oder in Unsorted oder auch Everything.
Ich dachte weiterhin das die Anzeige auch eine Kontrolle ist, dies war also ein Trugschluss meinerseits. Deshalb hatte ich auch angenommen es geht nicht.
Es geht mir also nicht um das kontrollieren, obwohl ich eingestehen muss das ich es noch öfter kontrolliere - Grund dafür ist ein defekter Switch der mich einiges an Nerven gekostet hat, den ich aber schon zurück geschickt habe.

Ansonsten geht es mir nur um die variable Ein/Ausschaltung der Lampen es sollte eben nicht jeden Tag der selbe Ausschaltzeitpunkt sein also so bis er die definierten Zeiten "Nicht vor" und "Nicht nach" erreicht hat.
Der Einschaltpunkt ändert sich ja mit Sunset und das wollte ich auch mit der Ausschaltzeit erreichen

Hoffentlich ist es verständlich erklärt ;)
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

Hakter51

Hallo,

Hat schonmal einer eine Funktion die Sonnenwende/Mittag ausgibt Programmiert.

Ich hatte gedacht das ich wie folgt Mittag mit Loggen könnte. Falsch gedacht.

#define Sonnemittag1 at *{sunrise(0)+sunset(0)-sunrise(0)} set SonneDA * 100

Hat einer eine Idee?
Pollin AVR-NET-IO mit Ethersex => Ethersex 4 x 1-Wire, 1 x DHT22, 1 x LCD, 1 x ADC (LDR)
Raspberry PI mit FHEM5.6 Phillips Hue, Phillips, PIONEER AVR VSX2021, Eltako Funk  (EnOcean), MAX!, Fritz 546e

Puschel74

Hallo,

Zitat*{sunrise(0)+sunset(0)-sunrise(0)}

Sonnenaufgang+Sonnenuntergang-Sonnenaufgang = ????
Richtig. Das ergibt Sonnenuntergang.
Logisch weil: 6 + 13 - 6 = (nein keine Fangfrage) 13 ergibt.

Ich bin nur grad am grübeln wieviel sich Mittag täglich von 12:00 Uhr wegbewegt.

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

locodriver

Wie wär's mit:

(SA+SU)/2 ?

Das ergibt (mathematisch) den Durchschnitt - ob das meteorologisch stimmt, weiß ich aber nicht.

Uwe
fhem 6.0 auf Rpi3 Bookworm
HM-LAN-CFG (FW 0.965), HM-MOD-UART, 2x HM-TC-IT-WM-W-EU, 4x HM-Sec-RHS und 3x HM-CC-RT-DN, 6x HM-LC-Bl1-FM mit je 1x Somfy-Motor,
2x HM-LC-SW2-FM für Licht und Lüfter, 2x HM-PB-6-WM55, Alexa, Jeelinkcross, CUL, CUNO2, IR-Blaster

Hakter51

Hallo,
Sorry Stimmt natürlich 7+17-7 Uhr quatsch .


Wollte es auch so schreiben.
#define Sonnemittag1 at *{sunrise(0)+((sunset(0)-sunrise(0))/2)} set SonneDA * 100.

[/size]Beispiel  7  + ((17-7)/2) = 7+5 = 12uhr


Sonnenhöchststand ist leider nicht immer 12 Uhr.[/size][size=78%] [/size][/size][size=78%]z.b. [/size][/size][size=78%] Portugal oder Polen geht die Sonne zu unterschiedlichen Uhrzeiten auf und unter.   Ob es meteorologisch auch der Höchststand ist keine Ahnung. [/size]
[/size]
[/size][size=78%]Aber Puschel hat recht! Einmal für den Standort errechnet kann ich auch z.b. 12 Uhr verwenden.[/size]
[/size]
[/size][size=78%]Mein Problem mit der Rechnung war, dass keine Uhrzeit als Ergebnis heraus kam. [/size]
[/size]
Pollin AVR-NET-IO mit Ethersex => Ethersex 4 x 1-Wire, 1 x DHT22, 1 x LCD, 1 x ADC (LDR)
Raspberry PI mit FHEM5.6 Phillips Hue, Phillips, PIONEER AVR VSX2021, Eltako Funk  (EnOcean), MAX!, Fritz 546e

locodriver

#53
Man kann den "Mittag" auch aus der geogr. Lange ermitteln:

15° entsprechen einer Stunde Differenz. D.h. in Görlitz steht die Sonne um 12 Uhr (MEZ) im Zenit, weil es auf dem 15. Längengrad liegt und dieser die Mitte der MEZ-Zeitzone bildet. Um 13Uhr MEZ steht dann die Sonne in London im Zenit - also nur die geogr. Länge in's Verhältnis zur Zeit setzen!

PS Die Sonne kann natürlich nur zwischen nördlichem und südlichem Wendekreis im Zenit stehen, also ist der höchste Punkt der Tagesbahn der Sonne gemeint.
fhem 6.0 auf Rpi3 Bookworm
HM-LAN-CFG (FW 0.965), HM-MOD-UART, 2x HM-TC-IT-WM-W-EU, 4x HM-Sec-RHS und 3x HM-CC-RT-DN, 6x HM-LC-Bl1-FM mit je 1x Somfy-Motor,
2x HM-LC-SW2-FM für Licht und Lüfter, 2x HM-PB-6-WM55, Alexa, Jeelinkcross, CUL, CUNO2, IR-Blaster

Jippy

Moin zusammen,

ich beschäftige mich seit kurzen mit sunrise/sunset und habe ein paar Verständnisfragen...
Wenn ich ,,sunset_abs" verwende, wird der Befehl 2x kurz hintereinander ausgeführt.
DEF:
*{sunset_abs("CIVIL",+900,"17:45","21:45")} set Rollo_Kueche off

Log:
2020.03.18 19:21:13 5: exec at command Rollo_Kueche_runter
2020.03.18 19:21:13 3: CUL_HM set Rollo_Kueche off
2020.03.18 19:21:13 5: redefine at command Rollo_Kueche_runter as *{sunset_abs("CIVIL",+900,"17:45","21:45")} set Rollo_Kueche off
2020.03.18 19:23:01 5: exec at command Rollo_Kueche_runter
2020.03.18 19:23:01 3: CUL_HM set Rollo_Kueche off
2020.03.18 19:23:01 5: redefine at command Rollo_Kueche_runter as *{sunset_abs("CIVIL",+900,"17:45","21:45")} set Rollo_Kueche off

Mit DEF:
*{sunset("CIVIL",+900,"17:45","21:45")} set Rollo_Kueche off
wird der Befehl nur 1x ausgeführt.

Das mit der doppelten Ausführung aus der oberen DEF liegt wohl daran, dass nach dem ausführen eine Neuberechnung für den eigentlich nächsten Tag erfolgt. In der ersten Jahreshälfte verschiebt sich aber die Sonnenuntergangszeit täglich um ein paar Minuten nach hinten, somit ist die neu berechnete Sonnenuntergangszeit am aktuellen Tag noch nicht erreicht und der Befehl wird ein zweites mal ausgeführt.
Zusammengefasst:
1. Jahreshälfte: ,,sunset_abs" + ,,sunrise"
2. Jahreshälfte: ,,sunset" + ,,sunrise_abs"

Habe ich das so richtig verstanden?
Wenn ja meine Frage, kann man die Neuberechnung irgendwie um z. B. 10 Min. rauszögern oder kann man dafür einen festen Zeitpunkt z. B. 01:00 Uhr festlegen?
Ansonsten müsste man 2x im Jahr die DEF-Einträge anpassen?!


Da ich mehrere Beiträge gelesen habe in den ,,sunrise_rel" favorisiert wurde, wollte ich das auch mal testen. Irgendwie bekomme ich das aber nicht hin...
DEF:
*{sunset_rel("CIVIL",+900,"17:45","21:45")} set Rollo_Kueche off

Unter ,,Readings" – ,,state" wird mir dann die noch verbleibende Zeit bis zur nächsten Ausführung angezeigt (z. B. ,,Next: 09:30:00" wenn es 10:00 Uhr ist und die nächste Schließzeit 19:30 Uhr ist).
Das müsste soweit noch alles richtig sein.
Ich hätte jetzt aber gedacht, dass die ,,Next:" Zeit quasi runter zählt, also das dort noch 08:30:00 steht wenn ich um 11:00 Uhr wieder schaue. Das passiert aber nicht. Nur wenn ich beim DEF ein modify mache, wird die Zeit aktualisiert. Somit fährt dann auch der Rolladen nicht um 19:30 Uhr runter.
Was mache ich hier falsch, muss ich noch zusätzlich etwas definieren?

Über Tipps würde ich mich sehr freuen.

Zrrronggg!

#55
Ich habe jetzt nicht sofort eine Antwort, aber 2 Anmerkungen:

Wenn

{sunset("CIVIL",+900,"17:45","21:45")} set Rollo_Kueche off

geht, und deine Theorie richtig ist, müsste es dann ja MORGEN 2 Schaltungen geben. Hast du das mal probiert?


Ferner: CIVIL ist default, brauchst du als nicht angeben. Schadet natürlich auch nicht. Zu REL kann ich nichts sagen, benutze ich nicht. Ich verwende nur stumpf

{sunset(+X,"xx:yy","zz:ff")} set blubber

und das funktioniert bei mir. Wenn ich es recht überlege, würde ich aber gar nicht so ohne weiteres merken, wenn es eine zweite Schaltung gäbe, da ich nur Licht schalte. Und 2x on oder 2x off macht dann weiter nichts.
FHEM auf Linkstation Mini, CUL 868 SlowRF, 2xCUL 868 RFR, CUL 433 für IT, 2xHMLAN-Configurator mit VCCU, ITV-100 Repeater, Sender und Aktoren von FHT, FS20, S300, HM, IT, RSL

Jippy

Hallo Zrrronggg!,

mit sunset müsste es meiner Meinung nach ab ca. 21 Juni 2 Schaltungen geben, wenn die Tage wieder kürzer werden...

Otto123

Hi,

meines Wissens macht sunrise und sunset doch genau in diesen Fällen (Verwendung im at) das Richtige. Beide Funktionen sind extra dafür gebaut.

Also im at (normale Zeitschaltung) immer sunrise und sunset verwenden. Die anderen Funktionen sind für Spezialfälle.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Prof. Dr. Peter Henning

Und vielleicht nicht den uralten Thread wieder hervorkramen - das verwirrt nur.

LG

pah