FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: andies am 26 August 2018, 09:11:25

Titel: Zeitdifferenz wird umständlich berechnet
Beitrag von: andies am 26 August 2018, 09:11:25
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.)
Titel: Antw:Zeitdifferenz wird umständlich berechnet
Beitrag von: thgorjup am 26 August 2018, 09:57:02
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
Titel: Antw:Zeitdifferenz wird umständlich berechnet
Beitrag von: andies am 26 August 2018, 10:01:10
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)
Titel: Antw:Zeitdifferenz wird umständlich berechnet
Beitrag von: thgorjup am 26 August 2018, 10:23:43
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
Titel: Antw:Zeitdifferenz wird umständlich berechnet
Beitrag von: andies am 26 August 2018, 10:25:25
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
Titel: Antw:Zeitdifferenz wird umständlich berechnet
Beitrag von: Otto123 am 26 August 2018, 10:41:17
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
Titel: Antw:Zeitdifferenz wird umständlich berechnet
Beitrag von: andies am 26 August 2018, 10:57:09
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)
Titel: Antw:Zeitdifferenz wird umständlich berechnet
Beitrag von: CoolTux am 26 August 2018, 10:59:06
Deswegen zieht man ja auch 5 Minuten ab. Wäre dann also -300
Titel: Antw:Zeitdifferenz wird umständlich berechnet
Beitrag von: andies am 26 August 2018, 11:00:42
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.
Titel: Antw:Zeitdifferenz wird umständlich berechnet
Beitrag von: CoolTux am 26 August 2018, 11:03:27
Naja die ganze Diskussion wegen 5 min Sonne ist schon Popcorn. Aber okay.
Titel: Antw:Zeitdifferenz wird umständlich berechnet
Beitrag von: Otto123 am 26 August 2018, 11:14:09
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  ;)
Titel: Antw:Zeitdifferenz wird umständlich berechnet
Beitrag von: andies am 26 August 2018, 11:16:17
Ich wollte halt dafür sorgen, dass in dem Land da unten möglichst viele FHEM nutzen. Da müssen aber die Sonnenzeiten stimmen.
Titel: Antw:Zeitdifferenz wird umständlich berechnet
Beitrag von: andies am 26 August 2018, 11:21:16
... Die haben da devices der Form
defmod jerusalem DOIF (sunset()) (set Nahverkehr off)
Titel: Antw:Zeitdifferenz wird umständlich berechnet
Beitrag von: Christoph Morrison am 26 August 2018, 14:10:49
½ OT

Zitat 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) ;-)
Titel: Antw:Zeitdifferenz wird umständlich berechnet
Beitrag von: Prof. Dr. Peter Henning am 26 August 2018, 17:31:13
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
Titel: Antw:Zeitdifferenz wird umständlich berechnet
Beitrag von: andies am 26 August 2018, 20:24:12
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?
Titel: Antw:Zeitdifferenz wird umständlich berechnet
Beitrag von: Prof. Dr. Peter Henning am 26 August 2018, 20:41:27
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