Zeitdifferenz wird umständlich berechnet

Begonnen von andies, 26 August 2018, 09:11:25

Vorheriges Thema - Nächstes Thema

andies

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.)
FHEM 6.1 auf RaspPi3 (Raspbian:  6.1.21-v8+; Perl: v5.32.1)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

thgorjup

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
FHEM auf Ubuntu 18.04LTS, 2x nanoCUL, JeeLink, nanoPIR, MQTT, ESP-Easy, HUE.
Sensoren+Aktoren: HM, IT, Lacrosse, Multitrade-PIR, VU+, Somfy

andies

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) 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
FHEM 6.1 auf RaspPi3 (Raspbian:  6.1.21-v8+; Perl: v5.32.1)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

thgorjup

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
FHEM auf Ubuntu 18.04LTS, 2x nanoCUL, JeeLink, nanoPIR, MQTT, ESP-Easy, HUE.
Sensoren+Aktoren: HM, IT, Lacrosse, Multitrade-PIR, VU+, Somfy

andies

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
FHEM 6.1 auf RaspPi3 (Raspbian:  6.1.21-v8+; Perl: v5.32.1)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

Otto123

#5
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
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

andies

FHEM 6.1 auf RaspPi3 (Raspbian:  6.1.21-v8+; Perl: v5.32.1)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

CoolTux

Deswegen zieht man ja auch 5 Minuten ab. Wäre dann also -300
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

andies

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.
FHEM 6.1 auf RaspPi3 (Raspbian:  6.1.21-v8+; Perl: v5.32.1)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

CoolTux

Naja die ganze Diskussion wegen 5 min Sonne ist schon Popcorn. Aber okay.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Otto123

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  ;)
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

andies

Ich wollte halt dafür sorgen, dass in dem Land da unten möglichst viele FHEM nutzen. Da müssen aber die Sonnenzeiten stimmen.
FHEM 6.1 auf RaspPi3 (Raspbian:  6.1.21-v8+; Perl: v5.32.1)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

andies

... Die haben da devices der Form
defmod jerusalem DOIF (sunset()) (set Nahverkehr off)
FHEM 6.1 auf RaspPi3 (Raspbian:  6.1.21-v8+; Perl: v5.32.1)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

Christoph Morrison

½ 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 ;-)

Prof. Dr. Peter Henning

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