Ich habe eine Frage, die vermutlich in sich nicht ganz konsistent ist. Ich will von einer Sonnenuntergangszeit 10 Minuten abziehen. Da die Sonne in diesen Breitengraden zwischen 15 und 23 Uhr untergeht, dachte ich, dass ich das dazugehörige Datum (also die Tage YYYY-MM-DD) eigentlich ignorieren kann, denn sie sind bei der Sonnenuntergangszeit und den zehn Minuten davor identisch.
Das gelingt mir aber programmiertechnisch nicht, Perl verlangt anscheinend vollständige Konsistenz. Ich muss das Datum immer hinzufügen, um es nachher wegzuwerfen:
userReadings DiffTime {
my $timestamp = POSIX::strftime("%Y-%m-%dT", localtime).ReadingsVal("Astro", "SunSet", "").":00";
my $seconds = time_str2num($timestamp)-10*60;
my $result = POSIX::strftime("%H:%M",localtime($seconds)); return $result;}
Ist diese, in meinen Augen etwas ineffiziente, Programmierung wirklich unumgänglich?
(Zudem: Ein Fehler des obigen Codes ist, dass ich das Datum aus localtime nehme, nicht aber aus Astro. Da dort alle acht Stunden aktualisiert wird, ist das am Ende egal. Aber es wirkt unlogisch.)
Hi Andies,
ich verstehe nicht, warum du es so kompliziert machst. Definiere in der 'fhem.cfg' einfach deinen Standort und arbeite mit 'sunset':
Beispiel Rolladen:
define AT_Rolladen1Down at *{sunset(-600)} set HM_Rolladen1 pct 0
Gruß
Thomas
Das Problem ist: sunset ist ungenau! (Deswegen der ganze Stress.) Wenn Du die Zahlen aus sunset anschaust und mit den Ergebnissen von Astro (https://forum.fhem.de/index.php?topic=73951.0 (https://forum.fhem.de/index.php?topic=73951.0)) vergleichst, siehst Du einen Unterschied von bis zu 5 Minuten. Ich würde also gern sunset mit Hilfe von Astro so verändern, dass die Zahlen passen.
Mir ist das aufgefallen, weil mich ein orthodoxer Jude danach fragte und ich dachte, ich bin mal besonders schlau und zeige ihm, wie das in FHEM geht. Worauf er mir sagte: Du hast da falsche Zahlen...
PS https://forum.fhem.de/index.php/topic,90552.msg830215.html#msg830215 (https://forum.fhem.de/index.php/topic,90552.msg830215.html#msg830215)
Orthodoxer Jude? Wie kann man beides sein, naja egal.
Mit dem Datum kann ich dir leider nicht helfen aber noch ein Tipp. Schau dir mal den HM-Sen-MDIR-O-2 von Homematic an.
Damit kannst du anhand von realen Helligkeitswerte von 0-250 arbeiten. Ein Wert von 50 wäre z.B. ein Schaltwert für Rolladen auf/ab.
Gruß
Thomas
Zitat von: thgorjup am 26 August 2018, 10:23:43
Orthodoxer Jude? Wie kann man beides sein, naja.
Einer, der nach Shabbat nix mehr mit Elektrizität anfasst.
Gesendet von iPad mit Tapatalk Pro
Ich weiß nicht wie groß man das philosophische Problem machen kann, aber dein dann wieder sehr profane Ansatz
ZitatIch will von einer Sonnenuntergangszeit 10 Minuten abziehen.
Geht doch im Modul selbst?
ZitatThe first specifies an offset (in seconds), which will be added to the event.
Also sunset(-600) ;D
Ansonsten ist deine Methode oben sicher die richtige, man muss ja immer Bezug zu einem "Zeitpunkt null" schaffen und von dort wird die Zeit in sekunden oder millisekunden gezählt.
Und wenn Du in den hohen Norden umziehst wo Du den Tageswechsel berücksichtigen musst .... ;D
Gruß Otto
Zitat von: Otto123 am 26 August 2018, 10:41:17
Also sunset(-600) ;D
Klar: Nur ist sunset falsch! Um etwa fünf Minuten...
https://forum.fhem.de/index.php/topic,90552.msg830215.html#msg830215 (https://forum.fhem.de/index.php/topic,90552.msg830215.html#msg830215)
Deswegen zieht man ja auch 5 Minuten ab. Wäre dann also -300
Blöderweise ändert sich die Zeit, um die das falsch ist, täglich. Ich müsste also zuerst die richtige Zeit ausrechnen, dann die Differenz zur falschen Zeit von sunset und dann sunset($Differenz) aufrufen.
Da packt doch betateilchen wieder sein Popcorn aus.
Naja die ganze Diskussion wegen 5 min Sonne ist schon Popcorn. Aber okay.
Wenn ich dem Internet glauben sollte
20:10
Sonntag, 26. August 2018 (MESZ)
Sonnenuntergang in Leipzig
sunset("REAL") liefert 20:06:12 - wären es bei mir 4 min.
... Da ich momentan im 1 OG sitze und Häuser am Horizont stehen ;D
Wenn davon orthodoxer Glaube abhängt - ist mir wieder klar warum ich ungläubig bin ;)
Ich wollte halt dafür sorgen, dass in dem Land da unten möglichst viele FHEM nutzen. Da müssen aber die Sonnenzeiten stimmen.
... Die haben da devices der Form
defmod jerusalem DOIF (sunset()) (set Nahverkehr off)
½ OTZitat von: thgorjup am 26 August 2018, 10:23:43
Orthodoxer Jude? Wie kann man beides sein, naja egal.
Es gibt im Judentum, genau wie im Christentum und in jeder größeren Religion, verschiedene Strömungen / Subgruppen. Im Judentum gibt es im Rabbinerjudentum (das ist ein Unterzweig) vier weitere Unterzweige: Reformjuden, (Ultra-)Orthodoxe, Konservative und Rekonstruktionisten. Wichtiges Merkmal aller Gruppe ist aber die (unterschiedlich strenge) Beachtung des Sabbats (Schabbes), der am Freitag Abend beginnt und Samstag Abend endet - und zwar - historisch - wenn man einen grauen nicht mehr von einem blauen Faden unterscheiden kann. Modern einfach bei Sonnenuntergang. Wenn man nundas Arbeitsverbot am Schabbes achten will, muss man
genau wissen wann der Schabbes beginnt und aufhört im Prinzip auf die Minute genau. Wenn ich mich recht erinnere, ist es nämlich auch nicht ok, wenn man den Schabbes zu früh beginnt oder zu spät aufhört.
Das Verbot ist übrigens ziemlich streng, u.a. ist das Zubereiten (und die Vorbereitung der Zubereitung) von Speisen und alle handwerkliche Betätigung untersagt.
Da kann man als Kathole fast froh sein, wenn man am Sonntag nur zur Kirche muss (http://www.vatican.va/archive/ENG1104/_P4N.HTM) ;-)
Bevor Ihr Euch im Nirvana der Religion verliert:
Zeitberechnung in DOIF geht auch mit den Werten aus Astro. Lediglich
{sunset()}
ersetzen durch
{my $dummy;;Astro_Get($dummy,"dummy","text", "SunSet")}
Also z.B.
define di_light DOIF ([({my $dummy;;Astro_Get($dummy,"dummy","text", "SunSet")}-600)])(set lamp on)
LG
pah
Wow, danke! Und noch eine Frage: Wenn ich
{my $dummy;; $$dummy{'ObsHor'}=-6 ;;Astro_Get($dummy,"dummy","text", "SunSet")}
eingebe, entspricht das dann HORIZON=-6?
Denn dann könnte man ja rudolfkoenig vorschlagen, sein sunset durch Astro zu ersetzen. Oder erzeugt das neue Abhängigkeiten, die er/man nicht will?
Nein, so geht das nicht - $dummy ist ja leer und eben keine Hash-Referenz. Stattdessen einfach das Reading CivilTwilightEvening verwenden.
Oder - bei anderen Horizontwinkeln als -6, -12, -18: Astro-Device definieren und mit CustomTwilightEvening arbeiten.
LG
pah